0

Gradle を使用して小さな Web アプリを作成しました。組み込みの Jetty サーバーを使用するとうまくいっているように見えましたが、WAR ファイルをスタンドアロン サーバーにコピーしようとすると、うまくいきませんでした。

gradle war プラグインを使用して戦争を組み立てました。

gradle jettyRunWar を実行すると正常に動作します。

war を Jetty webapps フォルダーにコピーして Jetty を実行すると、次の例外で失敗します。

java.lang.IllegalStateException: No such servlet servlet_name

しかし、これとまったく同じサーブレットが、組み込みの Jetty サーバーで問題なく検出され、使用されます。

展開された戦争を webapps ディレクトリに手動でコピーすると、同じ問題が発生します。

Spring Web および Spring mvc ライブラリはコピーされて WEB-INF/libs ディレクトリに存在するため、Spring が見つからないという問題はありません (またはそうですか?)。

Jetty 9.1 を使用しており、web.xml ファイルはサーブレット v3 用に構成されています。

Spring 3.2も使用しています。私が書いている Web アプリは、@Controller アノテーションを使用してリクエストをルーティングする RESTful サービスです。

これは、戦争をコピーするのと同じくらい簡単なはずですが、そうではないようです. ここで何をすべきか少し迷っていますが、何か考えはありますか?

ありがとう!

4

1 に答える 1

0

答えがあなたをじっと見つめていることもあります...投稿した後、サーブレット宣言の前にサーブレットマッピングがあることに気付きました。これは Gradle Jetty には問題がありませんでしたが (理由は不明)、Jetty は不満を感じていました。そもそもなんで順番変えたのかわからない…

つまり、まだ宣言されていないため、Jetty はサーブレットを見つけられなかったようです。

于 2013-10-05T01:22:19.170 に答える