■■ Servlet/JSP(EJB含む) 質問スレ Part2 ■■

このエントリーをはてなブックマークに追加
886nobodyさん:04/05/20 22:16 ID:???
>>885
お約束なんだろうけれど、tomcat-users.xmlには、

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="manager" password="manager" roles="manager"/>
<user username="admin" password="admin" roles="admin,manager"/>
</tomcat-users>

と追加してあるよ
887nobodyさん:04/05/20 22:22 ID:???
Tomcatの起動時にコンソールに

情報: コンテキスト設定ファイルのURL file:D:\jakarta-tomcat-5.0.24\conf\Catalina\localhost\admin.xml を処理しています

は出てる?
888nobodyさん:04/05/20 22:23 ID:???
すまん、

情報: コンテキスト設定ファイルのURL file:D:\jakarta-tomcat-5.0.24\conf\Catalina\localhost\manager.xml を処理しています

889nobodyさん:04/05/20 22:23 ID:???
ちなみに、俺はDドライブ直下にインストールしてる
890nobodyさん:04/05/20 22:27 ID:???
>>887

2004/05/20 22:23:45 org.apache.catalina.core.StandardHostDeployer install
情報: コンテキスト設定ファイルのURL file:C:\Program Files\Apache Software Founda
tion\Tomcat 5.0\conf\Catalina\localhost\admin.xml を処理しています
2004/05/20 22:23:47 org.apache.catalina.core.StandardHostDeployer install
情報: コンテキスト設定ファイルのURL file:C:\Program Files\Apache Software Founda
tion\Tomcat 5.0\conf\Catalina\localhost\manager.xml を処理しています

きちんと処理をされているよ…。
何なんだろう。Linux側にインストールしたTomcatではTomcat Managerに正常にアクセスできるのに…。
891nobodyさん:04/05/20 23:10 ID:???
あ、exe をインストールしてるのか。。。
127.0.0.1 じゃなくて localhost にしたらどうなる?
exe はデフォルト設定内容が違うかもしれない
892nobodyさん:04/05/20 23:24 ID:lu9i7lbx
サーブレットをコンパイルしたclassを読み込むとブラウザに
<html>
<head>
<title>
hogehoge
</title>
<body>
<h2>test</h2>
</body>
</html>
と表示されてしまいます。
ちゃんと表示するための設定方法を教えて下さい。
893nobodyさん:04/05/21 00:44 ID:KjkiJBqs
JSPでページをRedirectするとき
<jsp:forward ・・・>
を使うと、ページアドレスが変わらずにリダイレクトされるけど
ページアドレスを飛んだ先に変えるタイプのリダイレクトって
JSPであります?
JavaScript、<meta refresh・・・> 以外で。

環境は
Tomcat5
RedHat9
894890:04/05/21 01:54 ID:???
>>891
ちょっとだけ手間が増えるけれど、.zipを展開。
自宅のPCにTomcatを入れて、テストしようとしたら、Tomcat 5.0.25がリリースされていたから
それをzipから展開して、任意のディレクトリへ。
web.xmlを修正して、
http://localhost:8080/manager/html
http://localhost:8080/manager/status
にアクセスして、ログインを確認できた。

.exeでの展開がまずいのか、すぐにマイナーアップデートがかかった5.0.24が悪いのか
わからないけれど、回答してくれて心強かった。
自宅にインストールしたのを機に、ApacheもApache2にし直したよ。
895nobodyさん:04/05/21 02:37 ID:???
うちは5.0.24(zipだけど)で動いてるし、
しかも5.0.25はアルファ版じゃなかった?
でも、5.0.24は緊急パッチがリリースされたよ
セッション管理にバグがあったらしい
896894:04/05/21 03:17 ID:???
>>895
あ、本当だ…。
明日にでも5.0.24のzipを展開して確認してみます。
とりあえず、もう寝ないと…。
897nobodyさん:04/05/21 05:55 ID:???
ちょっと気になって調べたのですが、適当な解答にヒットしなかったので
質問させてください。

JSPで、<jsp:useBean />でBeanを指定する場合、必ずこのJSPにはBean
が引きわたされないといけないでしょうか?

実は同一のJSPファイルでサーブレットからBeanを引渡した場合と引き
わたさない場合で表示内容を切替えたいのですが、<jsp:useBean />を
指定してしまうと(引きわたさない場合)エラーになってしまう為、
こまっています。

