在 mule 3.6.2 ee 中部署使用 Hazelcast 的 mule 应用程序时出现 Hazelcast ClassCastException
Hazelcast ClassCastException when deploying a mule application that uses Hazelcast in mule 3.6.2 ee
我正在尝试部署一个 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.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 (ClassCastException when casting to the same class)提供的link,它很有用,因为有两个不同的类路径,但在解决问题时还有其他方面需要考虑:
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 的日志配置,我必须将下一个 JVM 参数添加到 mule 服务器包装器中:
wrapper.java.additional.44=-Dhazelcast.logging.type=log4j
我使用 "log4j" 因为我使用的是 Log4j2。您可以在接下来的 link 中查看有关此配置的更多信息:
http://docs.hazelcast.org/docs/3.5/manual/html/logging.html
我正在尝试部署一个 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.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 (ClassCastException when casting to the same class)提供的link,它很有用,因为有两个不同的类路径,但在解决问题时还有其他方面需要考虑:
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 的日志配置,我必须将下一个 JVM 参数添加到 mule 服务器包装器中:
wrapper.java.additional.44=-Dhazelcast.logging.type=log4j
我使用 "log4j" 因为我使用的是 Log4j2。您可以在接下来的 link 中查看有关此配置的更多信息: http://docs.hazelcast.org/docs/3.5/manual/html/logging.html