web-dev-qa-db-ja.com

TomcatのMETA-INF / context.xmlにパスを指定する方法

私は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からパスを機能させるために使用できる設定はありますか?

おかげでデビッド

13
David Kerwick

パスが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>
14
Pidster

/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」からもアプリにアクセスできるようになりました。

2
user3774340

$ 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を設定する方法

0
Chris Malan