ActiveMQキューにキューイングされているメッセージの内容を確認したい。 web-console。( http:// localhost:8161/admin/queues.jsp )を開き、キューのメッセージのmessage-idをクリックしました。メッセージの内容ではなく、「メッセージの詳細」ウィンドウに次のエラーが表示されます。
"javax.jms.JMSException:コンテンツから本体をビルドできませんでした。ブローカーはシリアライズ可能なクラスを使用できません。理由:Java.lang.ClassNotFoundException:"
この例外の原因は何ですか?これを取り除くために何をする必要がありますか?
ActiveMQバージョン5.8.0を使用してこれと同じエラーが発生しました
私の場合は red herring でしたが、ActiveMQコンソールはメッセージを逆シリアル化できませんでした。クラスが含まれているjarにアクセスしてはいけませんが、コンシューマーアプリケーションはアクセスでき、メッセージは渡されます。キューからコンシューマーに問題なくオンになります。
ここで問題の解決策があるかどうか(コンソールでメッセージを表示する)、およびActiveMQの最新バージョンでこれがどのように処理されるかを確認したいと思います。
OwIRが述べたように、クラスを含むjarファイルのパスをwrapper.Java.classpath.3
の%ACTIVEMQ_HOME%\bin\win64\wrapper.conf
プロパティに設定する必要があります。
上記のプロパティを更新した後、以下の例外が発生する可能性があります
Serializable class not available to broker. Reason: Java.lang.ClassNotFoundException: Forbidden class
これを修正するには、wrapper.Java.additional.13
プロパティを-Dorg.Apache.activemq.SERIALIZABLE_PACKAGES="<choose_the_packages_set_it_here>"
に設定します。
値として-Dorg.Apache.activemq.SERIALIZABLE_PACKAGES="*"
を使用することもできますが、ワイルドカードを使用するのは安全でない場合があります。
これは私のために働いた!それがあなたを助けることを願っています