Spring MVC アプリを JBoss 7.1.1 から Wildfly 8.1 に移行していますが、古い「web」モジュールの代わりに新しい「undertow」モジュールを使用する必要がありました (推奨されましたか?)。/
という注釈が付けられたコントローラー メソッドを呼び出すために使用されていた " "への要求が@RequestMapping("/")
、コントローラー メソッドに到達しなくなったことを除いて、事態は順調に進んでいます。代わりに、そのようなリクエストはすぐに (リダイレクトではなく) " /index.html
" に書き換えられているようです。私はそのようなファイルを持っていない (そして必要としたことがない) ため、" /
" に対するすべての要求で 404 エラーが生成されます。
興味深いことに、他の @RequestMapping
すべての注釈付きコントローラー メソッドは引き続き正常に機能します。
これが私のstandalone.xml
ファイルからの関連するスニペットです。
<subsystem xmlns="urn:jboss:domain:undertow:1.1">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http" max-post-size="4194304"/>
<host name="default-host" alias="localhost">
</host>
</server>
<servlet-container name="default">
<jsp-config development="true"/>
</servlet-container>
</subsystem>
Wildfly の undertow モジュールのsubsystem
定義で が明示的に宣言されていないhandler
場合、Wildfly はデフォルトでfile
ハンドラーになり、URL の書き換えに関与している可能性があると思われますが、これについては確信が持てません。
Wildfly の undertow モジュールが基づいている Undertow プロジェクトのハンドラーに関するドキュメントは、「リダイレクト」ハンドラーのサポートを示しています。予期しない「/」書き換えを回避するためにこれを使用することを検討しましたが、Wildfly の undertow モジュールがこれをサポートしているかどうか、およびサポートしている場合は で構成する方法が明確ではありませんstandalone.xml
。ただし、できたとしても、ハックのように感じると思います。代わりに、問題の根本に到達することを好みます (しゃれは意図されていません)。
残念な動作を説明する SO の質問が多数あり、他のパス ( 、など)RequestMapping("/")
を使用することを提案する多くの回答がありますが、既存の (変更されていない) コードは JBoss 7.1.1 で問題なく動作することを忘れないでください。(また、これらの質問のどれも、おそらくこの質問の重要な考慮事項である Wildfly について言及していません。) それにもかかわらず、私はさまざまな提案を試しましたが、どこにも行きませんでした。ディスパッチャ サーブレットに到達する前に、URL が書き換えられているように見えます。""
"/index"
要約すると、私の質問は次のとおりです。
RequestMapping("/")
JBoss 7.1.1 と同じように、Spring MVC アプリを Wildfly 8.1 で実行するにはどうすればよいですか?