Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Tomcat6初始化JPOS Q2_Java_Tomcat_Jpos - Fatal编程技术网

Java 使用Tomcat6初始化JPOS Q2

Java 使用Tomcat6初始化JPOS Q2,java,tomcat,jpos,Java,Tomcat,Jpos,我们将JPO与Q2一起使用,其中一个webapp部署在tomcat6上,一切都很好。现在我们必须使用q2实现另一个jpos应用程序,但是当我们在同一个tomcat6服务器上部署它时,它没有加载对象,例如QMUX,channeladapter等。我在tomcat输出日志中注意到以下异常 javax.management.InstanceAlreadyExistsException: Q2:type=system,service=loader at com.sun.jmx.mbeanserv

我们将JPO与
Q2
一起使用,其中一个webapp部署在tomcat6上,一切都很好。现在我们必须使用q2实现另一个jpos应用程序,但是当我们在同一个tomcat6服务器上部署它时,它没有加载对象,例如
QMUX
channeladapter
等。我在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%的部署和主要开发重点都是针对独立设置的,因此在容器中运行它时,您可能会发现(正如您所做的那样)一些粗糙的边缘


也就是说,我们理解您的问题,并已在jPOS 1.9.9-SNAPSHOT中解决,有关详细信息,请参阅和。

谢谢,我注意到Aljendro的电子邮件,尚未尝试,但希望它能起作用。你能告诉我在哪里能找到罐子吗。我尝试在本地构建,但它在歌唱任务中失败,尽管它在builddir中生成了jar。谢谢忽略我之前的评论,我在jpos.org/maven下找到了jar,我会试试看。谢谢