簡體   English   中英

使用Tomcat6的JPOS Q2初始化

[英]JPOS Q2 initialization using Tomcat6

我們在Q2使用jpos,並將其中一個webapp部署在tomcat6上,這一切都很好。 現在我們必須使用q2東西實現另一個jpos應用程序,但是當我們將其部署在同一tomcat6服務器上時,它沒有加載對象,例如QMUXChannelAdaptor等。我注意到tomcat輸出日志中出現以下異常

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可用,或者不只是創建新的MBeanServer。

現在的問題是我不確定我正在處理什么,也不知道MBeanServer是做什么的,因為我的背景是.Net。 所以問題是; 在生產中進行上述變更是否安全?

Q2是一個獨立的應用程序,盡管它可以嵌入其他應用程序中,但是99%的部署和主要開發重點都針對獨立安裝程序,因此,您可能會發現(像以前一樣)在Windows 2000中運行它時遇到一些困難。容器。

也就是說,我們了解您的問題,並已在jPOS 1.9.9-SNAPSHOT中解決了該問題,有關詳細信息,請參見2dbd8deChangeLog

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM