2011-02-02 9 views
1

最終的にメッセージをキューに入れるアクティビティの単体テストを書きました。メッセージがそのキューに入れられるとすぐに、メッセージ駆動型Beanが処理を開始します。しかし、単体テストでMDBをテストしたくありません。 OpenEJBにそれらを無視するようにどのように伝えることができますか?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

+0

このプロパティは、クラスパス内の個々のクラスをフィルタリングせず、実際のクラスパス自体をフィルタリングします。私。 jarファイルとディレクトリは、展開される「モジュール」になります。個々のクラスにinclude/excludeを行うには、同様の機能が必要です。信じられないほど役に立つだろう。 –

答えて

1

ちょうど私の2セント:

  • Loading Deployments from the Classpathから".*org/example/mdb.*" or ".*org.example.mdb.*"
  • を試してみてください。

    注デフォルトでは、これらの設定は のみOpenEJBのは、注釈付きコンポーネントの スキャン時に無意志jarファイルその影響します 記述子が見つかりました。あなたも記述子が含まれていません アウトjarをフィルタリングするために、これらの設定を使用するように を希望の場合は、 はtrueに

    openejb.deployments.classpath.filter.descriptors

    プロパティを設定します。デフォルトは

+1

これは最初の式 "。* org/example/mdb。*"です。 OpenEJBはclasspathの値に基づいてクラスを除外していますので、 "/"を区切りとして使用する必要があります。あなたのケースでは、別のオプションが "。*/MyMDB。*"になることがあります。あるいは、 "。* /。* MyMDB。*"というメッセージ駆動型Beanの接尾辞として "MDB" – magarciaschopohl

1

偽である私たちは、その機能を持っていないが、あなたは少しハッキングをやってみたかった場合、それを簡単に追加することができ - 新たな貢献と貢献者は常に歓迎されています。

This classは、あなたが望んでいないだろうと思ういくつかのことを行います:)すべてのMDBとJMSリソース参照(良い部分)を取り除き、すべてのエンティティBeanと永続性ユニット参照(おそらくあなたが望まない部分)。私たちは、ActiveMQまたはOpenJPAのいずれかがロードされたときに、デバッグの問題が発生したために書きました。もしあなたがそれをきれいにするなら、私たちはそれを喜んで元に戻し、それを機能としてサポートします。

strips out all web servicesと同様の機能があります。特定のシステムプロパティが設定されている場合はConfigurationFactoryにインストールされます。すべての注釈およびXMLメタデータもある(一つのオブジェクト・ツリーにマージされるのOpenEJBにので実際にConfigurationFactory

で基本的に同じ場所で同様のフラグを使用して「MDB & JMS」除去をプラグインすることは容易であるべきですJAXBツリー)、実際に展開される前に、かなり強力な変換を行うことができます。たとえば、モックバージョンのために特定のBeanを交換するとします。

私は優れた機能を発揮すると思いますが、まだ作業する時間はありませんでした。私。私たちが配備のためにそれを送る直前に、人々が木を混乱させるためのクリーンなフックをいくつか作りました。これを読んでいる人なら誰でもジャンプして、それを突き刺すことができます(これはオープンソースです!)。

関連する問題