2009-08-13 12 views
0

1つのWebアプリケーションに複数のコンテキストパスを指定することはできますか? たとえば、私はポート8080で動作するtomcatアプリケーションmyappを持っています。localhost/app1またはlocalhost/app2の両方がtomcatのmyappにルーティングされるように、これをフロントエンドにしたいと思いますか?リダイレクトapache tomcat fronting

答えて

1

いいえ同じアプリケーションで2つのパスを定義する方法はありません。同じWARに対して2つのパスを指定できますが、同じアプリケーションの2つのインスタンスになります。

ただし、アプリケーションをROOTとして定義し、コード内のパスを確認することができます。たとえば、アプリケーションをwebapps/ROOTに配置し、サーブレットにこのロジックを追加します。

String path = request.getPathInfo(); 

if (path.indexOf("/app1") >= 0) 
    app1(request, response); 
else if (path.indexOf("/app2") >= 0) 
    app2(request, response); 
+0

こんにちは、ありがとうthe response.but私は自分のアプリケーションを変更したくないのですが、httpd.confを変更してリクエストをtomcat –

0

はい、これはApache Webサーバーの設定で行うことができます。このオプションはTomcatとは無関係です。 Apache Web Serverの背後にあるアプリケーションサーバー(Tomcat、Jetty、PHPスクリプトや静的ページを実行している別のApache Webサーバーなど)でも実行できます。

実際の設定は、Apache Web ServerをTomcatに接続するために使用する方法によって異なります。

あなたはmod_proxyのを使用している場合たとえば、構成は次のようになります。

ProxyPass /app1 http://192.168.11.25:8080/myapp 
ProxyPassReverse /app1 http://192.168.11.25:8080/myapp 
ProxyPass /app2 http://192.168.11.25:8080/myapp 
ProxyPassReverse /app2 http://192.168.11.25:8080/myapp 

私はちょうど2つの異なるフロントURLで同じのWebDAV Subversionを公開するために私のマシン上で設定する上で試してみました。

アプリケーションが実際にそれをサポートしているかどうかは、別の話です。アプリケーションでフロントURLを指定する必要があり、mod_proxyを使用している場合など。 Atlassian Confluenceのようなアプリケーションをインストールすると、まったく動作しません。あなたのアプリケーションがそれを必要としないなら、それは良いことになります。

しかし、それを回避するには複雑なURLリライト(mod_rewrite)を作成することで、いつでも下位レベルに下がることができます。

アプリケーションがセッション、URL、発信元IPアドレスなどを処理する方法についても気をつける必要があります。サポートしていない場合は、アプリケーションを変更できません。

関連する問題