1

最終的にメッセージをキューに入れるアクティビティの単体テストを作成しました。メッセージがそのキューに入れられるとすぐに、メッセージ駆動型 Bean が処理を開始します。しかし、単体テストで MDB をテストしたくありません。それらを無視するように OpenEJB に指示するにはどうすればよいですか?

いくつかのプロパティを使用して OpenEJB をセットアップしました。

    p.setProperty(Context.INITIAL_CONTEXT_FACTORY,
            "org.apache.openejb.client.LocalInitialContextFactory");
    p.setProperty("openejb.deployments.classpath.include", ".*");
    p.setProperty("openejb.localcopy", "false");

    // Messaging
    p.put("MyJmsResourceAdapter",
            "new://Resource?type=ActiveMQResourceAdapter");
    // Do not start the ActiveMQ broker
    p.put("MyJmsResourceAdapter.BrokerXmlConfig", "");
    p.put("MyJmsConnectionFactory",
            "new://Resource?type=javax.jms.ConnectionFactory");
    p.put("MyJmsConnectionFactory.ResourceAdapter", "MyJmsResourceAdapter");
    p.put("queue/MyQueue",
            "new://Resource?type=javax.jms.Queue");

を設定する必要があることはわかってopenejb.deployments.classpath.excludeいますが、正しい値がわかりません。

    p.setProperty("openejb.deployments.classpath.exclude", "org.example.mdb.*");

たとえば、私のクラスの名前はorg.example.mdb.MyMDB.

4

2 に答える 2

1

この機能はありませんが、少しハッキングしたい場合は簡単に追加できます。新しい投稿や投稿者はいつでも歓迎します。

このクラスは、あなたが望むことを正確に実行します...そしておそらくあなたが望まないいくつかのこと:)それはすべてのMDBとJMSリソース参照(良い部分)を取り除き、すべてのエンティティBeanと永続性ユニット参照(おそらく望まない部分)。ActiveMQまたはOpenJPAのいずれかがロードされたときに発生したデバッグの問題のために作成しました。クリーンアップした場合は、喜んで元に戻し、機能としてサポートします。

すべてのWebサービスを取り除く同様の機能があります。特定のシステムプロパティが設定されている場合は、 ConfigurationFactoryにインストールされます。基本的に同じ場所で同様のフラグを使用して「MDB&JMS」リムーバーを簡単にプラグインできるはずです。ConfigurationFactory

実際、OpenEJBではすべてのアノテーションとxmlメタデータが1つのオブジェクトツリー(これはJAXBツリーでもあります)にマージされるため、実際にデプロイする前にアプリの非常に強力な変換を行うことができます。たとえば、特定のBeanをモックバージョンに交換するとします。

それらの1つは優れた機能になると思いますが、まだ作業する時間がありません。つまり、展開のためにツリーを送信する直前に、人々がツリーを台無しにするためのクリーンなフックを作成します。これを読んでいる人は誰でも、飛び込んでそれを突き刺すことができます(イェーイオープンソース!)。

于 2011-03-20T03:48:43.630 に答える
1

ちょうど私の 2 セント:

  • 試す ".*org/example/mdb.*" or ".*org.example.mdb.*"
  • クラスパスからのデプロイメントのロードから:

    デフォルトでは、これらの設定は、記述子が見つからない場合に OpenEJB がアノテーション付きコンポーネントをスキャンする jar にのみ影響することに注意してください。これらの設定を使用して、記述子を含む jar も除外する場合は、

    openejb.deployments.classpath.filter.descriptors

    プロパティを true にします。デフォルトはfalseです

于 2011-02-21T19:16:43.723 に答える