- - PR -
Tomcatからpackage名のついたServletを呼び出せない!
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2002-08-09 22:37
はじめて投稿します。
今、Windows 2000 Server+JDK 1.3.1_02+Tomcat 4.0.4でServletのサンプルを作成していますが、 作成したServletがTomcatで動作してくれません。 まず、パッケージ名を持たないServlet(TestServlet.java)をコンパイルして、classを直接 /WEB-INF/classesに置いたら動作しました。 (http://localhost:8080/test/servlet/TestServlet) そこで、今度はこのServletクラスにパッケージ名(test.web)をつけて再度コンパイル&JARして、 jarを/WEB-INF/classesに置いたところ、「404 - The requested resource is not available.」 というエラーがでてしまい、どうもServletが呼び出されてくれないようです。 ちなみに、/WEB-INFには以下のようなweb.xmlを置いています(抜粋)。 <web-app> <servlet> <servlet-name>TestServlet</servlet-name> <servlet-class>test.web.TestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>TestServlet</servlet-name> <url-pattern>TestServlet</url-pattern> </servlet-mapping> </web-app> ネット上の多くのサンプルがpackageを使わないサンプルなので、どこが間違っているのかなかなか 見つけることができません。 ここまでの情報で何かお判りになる方がいたらご指導のほどお願いします。 |
|
投稿日時: 2002-08-09 23:46
JARファイルを"WEB-INF/classes"においているのですね?残念ながら、それでは
たしかにServletはTomcatから見えません。 "WEB-INF/classes"は、その名の通りclassファイルのみをおく場所なんです。 JARにした場合は、"WEB-INF/lib"に置く必要があります。 その上で、TestServletにアクセスするためには、 "/test/TestServlet" を指定しないといけません。<url-pattern>TestServlet</url-pattern> と 設定しているためです。ServletのURLは、/test/${url-pattern}になります。 (どうしても/test/servlet/TestServletにServletをおきたいのならば、 <url-pattern>servlet/TestServlet</url-pattern>とする必要がある) これで解決できるでしょうか。(私も初投稿なのに、偉そうな文章に なってしまいました。すいません) −−−追加−−− すいません、上記の「その上で、TestServletに」以下は間違った情報です。 nakagomeさんのおっしゃるとおり、/test/servlet/test.web.TestServletでも /test/${url-pattern}でも確認できます。 ご指摘ありがとうございました>nakagomeさん [ メッセージ編集済み 編集者: gsg 編集日時 2002-08-12 17:57 ] [ メッセージ編集済み 編集者: gsg 編集日時 2002-08-12 18:03 ] |
|
投稿日時: 2002-08-12 13:43
> その上で、TestServletにアクセスするためには、
> "/test/TestServlet" > を指定しないといけません。<url-pattern>TestServlet</url-pattern> と > 設定しているためです。ServletのURLは、/test/${url-pattern}になります。 いいえ。違います。 Catalinaディフォルトインストール状態のコンテナの環境設定を変更していないなら、 /test/servlet/TestServlet でも /test/servlet/test.web.TestServlet でも、目的のServletにアクセス可能です。 コンテナのweb.xml(%CATALINA_HOME%/conf/web.xml)に以下の定義が存在するからです。 <!-- The mapping for the invoker servlet --> <servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping> _________________ Paul K.Nakagome |
|
投稿日時: 2002-08-12 22:17
gsgさんnakagomeさん返答ありがとうございました!
おかげでちゃんと動作するようになりました。 ちなみに、classesの下にclassファイル郡を生で置くのとjarに固めてlibの下に置くのでは どちらのほうが一般なのでしょうか? WAR等に固めてしまってまとめてデプロイするのであれば、管理上はどちらでもいいような 気がするのですが、生classを配置したほうが若干早いとか、そういう違いってあるので しょうか? |
1