こういった場合、request.getAttributeなどをスクリプトレット内部
で利用して、BeanのAttributeがある場合のみ処理をするといった方法
でしか解決はできないでしょうか?
898nobodyさん:04/05/21 09:46 ID:???
>893
response.sendRedirect()
899nobodyさん:04/05/21 12:27 ID:???
>>893
まず、フォワードとリダイレクトの違いを勉強してから出直して下さい。
<jsp:forward ・・ ではリダイレクトしないぞ
900894:04/05/22 11:42 ID:???
zipアーカイブのTomcat 5.0.24を展開して、
web.xmlを修正して、
http://localhost:8080/manager/html
http://localhost:8080/manager/status
にアクセスして、正常にログインを確認できたよ。
結局原因は何だったんだろう…。

起動時に下記の情報を出すけれど大丈夫なのかなぁ?

2004/05/22 11:35:08 org.apache.catalina.core.StandardEngine start
情報: Starting Servlet Engine: Apache Tomcat/5.0.24
2004/05/22 11:35:08 org.apache.catalina.core.StandardHost start
情報: XML検証は無効です

901nobodyさん:04/05/22 11:59 ID:???
>>900
>XML検証は無効です
は、コンテナ起動時にXMLのvalidationを行うかどうかの設定がOFFになってますよ、
というだけ。XMLを検証してNGですた、ではないから安心汁
902nobodyさん:04/05/22 13:03 ID:prWBgoDS
よくある着メロなんかのダウンロードカウンターを
JSPで作ろうとしてるんだけど
誰かこんなの作ったことある?
903900:04/05/22 17:10 ID:???
>>901
了解
904nobodyさん:04/05/22 18:06 ID:7G6pdE8J
tomcatの中にあるweb.xml(DDファイル)について質問です
あれの位置関係ですが
ディレクトリのどこにおかなければいけないというのは決まっているのでしょうか?
それとも設定か何かでDDファイルの格納場所をかえることは可能でしょうか?

またweb.xmlやservlet.xmlという名前は変更は不可なのでしょうか?
905nobodyさん:04/05/22 22:56 ID:???
> tomcatの中にあるweb.xml
tomcat/conf の中にあるやつのこと?場所は動かせないはず。
各アプリの中にあるweb.xmlも動かせない。これはServletの仕様。

> またweb.xmlやservlet.xmlという名前は変更は不可なのでしょうか?
不可。
というか、なぜそんなことをしたいのか激しく謎
906nobodyさん:04/05/23 12:19 ID:gxpa2OE5
質問です。
トムキャットつかって、servlet、jsp、beanのMVCの構成で
コネクション・プーリングを使用するとき、このコードはどこでもつ
べきでしょうか?
beanに持たせるのがオブジェクト指向の観点からよいと思うのですが、
サーブレットが実行されるたびにロードされるだけのような気がして、
そうなるといちいちPoolableObjectFactoryインターフェイスの実装クラス
を生成したりして効果がないのではないかな?と思ったんですけど。
907nobodyさん:04/05/23 13:20 ID:QmMbhRLu
Hibernateとか使えば?
908nobodyさん:04/05/23 13:33 ID:???
>>906
普通はコンテナのDataSourceをJNDI経由で取得するけどな
接続の管理はコンテナにやらせた方が開発側にも運用側にも
メリットが大きい。
909nobodyさん:04/05/23 13:42 ID:???
>>908
じゃぁJNDIを検討してみます。
910nobodyさん:04/05/23 19:57 ID:OKzYro8X
Webアプリケーションの配置ですが
http://fmf.sytes.net/~docs/education/jed31.html
の中にある図の構成じゃないと駄目なんでしょうか?

web.xmlとか他の場所におくことは可能でしょうか?
jspやsrcフォルダの名前を変えたり、場所を変更することって可能でしょうか?
911nobodyさん:04/05/23 20:05 ID:???
                        |
                        |  
      ∩___∩              |  ぷらぷら
      | ノ  _,  ,_ ヽ        ((   |
     /  ●   ● |         (=)
     |    ( _●_)  ミ _ (⌒)    J  ))
    彡、   |∪|  ノ  
⊂⌒ヽ /    ヽノ  ヽ /⌒つ
  \ ヽ  /        ヽ /
   \_,,ノ      |、_ノ
912nobodyさん:04/05/23 20:14 ID:???
> web.xmlとか他の場所におくことは可能でしょうか?
無理。>>905参照。
> jspやsrcフォルダの名前を変えたり、場所を変更することって可能でしょうか?
どうぞご自由に。

数件前のレスも調べられない奴には無理だと思うがw
913nobodyさん:04/05/23 23:22 ID:???
同じことをなぜ二度聞くのだろう。
914nobodyさん:04/05/25 15:49 ID:???
>>904>>910
web.xmlの場所は変えられん。

