JMX:java.io.NotSerializableException:org.apache.camel.spring.SpringCamelContext

时间:2014-10-01 14:37:07

标签: java spring apache-camel jmx mbeans

我是JMX的新手。我正在使用Spring 4和JMX。我也在使用Apache Camel,并希望公开一个stop方法。我已经设置了所有内容,但是当在JConsole中单击MBean中的stop方法时,我得到以下异常:

Problem invoking stop : java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.io.WriteArbortedException:writing aborted:java.io.NotSerializableException: org.apache.camel.spring.SpringCamelContext

该项目位于GitHub:https://github.com/rajivj2/example2/

MBean代码的类位于com.example.config.ApacheCamelConfig.java

使用mvn clean install构建项目后,在命令提示符上运行以下命令:

java -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar server-app-jar-with-dependencies.jar

之后在Java JDK bin文件夹中打开jconsole并连接到server-app-jar-with-dependencies.jar。找到MBeans选项卡和stop方法。

我看不出我错在哪里。 SpringCamelContext由Apache Camel提供。

1 个答案:

答案 0 :(得分:0)

你不应该返回CamelContext - 它不可序列化。

将@Bean与@ManagedOperation分开 - 停止路由的操作应该有返回类型void