2012-04-10 9 views
1

私はOpenEJB(TomEE ++)コンテナを持つEJBプロジェクトに取り組んでいます。 JNDI参照名をコードで制御する必要があるセッションBeanがあります。OpenEJBでステートレスセッションBeanの名前を制御する

@Stateless(mappedName="SlideService", name="SlideService") 
public class SlideService { 

    public Map<Category, List<SlideShow>> fetchSlideShowsBycategory() { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    public SlideShow fetchSlideShow(long id) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    public List<SlideShow> fetchSlideShowsByTitle(String title) { 
     // TODO Auto-generated method stub 
     return null; 
    } 
} 

私の問題は、このBeanがバインドされます先の名前がある、という点である「グローバル/スライド/ SlideService」

OpenEJBのは、私は具体的に言及していないにもかかわらず、アプリケーション名を使用しているように見えます。

これは移植性を損なうでしょうか?他のコンテナがアプリケーション名を使用しない可能性がありますか?

名前とマップされた属性は、ステートレスBeanの名前を制御する正しい方法を使用していますか、それとも他の(より良い)方法がありますか?

答えて

2

問題はEJB 3.1仕様で解決されています。Java EE 6認定コンテナであれば、Beanに複数のJNDI名が使用されます。ここにあなたが名前の最後の部分を制御することができ、あなたのコードで 、ドキュメントに関するPortable Global JNDI Names

ここでは、そうです、あなたのコードがポータブルになりますJNDI Portable JNDI names in EJB 3.1

の3つの標準スコープに簡単なガイドを見つけることができます任意のJava EE 6認定コンテナを介して

関連する問題