離れたサーバーの MQ キューをリッスンする EJB3 MDB に取り組んでいます。MDB によって行われる処理を除いて、すべて正常に動作しています (メッセージがリッスン キューに入れられると MDB がトリガーされます)。詳細については、WMQ リソース アダプターを使用してキューをマップします。
MDB のメソッド「onMessage」に、指定されたメッセージをクラス「com.ibm.jms.JMSBytesMessage」にキャストしようとしましたが、奇妙なエラー メッセージが表示されます。
コードは次のとおりです (この例では単純です)。
public void onMessage(Message theMessage) {
((JMSBytesMessage) theMessage).readBytes(myBytes);
}
そして例外メッセージ:
入力要求の読み取り中に例外が発生しました: com.ibm.jms.JMSBytesMessage は com.ibm.jms.JMSBytesMessage と互換性がありません
わかりました。受信したメッセージは「com.ibm.jms.JMSBytesMessage」タイプであるはずですが、なぜアプリケーションが機能しないのでしょうか? JBoss サーバーが別のバージョンのライブラリー 'com.ibm.mqjms.jar' (JMSBytesMessage クラスを含む) を既に使用していて、この種のエラーが発生する可能性はありますか?
ps: Linux システムの JBoss サーバー バージョン 4.2.3 にアプリケーションをデプロイしました。同じバージョンの JBoss サーバーを使用しているが、ウィンドウ システム (同じ構成、同じライブラリなど) を使用しているローカル マシンで、アプリケーションを既に動作させています。
誰かがそのようなエラーの理由について考えを持っていますか?
助けてくれてありがとう。
よろしく、
編集: 解決策: com.ibm.jms.JMSBytesMessage の代わりに javax.jms.BytesMessage でキャストする