注册camel的ftp jpa Idempotent存储库时出错

时间:2012-08-23 18:28:58

标签: jmx apache-camel idempotent

我正在尝试按照http://camel.apache.org/file2.html所述的方式实现jpa idempotent存储库,但我收到了Mbean导出错误。

在我的application-context.xml上,我有以下部分。

<bean id="mvStore" class="org.apache.camel.processor.idempotent.jpa.JpaMessageIdRepository" lazy-init="false">
        <!-- Here we refer to the spring jpaTemplate -->
        <constructor-arg index="0" ref="jpaTemplate" />
        <!-- This 2nd parameter is the name (= a cateogry name). You can have different repositories with different names -->
        <constructor-arg index="1" value="FileConsumer" />
    </bean>
<context:mbean-server id="mbeanServer" />
<context:mbean-export server="mbeanServer" registration="replaceExisting" default-domain="br.com.touchtec"/>

如果我删除上面的部分比服务器(tomcat)启动就好了。有人可以帮我吗?

这是堆栈:

Caused by: org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [org.apache.camel.processor.idempotent.jpa.JpaMessageIdRepository@6df960c4] with key 'mvStore'; nested exception is javax.management.MalformedObjectNameException: Key properties cannot be empty
    at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:602)
    at org.springframework.jmx.export.MBeanExporter.registerBeans(MBeanExporter.java:527)
    at org.springframework.jmx.export.MBeanExporter.afterPropertiesSet(MBeanExporter.java:413)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
    ... 50 more

Caused by: javax.management.MalformedObjectNameException: Key properties cannot be empty
    at javax.management.ObjectName.construct(ObjectName.java:467)
    at javax.management.ObjectName.<init>(ObjectName.java:1403)
    at javax.management.ObjectName.getInstance(ObjectName.java:1285)
    at org.springframework.jmx.support.ObjectNameManager.getInstance(ObjectNameManager.java:62)
    at org.springframework.jmx.export.naming.MetadataNamingStrategy.getObjectName(MetadataNamingStrategy.java:114)
    at org.springframework.jmx.export.MBeanExporter.getObjectName(MBeanExporter.java:728)
    at org.springframework.jmx.export.MBeanExporter.registerBeanInstance(MBeanExporter.java:631)
    at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:592)
    ... 54 more

1 个答案:

答案 0 :(得分:0)

首先,我希望你清楚jmx部分没有必要使Idempotent Repository工作。您的错误是纯JMX / Spring错误,未与Camel链接。

如果你想使用MBeanExporter,你应该阅读Spring JMX上的官方文档,以更好地理解这个问题。

您的MBeanExporter定义可能类似于

<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter">
    <property name="beans">
      <map>
        <entry key="bean:name=mvStore" value-ref="mvStore"/>
      </map>
    </property>
    <property name="server" ref="mbeanServer"/>
  </bean>
相关问题