2012-04-06 19 views
0

javaを介してプログラムでtomcat(localhost上)を管理する方法を探しています。 私はTomcatを起動/停止し、WARを展開したいと思っています。JavaでTomcatを管理するには

何か助けていただければ幸いです。 -Dcatalina.home = C:/ Tomcatの/

サンプルコードには、Javaを介してTomcatを停止/開始する

+0

TomcatはJavaプログラムです。メインクラスを呼び出すだけで、ライブラリと引数について知るスクリプトを参照してください。本当の質問は何ですか? – Jayan

+0

春のブーツを試してみましたか? – wdoering

答えて

1

方法は、サンプルパラメータで(クラスランタイムを使用)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/

1
あなたが呼び出すためにJavaランタイムクラスを使用することができます

バットファイル。ユーザーがjavaプロセスを実行中にTomcatを起動および停止する権限があることを確認してください。

try{ 
Runtime.getRuntime().exec("c:/program files/tomcat/bin/startup.bat"); 
} catch(IOException e) {System.out.println("exception");} 
0

あなたはtomcat managerを使用するか、どのように管理プロセスにデプロイ操作を学ぶためにそのソースを見ることができます。

0

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を呼び出すために、かなり簡単です。

2

アプリに埋め込まれたTomcatを実行できます。

+0

Double、embedded Tomcatは開発に非常に便利です。埋め込みの例[here](https://github.com/alx3apps/spring-embedded-tomcat)があります。 – alexkasko

0

あなたは、あなたのアプリケーションが実行されている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 
} 

}

関連する問題