現在、私は Weblogic 10R3 による Java EE アプリケーション ホストを持っています。1 つのメッセージ駆動型 Bean をテストすることに興味があります。問題は、Bean がリッスンしている外部 JMS サーバーにアクセスできないことです。MDB コードは次のとおりです。
import static com.citi.primefinance.utils.jms.ForeignJMSConstants.Queue.INCOMING_QUEUE_SWIFT_FX;
@MessageDriven(name = "IncomingSwiftFxProcessorMDB", mappedName = INCOMING_QUEUE_SWIFT_FX)
public class IncomingSwiftFxProcessorMDB extends AbstractMessageDrivenBean {
@Override
protected void processMessage(Serializable obj) throws Exception{
debug(this.getClass().getName() + ".processMessage()");
if (obj instanceof String) {
info(this.getClass().getName() + ": received on Message object");
processSwiftFxTradeMessage((String)obj);
} else {
error(this.getClass().getName() + ": received an object " + obj + " which is not a TextMessage");
}
}
私の計画は、Bean が JNDI によってキューをルックアップするためであり、私は Weblogic ホスティング サーバーにアクセスできます。したがって、外部 JMS サーバーを削除してから、正確な JNDI 名を保持するローカル jms キューと connectionFactory を追加できます。したがって、外部依存を分離します。
人々はそれがもっともらしいと思いますか?または誰かが別のアイデアを持っていますか? また、モッキングを使用して JMS への依存関係をまとめて分離することも考えていました。
どんな助けでも大歓迎です、ありがとう
メッセージ Bean が「ホット」スワップを処理できないことを示す Weblogic ログは次のとおりですか?
incomingSwiftFxProcessorMDB が JMS 宛先 IncomingSwiftFxQueue に接続できません。エラー: メッセージ駆動型 EJB は、JNDI 名: SwiftConnectionFactory で JMS 接続ファクトリーに接続しようとしました。ただし、JNDI 名が SwiftConnectionFactory のオブジェクトは JMS 接続ファクトリーではありません。NestedException メッセージは :weblogic.jms.client.JMSConnectionFactory> です