Excuse my ignorance...
Of course, below is Spring-specific and doesn't work in Blueprint.
In a OSGi Karaf, one has to configure it more like this:
<bean id="testBean" class="JmxTestBeanImpl">
<property name="name" value="TEST"/>
<property name="age" value="100"/>
</bean>
<bean id="mbeanRegister" class="org.apache.karaf.management.MBeanRegistrer">
<property name="mbeans">
<map>
<entry value="org.my:name=stuff" key-ref="testBean"/>
</map>
</property>
</bean>
<reference id="mbeanServer" interface="javax.management.MBeanServer">
<reference-listener ref="mbeanRegister" bind-method="registerMBeanServer"
unbind-method="unregisterMBeanServer"/>
</reference>
-------- Original Message --------
Subject: Cannot create MBeanServer and inject into MBeanExporter
From: Martin Lichtin <[email protected]>
To: [email protected] <[email protected]>
Date: 9/19/2012 5:36 PM
Hi
I'm running into an issue when trying to configure a JMX bean.
My configuration, according to
http://www.atomikos.com/Documentation/SpringIntegration#JMX_Administration_of_Atomikos_T,
is as follows:
<beanid=/"jmxTransactionService"/
class=/"com.atomikos.icatch.admin.jmx.JmxTransactionService"/>
</bean>
<beanid=/"mbeanServer"/
class=/"org.springframework.jmx.support.MBeanServerFactoryBean"//>
<beanid=/"exporter"/ class=/"org.springframework.jmx.export.MBeanExporter"/>
<propertyname=/"beans"/>
<map>
<entrykey=/"atomikos:name=tx-service"/ value-ref=/"jmxTransactionService"//>
</map>
</property>
<propertyname=/"server"/ ref=/"mbeanServer"//>
</bean>
Then the exception is:
_org.osgi.service.blueprint.container.ComponentDefinitionException_: Error setting
property: PropertyDescriptor <name: server, getter: class
org.springframework.jmx.support.MBeanRegistrationSupport.getServer(, setter:
[class
org.springframework.jmx.support.MBeanRegistrationSupport.setServer(interfacejavax.management.MBeanServer]
at
org.apache.aries.blueprint.container.BeanRecipe.setProperty(_BeanRecipe.java:821_)[9:org.apache.aries.blueprint:0.3.2]
at
org.apache.aries.blueprint.container.BeanRecipe.setProperties(_BeanRecipe.java:787_)[9:org.apache.aries.blueprint:0.3.2]
at
org.apache.aries.blueprint.container.BeanRecipe.setProperties(_BeanRecipe.java:768_)[9:org.apache.aries.blueprint:0.3.2]
at
org.apache.aries.blueprint.container.BeanRecipe.internalCreate(_BeanRecipe.java:722_)[9:org.apache.aries.blueprint:0.3.2]
at
org.apache.aries.blueprint.di.AbstractRecipe.create(_AbstractRecipe.java:64_)[9:org.apache.aries.blueprint:0.3.2]
at
org.apache.aries.blueprint.container.BlueprintRepository.createInstances(_BlueprintRepository.java:219_)[9:org.apache.aries.blueprint:0.3.2]
at
org.apache.aries.blueprint.container.BlueprintRepository.createAll(_BlueprintRepository.java:147_)[9:org.apache.aries.blueprint:0.3.2]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(_BlueprintContainerImpl.java:631_)[9:org.apache.aries.blueprint:0.3.2]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(_BlueprintContainerImpl.java:337_)[9:org.apache.aries.blueprint:0.3.2]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(_BlueprintContainerImpl.java:230_)[9:org.apache.aries.blueprint:0.3.2]
at
java.util.concurrent.Executors$RunnableAdapter.call(_Executors.java:441_)[:1.6.0_26]
at
java.util.concurrent.FutureTask$Sync.innerRun(_FutureTask.java:303_)[:1.6.0_26]
at java.util.concurrent.FutureTask.run(_FutureTask.java:138_)[:1.6.0_26]
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(_ScheduledThreadPoolExecutor.java:98_)[:1.6.0_26]
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(_ScheduledThreadPoolExecutor.java:206_)[:1.6.0_26]
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(_ThreadPoolExecutor.java:886_)[:1.6.0_26]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(_ThreadPoolExecutor.java:908_)[:1.6.0_26]
at java.lang.Thread.run(_Thread.java:662_)[:1.6.0_26]
Caused by: _java.lang.Exception_: Unable to convert value
org.springframework.jmx.support.MBeanServerFactoryBean@5de39029
<mailto:org.springframework.jmx.support.MBeanServerFactoryBean@5de39029> to
type javax.management.MBeanServer
at
org.apache.aries.blueprint.container.AggregateConverter.convert(_AggregateConverter.java:172_)[9:org.apache.aries.blueprint:0.3.2]
at
org.apache.aries.blueprint.container.BlueprintRepository.convert(_BlueprintRepository.java:373_)[9:org.apache.aries.blueprint:0.3.2]
at
org.apache.aries.blueprint.utils.ReflectionUtils$PropertyDescriptor.convert(_ReflectionUtils.java:322_)[9:org.apache.aries.blueprint:0.3.2]
at
org.apache.aries.blueprint.utils.ReflectionUtils$MethodPropertyDescriptor.internalSet(_ReflectionUtils.java:555_)[9:org.apache.aries.blueprint:0.3.2]
at
org.apache.aries.blueprint.utils.ReflectionUtils$PropertyDescriptor.set(_ReflectionUtils.java:306_)[9:org.apache.aries.blueprint:0.3.2]
at
org.apache.aries.blueprint.container.BeanRecipe.setProperty(_BeanRecipe.java:819_)[9:org.apache.aries.blueprint:0.3.2]
... 17 more
On first glance, nothing seems wrong with the setup, it’s as documented
<http://static.springsource.org/spring/docs/3.0.7.RELEASE/spring-framework-reference/html/jmx.html>
by Spring JMX.
Any ideas?
Martin