我是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提供。
答案 0 :(得分:0)
你不应该返回CamelContext - 它不可序列化。
将@Bean与@ManagedOperation分开 - 停止路由的操作应该有返回类型void