2012-03-28 11 views
0

Weblogic開発環境(Oracle Workshop for WebLogic 10.3)では、どのように役立つかの助けが必要です。Oracle Workshop for WebLogicでEJBを別のEJBから参照する方法は?

私は1つの.jarにセッションBeanを持っており、別の.jarのメッセージ駆動型BeanからそのセッションBeanを使用する必要があります。セッションBeanを検索するときに "java:comp/env/..."表記を使用したいと思います。

jndiCtx = new InitialContext(); 
workerHome = (WorkerSBLocalHome) jndiCtx.lookup("java:comp/env/ejb/WorkerSBLocalHome"); 
WorkerSBLocal worker = workerHome.create(); 

したがって、私は、MDBコンポーネントのデプロイメント・ディスクリプタ(ejb-jar.xml)でEJB参照を作成する必要があります。

<ejb-local-ref> 
    <ejb-ref-name>ejb/WorkerSBLocalHome</ejb-ref-name> 
    <ejb-ref-type>Session</ejb-ref-type> 
    <local-home>test.WorkerSBLocalHome</local-home> 
    <local>test.WorkerSBLocal</local> 
    <ejb-link>WorkerEJB.jar#WorkerSB</ejb-link> 
</ejb-local-ref> 

これは動作します(テスト)。 問題は、MDBデプロイメント・ディスクリプタが生成され、MDBソースを編集するたびに、Oracle Annotationsを使用してデプロイメント・ディスクリプタが再生成され、追加が上書きされることです。

私の質問は、Oracle Workshop for WLで作業するときに、MDBからEJBを参照する最良の方法は何ですか?あるいは、上で概説したアノテーションよりもejbアノテーションを使用するときに、Bean参照を作成する他の方法がありますか?あるいは私は別の場所に私のbean参照を置くべきですか?

答えて

0

生成されたデプロイメント記述子を手動で編集する方法はありません(変更を緩和したくない場合)。しかし、アノテーションを使ってコンテンツを指定することはできます。

@EjbLocalRef(name="ejb/WorkerSBLocalHome", type=Constants.RefType.SESSION, 
    home="test.WorkerSBLocalHome", local="test.WorkerSBLocal", 
    link="WorkerEJB.jar#WorkerSB") 
@MessageDriven(ejbName = "HelloWorldMDB", 
    destinationJndiName="jms.RequestQueue", destinationType = "javax.jms.Queue") 
public class Test extends GenericMessageDrivenBean implements 
    MessageDrivenBean, MessageListener { 
    ..... 
    jndiCtx = new InitialContext(); 
    workerHome = (WorkerSBLocalHome) jndiCtx.lookup("java:comp/env/ejb/WorkerSBLocalHome"); 
    WorkerSBLocal worker = workerHome.create(); 
    ..... 
} 

このアプローチは、まだコードで具体的なJNDI名を指定するように強制していますが、常にデプロイメント時に生成されたデプロイメント記述内容を変更することができます。

関連する問題