javaを介してプログラムでtomcat(localhost上)を管理する方法を探しています。 私はTomcatを起動/停止し、WARを展開したいと思っています。JavaでTomcatを管理するには
何か助けていただければ幸いです。 -Dcatalina.home = C:/ Tomcatの/
サンプルコードには、Javaを介してTomcatを停止/開始する
javaを介してプログラムでtomcat(localhost上)を管理する方法を探しています。 私はTomcatを起動/停止し、WARを展開したいと思っています。JavaでTomcatを管理するには
何か助けていただければ幸いです。 -Dcatalina.home = C:/ Tomcatの/
サンプルコードには、Javaを介してTomcatを停止/開始する
方法は、サンプルパラメータで(クラスランタイムを使用)bootstrap.jar上で実行を呼び出すことですJavaから実行されているか、外部のプログラムを参照して
http://ptrthomas.wordpress.com/2006/03/25/how-to-start-and-stop-tomcat-from-ant
サンプルコード:Tomcatの停止を開始する方法アリ実行見る http://www.linglom.com/2007/06/06/how-to-run-command-line-or-execute-external-application-from-java/
バットファイル。ユーザーがjavaプロセスを実行中にTomcatを起動および停止する権限があることを確認してください。
try{
Runtime.getRuntime().exec("c:/program files/tomcat/bin/startup.bat");
} catch(IOException e) {System.out.println("exception");}
あなたはtomcat managerを使用するか、どのように管理プロセスにデプロイ操作を学ぶためにそのソースを見ることができます。
Tomcatをプログラムで管理するには、JMXとbullet-in MBeanのTomcatの機能を調べるとよいでしょう。
本質的に、JavaベースのJMXクライアントを作成してRMI経由でMBeanと通信したり、ManagerアプリケーションでJMX Httpプロキシを利用したり、通常のHTTPリクエストを使用してtomcatインスタンスをスクリプト化して管理することができます。 JMXとTomcat 6の良い参考のため
: http://www.datadisk.co.uk/html_docs/java_app/tomcat6/tomcat6_jmx.htm
マネージャアプリケーションとJMX HTTPプロキシの良い参考: http://tomcat.apache.org/tomcat-6.0-doc/manager-howto.html#JMX_Set_command
あなたはかなり簡単に戦争を展開し、アンデプロイすることができるはずです。
私はシャットダウンTomcatにあなたをできるように、既存のMBeanがあるとは思わないが、1を自分で実装し、()でSystem.exitを呼び出すために、かなり簡単です。
アプリに埋め込まれたTomcatを実行できます。
Double、embedded Tomcatは開発に非常に便利です。埋め込みの例[here](https://github.com/alx3apps/spring-embedded-tomcat)があります。 – alexkasko
あなたは、あなたのアプリケーションが実行されている8843のような個々のTomcatコネクタすなわちポートの再起動を再起動することができます。これが必要な場合の1つのシナリオは、APIを使用して署名付き証明書を取得する場合、またはトラストストアを変更する場合です。
は、ここで私は私が証明書を追加/削除した後、Tomcatのコネクタを再起動するために使用しています完全なコード/方法です。
public void refreshTrustStore() throws Exception
{
try
{
//following line need to be replaced based on where you get your port. It may be passed in as argument
String httpsPort = configurationManager.getHttpsPort();
String objectString = "*:type=Connector,port=" + httpsPort + ",*";
final ObjectName objectNameQuery = new ObjectName(objectString);
for (final MBeanServer server : MBeanServerFactory.findMBeanServer(null))
{
if (server.queryNames(objectNameQuery, null).size() > 0)
{
MBeanServer mbeanServer = server;
ObjectName objectName = (ObjectName) server.queryNames(objectNameQuery, null).toArray()[0];
mbeanServer.invoke(objectName, "stop", null, null);
// Polling sleep to reduce delay to safe minimum.
// Use currentTimeMillis() over nanoTime() to avoid issues
// with migrating threads across sleep() calls.
long start = System.currentTimeMillis();
// Maximum of 6 seconds, 3x time required on an idle system.
long max_duration = 6000L;
long duration = 0L;
do
{
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
Thread.currentThread().interrupt();
}
duration = (System.currentTimeMillis() - start);
} while (duration < max_duration &&
server.queryNames(objectNameQuery, null).size() > 0);
// Use below to get more accurate metrics.
String message = "TrustStoreManager TrustStore Stop: took " + duration + "milliseconds";
logger.information(message);
mbeanServer.invoke(objectName, "start", null, null);
break;
}
}
}
catch (Exception exception)
{
//Log and throw exception
throw exception
}
}
TomcatはJavaプログラムです。メインクラスを呼び出すだけで、ライブラリと引数について知るスクリプトを参照してください。本当の質問は何ですか? – Jayan
春のブーツを試してみましたか? – wdoering