目前我有一個將 JMS 發送ObjectMessage到 ActiveMQ 目的地的應用程序。這些消息均派生自類base。但是,我需要在某些派生類和基類之間添加一個類,所以 class middleextends base?,F在,所有擴展的消息都middle無法發送,出現以下錯誤:26 18:53:04.524 [ListenerContainer-1] WARN - Execution of JMS message listener failedjava.lang.NoClassDefFoundError: com/google/protobuf/ProtocolMessageEnum at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) at java.lang.ClassLoader.defineClass(ClassLoader.java:615) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197)...Caused by: java.lang.ClassNotFoundException: com.google.protobuf.ProtocolMessageEnum at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306)不擴展中間的消息仍然有效,只有從middlenow 派生的消息導致問題。任何幫助表示贊賞。謝謝!編輯:發送由session.createObjectMessage(msg)where msgis of type處理base。
1 回答

守著星空守著你
TA貢獻1799條經驗 獲得超8個贊
鑒于您正在發送 JMS,ObjectMessage
在我看來,您的客戶端在類路徑上根本沒有正確的類來反序列化消息。確??蛻舳嗽谄漕惵窂缴暇哂小爸虚g”類和任何新參數類型。至少他們需要com.google.protobuf.ProtocolMessageEnum
(如異常所示)。
就其價值而言,JMSObjectMessage
通常會因為這個和其他原因而被避免。發送原始字節緩沖區或一些簡單的對象表示(例如 XML、JSON 等)而不是實際的 Java 對象通常更簡單。此外,Java 序列化和反序列化速度非常慢,這種模式也可能使您的應用程序面臨安全漏洞。
添加回答
舉報
0/150
提交
取消