3

PC に Tomcat サーバーをインストールしました。

Eclipse で一連のサーブレットを作成し、WAR 形式でエクスポートしました

サーバーにデプロイして起動すると、次のエラーが表示されます。

FALLO - No se pudo arrancar la aplicación en trayectoria de contexto /Middleware
FALLO - Encontrada excepción org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Middleware]]

詳細については、Tomcat ログ ファイルにアクセスすると、次のようになります。

Caused by: java.lang.IllegalArgumentException: The servlets named [reunionServlet] and [servlet.ReunionServlet] are both mapped to the url-pattern [/ReunionServlet] which is not permitted
at org.apache.catalina.deploy.WebXml.addServletMapping(WebXml.java:335)
at org.apache.catalina.startup.ContextConfig.processAnnotationWebServlet(ContextConfig.java:2457)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2139)
at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2100)
at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2093)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1300)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5269)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

何が問題ですか?

問題がファイル web.xml にあるかどうかは不明です。その内容は以下の通り

ここに画像の説明を入力

4

3 に答える 3

4

スタックトレースの最初の 3 行を読むと、何が起こっているかがよくわかります。 javadev が正しく答えたように、2 つのサーブレットを同じ URL パターンにマッピングしています。そのうちの 1 つは明らかに web.xml にあり、もう 1 つは何らかの注釈にある可能性が最も高いです (スタック トレースの 3 行目からわかるように)。

問題のあるサーブレットを見つけて、注釈または web.xml 宣言を変更すれば問題ありません。

面白いことに、問題のサーブレットはどちらの場合も同じようです。たとえば、web.xml で ReunionServlet のマッピングを宣言し、servlet.ReunionServlet に注釈を付けています (パッケージ名は「サーブレット」のようです - 非常に汎用的です)。したがって、基本的には、2 つの宣言のいずれかを削除するだけで、すべてが期待どおりに機能するはずです。

于 2013-05-07T08:11:37.973 に答える
4

reunionServlet と servlet.ReunionServlet の両方が、サーブレット コンテナーで禁止されている同じ URL-PATTERN /ReunionServlet にマップされます。宣言の 1 つを削除します。

于 2013-05-06T21:33:10.173 に答える