参考までに、なんだけど、ver4までserver.xmlで記述していた内容の
一部が、META-INF/context.xmlで記述できるようになった。
(ResourceLink等)

俺もまだ使い切ってないのでアレだけど、結構嬉しい変更だね。
ま、ググッてみてくれ。
915nobodyさん:04/05/25 19:53 ID:MF8n1Tko
BMP Entity Beanについて教えてほしいですが、
ejbStoreはどのタイミングで実行されるんでしょうか?

findByPrimaryKey
 ↓
setメソッド
 ↓
???(DBへの反映は何かする?それともほっておく??)

J2EEサーバに依存する話になってくるのでしょうか?
ちょっと調べてトランザクションの開始と終了にejbLoadとejbStoreが実行される
ような事を見たんですけど、どうもejbStoreだけ呼ばれてないような感じがしまして…。
(と言うか、どのようにしたら?どのような状態になったら?実行されるのでしょうか)

お分かりになる方、どうかご教授お願いしますm(__)m


環境
J2SE 1.5 Beta 1
JBOSS 3.2.3
Oracle 8i(細かいバージョンは忘れました…)
916nobodyさん:04/05/25 22:05 ID:???
質問です。
あるページでhttp://hoge/hogepath?order=fooというリンクをもっているボタン
を押した結果、http://hoge/hogepath/some.jspにdだとします(ブラウザにもこの
URLが表示される)。このときバックスペースで前のページに戻り、ブラウザの
進むボタンで再びhttp://hoge/hogepath/some.jspにアクセスするとき、サーバーは
http://hoge/hogepath?order=fooを受け取るのでしょうか?それとも
http://hoge/hogepath/some.jspの直たたきになるのでしょうか
917nobodyさん:04/05/25 22:26 ID:???
>>915
コンテナ依存する。
ejbStore() や ejbLoad() が実行されるタイミングは意識してはいけないことになっている
918nobodyさん:04/05/25 23:22 ID:???
>>917
おぉ、レスありがとうございます。

やはりプログラム側ではどうしようもないんですね…。
(どうにか出来るがしちゃいけないんですね)
setメソッドを呼び出した後10分ほど放置してもejbStoreが走らないし、
JBOSS終了時も走らない…。
DBへの更新ができないなぁと悩んでたんですが、
もうちょいJBOSS+EJBの仕様を調べてみます。
919nobodyさん:04/05/25 23:27 ID:???
>>916
直たたきになるのかな

遷移先でgetParameterなどしてるとリクエストが飛んでこないのでnullになるはずですよ
920nobodyさん:04/05/26 12:33 ID:???
>919 ( ゚д゚)?
921nobodyさん:04/05/27 18:31 ID:???
Tomcatの4.1.24を使っています。
クラスなどを更新して自動再ロードしたら、
セッションオブジェクトなどがちゃんとそのまま使えるが、リロードする前にServletContext
にセットした値がリセットされるようです。
WebApp共通のパラメータ(例えばこの機能を使ってるユーザー数など)を格納できず悩んでます
質問は、
1、ServletContextのデータがリロードされないのは仕様ですか?
2、例えば同じ機能を使用するユーザーを制限する機能を実装するときに、
そのユーザー数をどこに格納すればいいでしょうか?まあリロードしなければ問題ないが、、、
よろしくお願いします。
922nobodyさん:04/05/30 22:38 ID:WZ5KWoMd
文字化けで質問です。Tomcat4.30とStrutsを仕様いています。
http;//localhost:8080/test.do?param1=1111¶m2=岐阜県
というURIを、HttpRequestのgetParameterValues(param2);で受け取ると、
岐?E?
というふうに文字化けしてしまいます。

何を調査すればいいでしょうか?
923nobodyさん:04/05/30 22:43 ID:eCTAzsCD
質問させてください。
Tomcat3.X系で動いていたプログラムを4.1.30で動かそうとしているんですが、
JSPの表示でエラーが出ます。
index.html → Loger2Serv(Loger2Beanにデータを格納) → set.jsp の順番でアクセスしています。

<%@ page import="Loger2Bean" contentType="text/html; charset=Shift_JIS" %>
<jsp:useBean id="lb" class="Loger2Bean" scope="session"></jsp:useBean>

上記の部分のpage import="Loger2Bean" ... の部分でエラーが出ているようですが、原因がわかりません。
PageTypeの指定方法が変わったのでしょうか?
エラーは

生成されたサーブレットのエラーです:
[javac] Compiling 1 source file

