部署在mule 3.6.2 ee中使用Hazelcast的mule应用程序时出现Hazelcast ClassCastException

部署在mule 3.6.2 ee中使用Hazelcast的mule应用程序时出现Hazelcast ClassCastException,mule,hazelcast,Mule,Hazelcast,我正在尝试部署一个Mule应用程序,它使用Hazelcast缓存一些常用方法的结果。但是,在部署应用程序时,我遇到以下错误: java.lang.ClassCastException: Cannot cast com.hazelcast.client.txn.ClientTxnPortableHook to com.hazelcast.nio.serialization.PortableHook at java.lang.Class.cast(Class.java:3176) ~[?:1.7.

我正在尝试部署一个Mule应用程序,它使用Hazelcast缓存一些常用方法的结果。但是,在部署应用程序时,我遇到以下错误:

java.lang.ClassCastException: Cannot cast com.hazelcast.client.txn.ClientTxnPortableHook to com.hazelcast.nio.serialization.PortableHook 
at java.lang.Class.cast(Class.java:3176) ~[?:1.7.0_79] 
at com.hazelcast.util.ServiceLoader$1.next(ServiceLoader.java:97) ~[hazelcast-3.1.6.jar:3.1.6] 
at com.hazelcast.nio.serialization.PortableHookLoader.load(PortableHookLoader.java:48) ~[hazelcast-3.1.6.jar:3.1.6] 
at com.hazelcast.nio.serialization.PortableHookLoader.(PortableHookLoader.java:41) ~[hazelcast-3.1.6.jar:3.1.6] 
我试图通过在
mule deploy.properties
中放置下一个设置来使用加载程序覆盖功能:

loader.override=-com.hazelcast

Mule应用程序使用Hazelcast 3.5,Mule 3.6.2 EE使用Hazelcast 3.1.6。您能告诉我一个可能的解决方案吗?

我已经查看了Enrique()提供的链接,它很有用,因为有两个不同的类路径,但在解决问题时还需要考虑其他方面:

  • Hazelcast的版本不同。Mule应用程序使用Hazelcast 3.5,Mule 3.6.2 EE使用Hazelcast 3.1.6

  • mule服务器中没有Hazelcast的日志配置

  • 因为我真的需要使用Hazelcast 3.5,所以不能选择将Hazelcast降级到3.1.6。因此,我不得不将mule服务器中的Hazelcast版本替换为3.5,并从mule应用程序中删除该库。然后我不得不做了很多测试来消除可能的不兼容性问题。试验是成功的

    对于mule服务器中Hazelcast的日志配置,我必须向mule服务器包装器添加下一个JVM参数:

    wrapper.java.additional.44=-Dhazelcast.logging.type=log4j

    我使用“log4j”是因为我使用的是Log4j2。您可以在下一个链接中查看有关此配置的更多信息:

    这可能会有所帮助: