17

JBoss 6.0 を使用しています。

Web アプリケーションmyApp.earを Web コンテキスト " /test " の下にデプロイしました。したがって、browser-url に「http://localhost:8080/test/」と入力すると、ログイン ページ (myLogin.jsp) が表示されます。

WAR は EAR ファイル内に存在するため、web モジュール内のcontext-root要素を使用して、 application.xmlファイルでコンテキスト ルートを指定しました。

<module>
    <web>
        <web-uri>myWeb.war</web-uri>
        <context-root>/test</context-root>
    </web>
</module>

私の質問は、「ルート コンテキスト」からユーザーを Web アプリに自動転送する方法です。

つまり、ユーザーが「http://localhost:8080/」と入力すると、(JBoss のデフォルトの ROOT.war の index.html ページではなく) Web アプリケーションのログイン ページが読み込まれることが期待されます。

{JBOSS}\server\default\deploy\ROOT.warから既存のindex.htmlを削除し、そこに login.jsp を作成しました。http://localhost:8080/と入力すると、「login.jsp」が呼び出されることがわかります。しかし、ユーザー リクエストを Web アプリのログイン ページにリダイレクトできません。

その login.jsp で、: を試しまし <jsp:forward page="/test" />たが、エラーが発生しました: "HTTP Status 404 - /test"。

のように呼び出し<jsp:forward page="/test/myLogin.jsp" />ても、同じ 404 エラーが発生します。

ルートコンテキストから Web アプリへの自動転送を実現する方法を提案できる人はいますか?

4

2 に答える 2

31

index.html をデフォルトの deploy フォルダーに保持し、リクエストを Web モジュールに転送する必要があります。

たとえば、index.html でのみ次の行を保持します。

<META HTTP-EQUIV="Refresh" CONTENT="0; URL=/test/"/> 
于 2011-04-18T21:43:11.943 に答える
7

Senthilからの回答は適切に機能しますが、ユーザーはブラウザーによって行われた実際のリダイレクト (ページが点滅) を見ることができます。リダイレクトは、30x コード (点滅なし) で HTTP リダイレクトをサポートする JBoss サーバーの書き換え [ 12 ] 機能でも実行できます。

アプリに直接書き換えを追加し ( web.xmljboss-web.xml)、リダイレクト ルールを指定することができますrewrite.properties- ここには示されていません。

または、元のアプリケーションに手を加えることなく、独自にサーバー構成を変更できます。アプリケーションがそのまま残っているため、このソリューションは便利だと思います。

ユース ケース: これをEJBCAデプロイメント (アプリではなく) に使用し、コンテキスト ルートを に設定します/ejbca。パッケージ化されたスクリプトによって提供されるデフォルトのデプロイ プロセスを維持したいとant同時に、ユーザー フレンドリ性のために、何らかのデフォルトとしてから/へのリダイレクトを追加したいと考えています。ユーザーが変更したい場合は、アプリ全体を再デプロイする必要なく/ejbca、変更するだけで完了します。standalone.xml

編集standalone.xml

<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false">
    <virtual-server name="default-host" enable-welcome-root="true">
        <alias name="localhost"/>
        <rewrite pattern="^/$" substitution="/test" flags="L,QSA,R" />
    </virtual-server>
</subsystem>
于 2016-10-13T07:08:49.983 に答える