D:\ProgramFiles\eclipse\workspace\Loger2S\work\org\apache\jsp\review_jsp.java:7: '.' がありません。
import Loger2Bean;
        ^
と出ています。JSPからLoger2Beanが見えていないのでしょうか?
ファイル配置などは、Eclipseのデフォルトだと思われます。
Loger2
 ├Web-INF
 │  ├classes
 │  │  └Loger2Bean.class/Loger2Serv.class ...
 │  └src
 │    └Loger2Bean.java/Loger2Serv.java
 └set.jsp/index.html
 
対処方法を教えていただきたくレスさせて頂きます。
その他、足りない情報があれば追加します。
よろしくお願い致します。
924nobodyさん:04/05/30 22:54 ID:???
>>922
> 文字化けで質問です。Tomcat4.30とStrutsを仕様いています。
「使用しています」だろ?

> http;//localhost:8080/test.do?param1=1111¶m2=岐阜県
> というURIを、HttpRequestのgetParameterValues(param2);で受け取ると、
> 岐?E?
> というふうに文字化けしてしまいます。
ServletRequestのgetParameterValues() だろ?

String value2 = new String(request.getParameter(param2).getBytes("ISO-8859-1"), "Windows-31J");
でOKなはず。"Windows-31J" のところは、環境に応じてEUC-JPとかShift_JISとか適切な値に変更してくれ。
925922:04/05/30 23:00 ID:WZ5KWoMd
>>924
あちがとうございました。
926922:04/05/30 23:02 ID:WZ5KWoMd
>>924
タイプミスが多くてすいません。
ありがとうございました。
927nobodyさん:04/05/30 23:03 ID:???
>>923
JavaBeansやServletはデフォルトパッケージではなく、
何らかのパッケージに属するようにすれば動くよ。
Tomcat4から、デフォルトパッケージのコンポーネントは
動作しなくなっている。
928nobodyさん:04/05/30 23:04 ID:???
>>926
「仕様ています」のようなタイプミスはまあいいが、
クラスやインタフェース名を間違えるのは気をつけれ。
929nobodyさん:04/05/30 23:34 ID:eCTAzsCD
>>927
おぉ〜ありがとうございます。
新たにパッケージに属するようにBeanの方を設定したら、無事動きました。

ありがとうございます。本当に助かりました。
930nobodyさん:04/05/31 11:38 ID:8D/47Lkb
質問です。
Servlet内から相対パスでファイルを呼び出す場合は、どのような記述にすればいいのでしょうか?

TestServletというServletを作成して、TestServlet\WEB-INF\classes\servlet\test.classから
TestServlet\WEB-INF\lib\test.propatiesというファイルを相対パスで読み込みたいのですが、
記述方法がわからず呼び出せません。

web.xmlの初期化パラメータに絶対パスを記述してもいいのですが、プログラム作成機がWinで実行機がLinuxなもので、
いちいち実行機に移すときにweb.xmlを書き換えるのも・・・
931nobodyさん:04/05/31 12:37 ID:???
new File(getServletContext().getRealPath("/"),"WEB-INF/lib/test.properties");
932nobodyさん:04/05/31 12:49 ID:???
>>931
動作確認できました。ありがとうございます
933nobodyさん:04/06/01 00:08 ID:1ZeWDaRJ
>>930
ClassLoader#getResourceAsStream(String)などのメソッドを使ってCLASSPATH中の
ファイルへの入力を開くことができます。なので、Servletのinit(ServletConfig)
メソッドなどで、以下のような処理をするといいかもです。
詳細はjava.lang.ClassLoader#getResourceAsStream(String)参照。

------------------------------------------------------------------------------------
ClassLoader loader = this.getClassLoader();
InputStream is = null;
Properties prop = new Properties();
try {
is = loader.getResourceAsStream("test.properties");
if ( is == null ) throw new ServletException("ERROR!!");
prop.load(is);
}catch ( IOException e ) {
throw new ServletException("設定ファイルの読み込み中にエラーが発生しました。", e);
}
------------------------------------------------------------------------------------
934nobodyさん:04/06/01 02:20 ID:9Mqad65F
Tomcatのセッティングよくわからなくて、適当に遊んでいた。
そして、マネージャーで配置削除を押した。
その瞬間80Gにも及ぶ俺が今まで、Winnyなどでためたお宝ファイルが一瞬にして消えた。
復帰ソフトを使ってもほとんど無理だった。
トホホ…
935nobodyさん
>>934
なぜに、そんなところにお宝ファイルを置いているのやら・・・