Инициализация JPOS Q2 с использованием Tomcat6

Мы используем jpos с Q2 с одним из наших веб-приложений, развернутых на tomcat6, и все было хорошо. Теперь нам нужно реализовать другое приложение jpos, используя материал q2, но когда мы развернули его на том же сервере tomcat6, оно не загрузило объекты, например. QMUX, ChannelAdaptor и т. д. Я заметил следующее исключение в журнале вывода 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. Итак, вопрос; Безопасно ли вводить вышеуказанные изменения в производство?


person Mubashar    schedule 19.09.2014    source источник


Ответы (1)


Q2 является автономным приложением, и хотя его можно встраивать в другие приложения, 99% развертываний и основное внимание в разработке уделяется автономной установке, поэтому вы можете обнаружить (как и раньше) некоторые шероховатости при запуске его в контейнер.

Тем не менее, мы понимаем вашу проблему и решили ее в jPOS 1.9.9-SNAPSHOT, см. 2dbd8de и ChangeLog для получения подробной информации.

person apr    schedule 20.09.2014
comment
Спасибо, я заметил письмо от Aljendro, еще не пробовал, но надеюсь, что это сработает. Подскажите, пожалуйста, где найти баночку? Я попытался локально собрать его, но он не смог выполнить задачу пения, хотя он создал банку в каталоге сборки. Спасибо - person Mubashar; 21.09.2014
comment
Пожалуйста, проигнорируйте мой предыдущий комментарий, я нашел jar на jpos.org/maven, я попробую. Благодарность - person Mubashar; 21.09.2014