httpsコネクタをプログラムで停止してから開始する必要があります。tomcat 6では、次のコードのスクラップが正常に機能します。
final ObjectName objectNameQuery = new ObjectName("*:type=Connector,port=443,*");
MBeanServer mbeanServer = null;
ObjectName objectName = null;
for (final MBeanServer server : (List<MBeanServer>) MBeanServerFactory.findMBeanServer(null))
{
if (server.queryNames(objectNameQuery, null).size() > 0)
{
mbeanServer = server;
objectName = (ObjectName) server.queryNames(objectNameQuery, null).toArray()[0];
break;
}
}
// now we restart the connector that we just found. We sleep a little, but I am
// not actually sure 1) how long we should sleep for or 2) if sleeping is
// necessary at all.
if (mbeanServer != null)
{
mbeanServer.invoke(objectName, "stop", null, null);
Thread.sleep(waitForStopInSec * 1000);
mbeanServer.invoke(objectName, "start", null, null);
log.warn("https Connector was restarted");
}
しかし、tomcat 7(7.0.23)では、コネクタは停止しません!そこで、次のコード行を使用して、destroy()メソッドを呼び出しました(stop()メソッドを呼び出した直後)。mbeanServer.invoke(objectName、 "destroy"、null、null);
この場合、コネクタは実際に停止しました。しかし、起動しようとすると、コネクタが起動せず、次の例外が発生しました。
28/03/12 18:32:01 ERROR T:CommServerScheduler_Worker-1 TrustStoreRefreshJob.refreshHTTPSConnectors - failed to restart connector
javax.management.InstanceNotFoundException: Catalina:type=Connector,port=443,address="/192.168.201.24"
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1094)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:833)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
at tool.security.TrustStoreRefreshJob.refreshHTTPSConnectors(TrustStoreRefreshJob.java:79)
at tool.security.TrustStoreRefreshJob.executeJob(TrustStoreRefreshJob.java:32)
at com.nextnine.common.scheduler.AbstractJobLogic.execute(AbstractJobLogic.java:47)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
tomcat 7でコネクタを停止してから開始する方法についてのアイデアはありますか?優雅な方法で好ましい。よろしくお願いします、ガイ