私はTomcat 7を使用しており、warファイル自体にwarファイルのコンテキストルートを設定し、Tomcatを自動デプロイしてこのパスを取得したいと考えています。含まれているwarのMETA-INFディレクトリにcontext.xmlを置くことによって、それを行う方法を見つけたと思いました。
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/somepath/myapp"/>
しかし、これは機能していないようです、それは http://Tomcat.Apache.org/Tomcat-7.0-doc/api/org/Apache/catalina/startup/SetContextPropertiesRule.html によってロードされたと思いますパス以外のすべてをロードすることを示しています!
Warにsomepath#myapp.warという名前を付けることができることはわかっていますが、それをピックアップしますが、このような名前では満足できないweblogicにもデプロイします。
上記のcontext.xmlからパスを機能させるために使用できる設定はありますか?
おかげでデビッド
パスがserver.xml
のハードコードされたpath
で指定されていない限り、Context Context
属性は無視されます。これは強く推奨されておらず、マルチレベルパスを使用しません。
Warファイルの名前、またはTomcat/conf/Catalina/hostname
のContext xmlファイルの名前が、デプロイされたアプリケーションのpath
になります。
上記の2つの後者が解決策である場合は、.war
ファイルをホストの指定されたappBase
の外側に配置することを確認してください。そうしないと、アプリを2回デプロイします。
で:conf/Catalina/localhost/myapp#path.xml
<?xml version="1.0"?>
<Context docBase="/some/path/to/myapp.war">
</Context>
/Tomcat7/conf/server.xmlで、要素内に以下の行を追加し、Tomcatを再起動して変更を加えます。
*「mycom」をアプリケーション名に変更します。
<Context path="" docBase="mycom">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="ROOT" docBase="ROOT">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
これにより、デフォルトのルートアプリケーションがコンテキストルート「/ ROOT」の下に表示されます。
これで、「/」および「/ mycom」からもアプリにアクセスできるようになりました。
$ Tomcat_HOME/conf/server.xml内のHost configにcopyXML = "true"を追加します。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" copyXML="true">
Application.warをTomcatが認識していないディレクトリにロードした場合、warファイルの内容をどのように読み取ることができますか?この情報を追加する正しい場所は$ Tomcat_HOME/conf/context.xmlにあります-これはTomcatの一部であり、Tomcatはこのファイルを読み取り、アプリケーションの場所を見つけてデプロイできます。詳細は TomcatでJNDIを設定する方法