web-dev-qa-db-ja.com

tomcatはコマンドラインからwebappを再起動します

PCI DSS複数のアプリを実行する準拠環境があり、サーバーを再起動せずに1つのアプリのみを再起動したいのですが、この環境では明らかに許可されていないため、マネージャーがありません。

コマンドラインから単一のWebアプリを再起動するにはどうすればよいですか?

22
Itai Sagi

私はパーティーに遅れていることを知っていますが、コマンドラインからアプリをリロードするためにあなたができるちょっとしたトリックは、アプリケーションのweb.xmlに行き、単にそれに触れることです。

touch web.xml

Tomcatは、このファイルの変更に気づくたびにアプリケーションをリロードします。単にタッチすると、実際にはファイルを変更するのではなく、タイムスタンプを変更するだけです。

33
Ulukai

ここに私がそれをする方法があります:

  1. Tomcatユーザーデータベースに「manager-script」ロールを持つユーザーがいることを確認してください。これは通常、${Tomcat}/conf/Tomcat-users.xmlに次のような行があることを意味します。
<user username="admin" password="secret" roles="manager-gui,manager-script"/>

そうしないと、クロスサイトリクエストフォージェリ(CSRF)保護のために403エラーが発生します。

  1. curlまたは任意のコマンドラインツールを使用して、URlをフェッチします<yourserver>/manager/text/reload?path=/<context_path>

    curl --user user:secret http://localhost:8080/manager/text/reload?path=/mypath  
    
29
laurent

Managerアプリケーションにアクセスしないと、それを行うことはできません。マネージャーアプリケーションにアクセスできても、Webブラウザーの代わりにコマンドラインを使用したい場合は、この Tomcatを管理するためのコマンドラインスクリプト Tomcat-managerを試すことができます。 Pythonが必要ですが、Unixシェルから次のようなことができます。

$ Tomcat-manager --user=admin --password=newenglandclamchowder \
> http://localhost:8080/manager/ reload /myapp

そして:

$ Tomcat-manager --user=admin --password=newenglandclamchowder \
> http://localhost:8080/manager deploy /myapp ~/src/myapp/myapp.war
2
kotfu

作品はapp.warの名前をtemp app.war.bkp(バックアップの任意の名前)に変更し、Tomcatがwebappのソースフォルダーを削除するときに.bkpの名前を元の名前に変更します。これは、コンソールアクセスユーザーに対してのみ機能します。

0

残念ながら、コマンドラインからこれを行う方法はないと思います。代わりに、Tomcatの別のインスタンスで再起動する必要がある単一のアプリケーションをホストして、他のアプリケーションに影響を与えずにそのインスタンスを再起動できる方法があるかどうかを確認することをお勧めします。

0
Zeleres