2011-03-01 4 views
2

Tomcat 6インスタンスに展開するjarファイル内にサーブレットがあります。私は次のことをしました: サーブレットjarファイルはTomcat 6にどこに置くのですか?

  1. は/ Tomcatの中で私のjarファイルを置くルートweb.xmlにサーブレット・マッピングを追加私のルートweb.xmlにサーブレット宣言を追加/ libに
  2. 私は、次のエラーを取得しています

が、私は私のサーブレットに指示したときに私のサーバーを再起動さ

javax.servlet.ServletException: Wrapper cannot find servlet class com.mypackage.myServlet or a class it depends on 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) 
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    java.lang.Thread.run(Unknown Source) 

root cause 

java.lang.ClassNotFoundException: com.mypackage.myServlet 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516) 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) 
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    java.lang.Thread.run(Unknown Source) 

これは私のweb.xmlが正しく設定されていることを示しており、適切なURLパターンにうまく当てられています。だから問題は... Tomcat 6にサーブレットjarファイルをどこに置いて、CLASSPATHでピックアップするのですか?

TIA

+1

@Bozho、ディスカッションに追加することは何ですか?あなたの答えはどこに行きましたか? – Simon

答えて

1

、WARのlibディレクトリではなく、トップレベルのTomcat libディレクトリに行きます。理論的には動作するはずなので、私はそれをローカルでテストしたところ、Tomcat 6.0.20と7.0.5はうまく動作します。おそらく<servlet-class>のタイプミスです。サーブレットのクラス名は、小文字で始まります。これは、完全にJava naming conventionsになります。代わりに

<servlet-class>com.mypackage.MyServlet</servlet-class> 

を試してください。

それでも問題が解決しない場合は、ZARファイルを使ってJARを解凍し、com/mypackage/MyServlet.classファイルが存在するかどうかを確認してください。

ファイルが実際に存在する場合は、IDEによって制御され/管理されているTomcatのコピーに、Tomcat/libのjarの特定のサブセットのみを持つIDEを使用している可能性があります。コマンドコンソールでTomcatを単独で展開して実行してみてください。

+0

ありがとう、私は再び確認します。私は匿名性のために実際のパッケージ名を保護していましたが、簡単にタイプミスを犯す可能性がありました。 – Simon

+0

これは私を正しい場所に導いた。これは説明したように動作し、libフォルダにサーブレットjarを入れ、ルートweb.xmlを設定してそのディレクトリに移動することができます。私が持っていた問題は、スペルの問題ではなく、サーバー上にキャッシュすることでした。私はすべてのキャッシュされたリソースをきれいにして起動し、設定はうまくいきました。私のIDE(Eclipse Helios)は完全には完全に消去されていませんでした。私は自分自身(tomcatフォルダの下の作業ディレクトリ)を実行しなければなりませんでした。今はうまく動作します。 – Simon

+0

ようこそ。 – BalusC

2

サーブレットJARファイルが、これは通常の練習ではありませんが、それが正常に動作する必要がありますすなわち

<war-root> 
    /WEB-INF 
     web.xml 
    /lib 
     myservlet.jar 
+0

jarファイルとしてサーブレットをデプロイできませんか?デフォルトのjspサーブレットはどのように機能しますか?なぜ私は同じことをすることができないのですか? – Simon

関連する問題