2012-06-25 2 views
0

Я пытаюсь получить доступ к конечной точке MessageHandler, чтобы запустить и остановить службу через JMX. У меня есть следующая конфигурация в моем файле контекста. Я могу получить доступ к методам запуска/остановки через JConsole.Программный доступ к MessageHandlers, открытый через JMX

Я также могу получить доступ к конечной точке, используя MBeanServerConnectionFactoryBean от клиента на основе пружины.

Теперь я хочу получить доступ к конечной точке с помощью MBeanProxyFactoryBean, чтобы я мог напрямую ссылаться на методы, как если бы bean был локальным. Кажется, это не работает.

Не могли бы вы увидеть мою конфигурацию ниже и предложить, что не так или что еще нужно сделать?

Server.xml

<int-jms:message-driven-channel-adapter id="jmsIn" 
    connection-factory="connectionFactory" concurrent-consumers="3" max-concurrent-consumers="5" 
    destination-name="emsQueue" acknowledge="transacted" channel="jmsInChannel" 
    extract-payload="false" /> 

<integration:service-activator id="serviceAct" input-channel="jmsInChannel" output-channel="fileNamesChannel" 
    ref="handler" method="process" /> 

client.xml

<bean id="mBeanServerClient" class="org.springframework.jmx.support.MBeanServerConnectionFactoryBean"> 
    <property name="serviceUrl" value="service:jmx:rmi:///jndi/rmi://localhost:9004/jmxrmi" /> 
</bean> 

<bean id="jmxClient" class="com.abc.test.IBalJMXClient"> 
    <property name="connection" ref="mBeanServerClient" /> 
</bean> 
<bean id="remoteJMSMBean" class="org.springframework.jmx.access.MBeanProxyFactoryBean"> 
    <property name="objectName" value="com.abc.test:name=serviceAct" /> 
    <property name="server" ref="mBeanServerClient" /> 
    <property name="proxyInterface" value="com.abc.client.intf.IBalJMSController" /> 
</bean> 

IBalJMSController представляет собой интерфейс, в котором я определил начало(), остановка() и isRunning() метода, так что я могу доступ к нему из любого класса.

Когда я пытаюсь проверить его, я получаю исключение вызова. Любое предложение будет очень полезно

ответ

1

Вы задали тот же вопрос на форумах Весны; Я ответил на это там; http://forum.springsource.org/showthread.php?127726-Programatically-access-MessageHandlers-exposed-via-JMX

, но я повторю ответ здесь ...

Во-первых, остановка обработчика не является правильным, что нужно сделать - все, что будет делать это отписки от канала и сообщения будут получать ошибки «грузоотправитель нет подписчиков ». Вам необходимо остановить() адаптер, управляемый сообщениями.

Во-вторых, вам нужно указать полное имя объекта MBean, например. "com.irebalpoc.integration: type = ManagedEndpoint, na me = jmsin, bean = конечная точка". Вы можете найти это в метаданных MBean (например, в VisualVM).

+0

Спасибо за ваш ответ. Раньше у меня не было ответа, поэтому я добавил его здесь. – shashikanthb

Смежные вопросы