2つのアプリケーションfoo.war
をbar.war
同じTomcatインスタンスにデプロイしたいと思います。fooがポート81でリッスンし、barがポート82でリッスンするなど、異なるポートで接続をリッスンすることは可能ですか?もしそうなら、どうすればこれを設定できますか?アプリケーションが異なるポートでリッスンする必要はないことを認識していますが、それを実現したいと考えています。
また、ルートコンテキストで実行さfoo.war
れるROOT.war
ように名前を変更すると、このTomcatインスタンスへのすべてのリクエストはfooアプリによって処理されるため、barを別のTomcatインスタンスにデプロイする必要があると言っているのは正しいですか?
Tomcatで複数のポートをリッスンする場合は、ポートごとにコネクタを設定する必要があります。各ポートを異なるアプリケーションにマップするには、各コネクタをサービスでラップし、独自のホストを作成する必要がありますappBase
。
のサービス定義の例server.xml
:
<Service name="foo">
<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol" />
<Engine name="Catalina80" defaultHost="localhost">
<Host name="localhost" appBase="foo" unpackWARs="true" autoDeploy="true" />
</Engine>
</Service>
<Service name="bar">
<Connector port="81" protocol="org.apache.coyote.http11.Http11NioProtocol" />
<Engine name="Catalina81" defaultHost="localhost">
<Host name="localhost" appBase="bar" unpackWARs="true" autoDeploy="true" />
</Engine>
</Service>
warファイルをwebapps
ディレクトリにドロップする代わりにfoo
、port80
およびbar
port用のディレクトリを作成する必要があります81
。両方のwarファイルに名前をROOT.war
付けて、それぞれのベースディレクトリにドロップします。もちろん、必要に応じて、各ディレクトリに複数のアプリを配置できます。
で定義されたディレクトリappBase
は、Tomcatディレクトリに関連しています。絶対パスを使用することで、システムのどこにでも配置できます。ドキュメントから:
appBase
この仮想ホストのアプリケーションベースディレクトリ。これは、この仮想ホストにデプロイされるWebアプリケーションを含む可能性のあるディレクトリのパス名です。絶対パス名、または
$CATALINA_BASE
ディレクトリからの相対パス名を指定できます。[...]指定されていない場合、デフォルトのwebapps
が使用されます。
別のオプションは、デフォルトのTomcat構成を維持し、別のhttpサーバー(apache、nginx、lighttpd、...)を使用してポートをTomcatアプリケーションの内部パスにマップすることです。
ルートアプリケーションは、他のアプリケーションと一致するリクエストを受信しません。たとえば、/foo/example
に移動しfoo.war
、/example/example
に移動しROOT.war
ます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加