CXF InstrumentationManagerImpl с более чем 1 приложением CXF в контейнере - PullRequest
0 голосов
/ 18 января 2011

У меня проблема при попытке развернуть 2 или более приложений CXF в одном контейнере.Проблема с org.apache.cxf.management.jmx.InstrumentationManagerImpl ... в том, что создается более 1 развертывания;

Jan 18, 2011 2:05:10 PM ...InstrumentationManagerImpl init SEVERE: START_CONNECTOR_FAILURE_MSG

Конфигурация компонента выглядит следующим образом:

Приложение One

<bean id="OneInstrumentationManager" class="org.apache.cxf.management.jmx.InstrumentationManagerImpl">
    <property name="bus" ref="cxf" />
    <property name="enabled" value="true" />
    <property name="usePlatformMBeanServer" value="true" />
    <property name="persistentBusId" value="One" />
</bean>

Приложение Two

<bean id="TwoInstrumentationManager" class="org.apache.cxf.management.jmx.InstrumentationManagerImpl">
    <property name="bus" ref="cxf" />
    <property name="enabled" value="true" />
    <property name="usePlatformMBeanServer" value="true" />
    <property name="persistentBusId" value="Two" />
</bean>

Ответы [ 2 ]

1 голос
/ 20 апреля 2011

Мы столкнулись с той же проблемой коллизии JMX ObjectName с CXF и EhCache.

Решение, которое мы нашли, заключается в добавлении контекстного пути веб-приложения к каждому ObjectName, зарегистрированному в MBeanServer. Это напрямую связано с интегрированными серверами MBeansServer для большого кластеризуемого сервера JavaEE (Websphere и т. Д.).

Благодаря этому имя объекта шины cxf:

"org.apache.cxf:type=Bus,host=localhost,path=/my-application,bus.id=my-application-cxf-bus"

Мы упаковали этот * сервер сервлетов с поддержкой контекста сервлетов в библиотеку с пространством имен пружин, чтобы упростить настройку:

<beans 
   xmlns:management="http://www.xebia.fr/schema/xebia-management-extras"
   ... >

   <management:servlet-context-aware-mbean-server id="mbeanServer" />

   <bean id="cxf" class="org.apache.cxf.bus.CXFBusImpl">
      <property name="id" value="production-ready-application-cxf-bus" />
   </bean>
   <bean id="org.apache.cxf.management.InstrumentationManager" class="org.apache.cxf.management.jmx.InstrumentationManagerImpl">
      <property name="server" ref="mbeanServer" />
      <property name="enabled" value="true" />
      <property name="createMBServerConnectorFactory" value="false" />
   </bean>
   ...
<beans>

Этот поставляется со многими другими дополнениями JMX для упрощения мониторинга общих компонентов (dbcp, util.concurrent, cxf, jms и т. Д.) И предлагается под лицензией Apache Software Friendly для бизнеса http://code.google.com/p/xebia-france/wiki/XebiaManagementExtras.

Надеюсь, это поможет,

Сирил (Ксебия)

1 голос
/ 17 февраля 2011

Вот что я сделал, чтобы заставить 2 [фактически 3] работать в одном и том же контейнере ... не более и не менее ;

<bean id="MyCxfExampleInstrumentationManager" class="org.apache.cxf.management.jmx.InstrumentationManagerImpl">
    <property name="bus" ref="cxf" />
    <property name="enabled" value="true" />
    <property name="usePlatformMBeanServer" value="true" />
    <property name="createMBServerConnectorFactory" value="false" />
</bean>

<bean id="MyCxfExampleCounterRepository" class="org.apache.cxf.management.counters.CounterRepository">
    <property name="bus" ref="cxf" />
</bean>
...