0

Q2tomcat6にデプロイされたwebappの1つでjposを使用していますが、すべて問題ありませんでした。ここで、q2 のものを使用して別の jpos アプリケーションを実装する必要がありますが、同じ tomcat6 サーバーにデプロイしたときに、オブジェクトなどをロードしませんでした。Tomcat のQMUX出力ChannelAdaptorログに次の例外があることに気付きました

javax.management.InstanceAlreadyExistsException: Q2:type=system,service=loader
    at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:453)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.internal_addObject(DefaultMBeanServerInterceptor.java:1484)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:963)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:917)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:312)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:482)
    at org.jpos.q2.Q2.run(Q2.java:150)
    at java.lang.Thread.run(Thread.java:662)

例外のソースがクラスであることがわかります。ソースをダウンロードしたときに、次のコードの一部がメソッドQ2にあることに気付きました。run

ArrayList mbeanServerList = MBeanServerFactory.findMBeanServer(null);
if (mbeanServerList.isEmpty()) {
    server  = MBeanServerFactory.createMBeanServer (JMX_NAME);
} else {
    server = (MBeanServer) mbeanServerList.get(0);
}

そこで、上記のコードを次のコード (コメント付きのコードに注意) に置き換えて、プロジェクトに jpos ソース コードを含めることにしました。すべてが期待どおりに機能し始めます。

//ArrayList mbeanServerList = MBeanServerFactory.findMBeanServer(null);
//if (mbeanServerList.isEmpty()) {
    server  = MBeanServerFactory.createMBeanServer (JMX_NAME);
//} else {
//    server = (MBeanServer) mbeanServerList.get(0);
//}

変更されたコードでは、MBeanServer が既に利用可能であるか、単に新しいものを作成するだけであるかをテストしていないことに注意してください。

質問

ここでの問題は、私のバックグラウンドが .Net であるため、MBeanServer が何のためにあるのかわからず、何を扱っているのか正確にわからないことです。問題は次のとおりです。上記の変更を本番環境に適用しても安全ですか?

4

1 に答える 1

1

第 2 四半期はスタンドアロン アプリケーションであり、他のアプリケーションに組み込むことができますが、展開の 99% と主な開発の焦点はスタンドアロン セットアップを対象としているため、(あなたが行ったように) 他のアプリケーションで実行すると、いくつかの粗いエッジが見つかる可能性があります。容器。

とはいえ、私たちはあなたの問題を理解しており、jPOS 1.9.9-SNAPSHOT で対処しています。詳細については、 2dbd8deChangeLogを参照してください。

于 2014-09-20T17:27:40.267 に答える