- - PR -
Lombozで作成したサーブレットの呼び出し方
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-10-02 11:26
初投稿です。よろしくお願いいたします。
現在以下の環境で、JSPからServletを呼び、適宜処理をしてまたJSPを呼ぶ処理を作成しています。 Windows2000 Tomcat4.1.0 Eclipse2.1.1 | ||||||||
|
投稿日時: 2003-10-02 11:42
すみません、途中で切れました。
Windows2000 Tomcat4.1.0 Eclipse2.1.1 Lomboz2.1.1 Lombozでプロジェクトを作成して、各ファイルを配置したのですが、JSPからServletを呼び出すことができません。JSPからどころか、ブラウザでServletを直に指定しても、404のエラーになってしまいます。 いろいろ調べた結果、こちらのスレッドが近い話題なのではないかと思いました。 Lombozでのクラスパスについて http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=6597&forum=12&2 でも必要なクラスパスは指示されているようですし、私のほうは「クラスがない」のではなく「ファイルがない」状態です。完全にパスを誤っているのだと思います。 実はServletのクラスはユーザから指定されたパッケージの中にあり、非常に構成が深いのです。Eclipseのパッケージエクスプローラーを借りると、このようになっています。この状態でlogin.jspからServlet/Loginを呼び出したいのです。 webProj +src | +a.b.c.d.e.servlet | | +Login.class | | | +webName | +login.jsp | … 実はJavaにもEclipseにもましてやLombozもほとんど未経験なので、私がディレクトリ構成などを把握していないことが一番の原因とは思いますが、この場合にはどのような設定が不可欠のもので、かつどのように呼び出すのが普通なのでしょう。 ヒントだけでもいただけたら、調べるきっかけだけでもいただけたらと思います。よろしくお願いいたします。 | ||||||||
|
投稿日時: 2003-10-02 13:02
こんにちは
サーブレットのクラス群は、ウェブコンテナ名/WEB-INF/classes配下に置かなきゃ だめだったはず? プロジェクトのプロパティJavaのビルドパス設定で デフォルト出力フォルダーがWEB-INF/classesに設定してみてください。 | ||||||||
|
投稿日時: 2003-10-02 13:39
ニシトミさん、返信ありがとうございます。
私の認識ではこれは「普通の場合」でした。なにが普通化というとIDEを使わずに手でゴリゴリと環境構築したような場合です。でもLombozでプロジェクトを作った場合、クラスファイルは/src/binの配下に置かれることが前提になるのではないのでしょうか。 なので先の発言に引用されていた部分↓
にしたがって作成して、確かに長いパッケージ名ごと、クラスファイルは/src/bin配下にできています。たぶんここまではOKだと思うのですが、それをブラウザ上から呼び出すときに、何をどう指定したらよいのかがわかりません。 引き続きのご教授をお願いいたします。 | ||||||||
|
投稿日時: 2003-10-02 14:00
そうだったんですか、記事見てみます
単純に、SKYOOさんの環境を例にすると以下のようなURLで呼び出せませんか? http://hogehogehost/webproj/servlet/a/b/c/d/e/servlet/Login またTomcatなどのお使いのサーバのserver.xmlなどの設定も要確認です。 編集します すみません http://hogehogehost/webproj/servlet/a.b.c.d.e.servlet.Login でしたかね またLombozはserver.xmlを編集してくれないみたいなので 手書きで編集する必要であった気がします [ メッセージ編集済み 編集者: ニシトミ 編集日時 2003-10-02 14:15 ] | ||||||||
|
投稿日時: 2003-10-02 15:31
server.xmlはcontextを追加しています。このようになっています。
<Context path="/webName" docBase="D:\My Documents\eclipse\workspace\webName" workDir="D:\My Documents\eclipse\workspace\webName\work\org\apache\jsp" debug="0" reloadable="true" crossContext="true" /> これはLombozではなく、テストで使ってみたtomcatPluginで追加されたものを模しています。Servletを使わずにJSPだけで遷移していく分には何も問題ないので、ここはこれでよいかと思うのですが、Servletを使う場合に特別に書かなければいけないことなどありましたでしょうか。 なおweb.xmlはいろいろいじったけどお手上げで、今はまっさらの、Lombozが最初に作ってくれるものそのままになっています。 なお http://hogehogehost/webproj/servlet/a/b/c/d/e/servlet/Login および http://hogehogehost/webproj/servlet/a.b.c.d.e.servlet.Login ですが、 おお!「servlet」が2回出てきてる!とちょっとワクワクしたのですが、どちらもダメでした。 私の足りない認識では、後述の形が正しくて、クラスパスに「a.b.c.d.e」まで指定しておけば「http://hogehogehost/webproj/servlet/Login」でアクセスできるのだと思っていたのですが…。 | ||||||||
|
投稿日時: 2003-10-02 15:38
APサーバーはクラスパスの設定を無視しますので、 クラスパスに設定しても無駄です。 上記にあるようにInvokerを使用するなら、特に設定はいりません。 ただし、Tomcat4.xからはInvokerは使用不可に設定されていますので、 Invokerを使用可能に設定する必要があります。 web.xmlのコメントをはずすことでInvokerは使用可能になります。 Invokerの使用はお勧めできませんので、 servletをweb.xmlに登録することをお勧めします。 | ||||||||
|
投稿日時: 2003-10-02 20:02
あれ?それはシステム(マイコンピュータの詳細で見ることができるやつ)に設定したクラスパスを無視してしまうということですか?…ええと、今回の場合はTomcatが。 一応Eclipceで起動したTomcatの「プロセス情報」で、その深いパッケージのディレクトリが物理パスで指定されていることは確認しているのですが、それも実は意味がないということなのでしょうか。 どうもクラスパスは鬼門です。
つい最近、そのような記事を見た記憶があります。この近くだったような気も…。なるほど、そういう関わりがあるのですね。 この現象でさんざ悩んでいて、server.xmlやweb.xmlの書き方などを片っ端から見ていたところでした。なので意味はサッパリわからなかったのですが、記憶に残ったようです。 ありがとうございます。とても参考になりました。今回の環境ではこれらクラスファイルを.warにして使うということになるようなので、その辺も含めてもう一度、設定ファイルを見直してみます。長ったらしいパッケージ名はmappingするでしょう。いえ、mappingの書き方もかなり危ういのですが…。 本当に、まったくわからないまま続ける羽目になっています。どうかまたお知恵をお貸しくださいませ。 | ||||||||
