【问题标题】:JPOS Q2 initialization using Tomcat6使用 Tomcat6 进行 JPOS Q2 初始化
【发布时间】:2014-09-19 08:41:05
【问题描述】:

我们将 jpos 与 Q2 一起使用,其中我们的一个 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 的用途是什么,因为我的背景是 .Net。所以问题是;将上述更改用于生产是否安全?

【问题讨论】:

    标签: java tomcat jpos


    【解决方案1】:

    Q2 是一个独立的应用程序,虽然它可以嵌入到其他应用程序中,但 99% 的部署和主要开发重点都针对独立设置,因此在运行时您可能会发现(就像您一样)一些粗糙的边缘它在一个容器中。

    也就是说,我们了解您的问题,并已在 jPOS 1.9.9-SNAPSHOT 中解决了该问题,详情请参阅 2dbd8deChangeLog

    【讨论】:

    • 谢谢 我注意到来自 Aljendro 的电子邮件,还没有尝试过,但希望它会起作用。请问我在哪里可以找到罐子。我尝试在本地构建它在唱歌任务上失败,尽管它在构建目录中生成了 jar。谢谢
    • 请忽略我之前的评论,我在 jpos.org/maven 下找到了 jar,我试试看。谢谢
    猜你喜欢
    • 2015-10-09
    • 2019-01-22
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 2021-09-03
    • 2015-05-09
    相关资源
    最近更新 更多