Tomcat で Spring MVC アプリケーションを正常にデプロイして実行しました。管理コンソールからJNDIデータソースを設定したいという理由だけで、それをglassfishに移動しようとしています。
ここで、war ファイルを Glassfish にデプロイしてアプリケーションを起動すると、次のようにセットアップされたウェルカム ファイルが正常に起動されますweb.xml
。
<welcome-file-list>
<welcome-file>home</welcome-file>
</welcome-file-list>
この時点でのブラウザ上のリンクは次のとおりです。
http://localhost:8080/ContextRoot
ウェルカム ページには、次のようなリンクがあります。
<a href="orders">Manage Orders</a>
そして、そのURLにコントローラーをマップしました:
@Controller
@RequestMapping("/orders")
public class OrderItemController {
@RequestMapping(method = RequestMethod.GET)
public String displayTables(Model model,
@RequestParam(value="message", required = false) String message) {
occupiedTables = tableService.getOccupiedTables();
model.addAttribute("message", message);
model.addAttribute("occupiedTables", occupiedTables);
return "orderItem";
}
}
しかし、orders
そのページのリンク ( ) をクリックすると、コンテキスト ルートがなくなり、次のものが残ります。
http://localhost:8080/orders
そのため、コンテキスト ルートが表示されなくなったため、アプリケーション自体が見つかりません。そして、404エラーが発生します。
私の質問は、Tomcat から Glassfish にアプリケーションを移動する際に変更を加える必要があるかどうかです。インターネットで検索した後、次の内容でアプリケーションに とglassfish-web.xml
並行してを追加しました。web.xml
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
<context-root>/ContextRoot</context-root>
</glassfish-web-app>
しかし、それは役に立ちません。また、グラスフィッシュ管理コンソールでアプリケーションの一部としてリストされているコンテキスト ルートも確認できます。
ここで何が問題なのですか?私は何か他のものを見逃していますか?
更新:
Glassfish 管理コンソールでデフォルトの Web モジュールを設定すると、次のようになります。
「構成」 -> 「仮想サーバー」 -> 「サーバー」 -> 「デフォルト Web モジュール」
その後、すべてが正常に機能しています。コンテキスト ルートはまったく必要ありません。そのため、アプリケーションのウェルカム ファイルには次の場所からアクセスできます。
http://localhost:8080
orders
リンクをクリックすると、次のページに移動します。
http://localhost:8080/orders
アプリケーションはデフォルトであり、コンテキストルートは現在必要ないため、これは正常に機能しています。
さて、アプリケーションをデフォルトにし、コンテキストルートを明示的に与えずにこれを行う方法はありませんか?