2012-03-16 2 views
3

Eclipse 3.7 IDEを使用してEJB2.0を作成し、それをJBoss 5アプリケーションサーバーにデプロイしました(私のbean nameは製品です)。私は通常のコンテキストルックアップ(そしてejbを呼び出すための他のもの)をやっていて、EJBを正常に呼び出すことができます。今、私の質問はJNDIの名前と正確には同じものです。私のBean名はJNDI名か、これは私のJNDI名 - >org.jnp.interfaces.NamingContextFactoryです。この?????のJNDI名はどこにありますか? 私のコード: -コード内のJNDI名はどこですか?

// initial code............. 
Context ctx = getContext(); 
Object obj=ctx.lookup("Product"); 
ProductHome home =(ProductHome) javax.rmi.PortableRemoteObject.narrow(obj,ProductHome.class); 
ProductRemote remote=home.create(); 

Product prd = new rohit.Product("PRDCamera",001,50.50) ; 
remote.addProduct(prd); 
remote.updateProduct(prd); 
remote.removeProduct(001); 
remote.findProduct(001); 
remote.findAllProduct(); 


// getContext Method 

public static InitialContext getContext() throws Exception{ 
    Properties pro = new Properties(); 
    pro.put(javax.naming.InitialContext.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory"); 
    pro.put(javax.naming.InitialContext.PROVIDER_URL,"localhost:1099"); 
    return new InitialContext(pro); 
} 

答えて

3

JNDI名はあなたのコードではありません。

Object ejbHome = initialContext.lookup("java:comp/env/com/mycorp/MyEJB"); 

MyHome myHome = (MyHome)javax.rmi.PortableRemoteObject.narrow(
    (org.omg.CORBA.Object)ejbHome, MyHome.class); 

JNDI名はこのケースでjava:comp/env/com/mycorp/MyEJBです:

これはEJB 2.0でEJBをルックアップする方法です。あまり正気のEJB 3.0では

、あなただけ

MyEJB myEJB = initialContext.lookup("java:comp/env/com/mycorp/MyEJB") 

を行うと、ひどいホームインタフェースの考え方を廃止。

+0

ありがとうございます。したがって、このJNDI名はサーバー固有のものです。 JBossやWEBLogic Serverを使用している場合と同様に、JNDI名はこれらの2つのサーバーで異なるでしょうか?そして、私のコードの上のgetContextメソッドで使用される "org.jnp.interfaces.NamingContextFactory"は何ですか? –

+0

@RohitElayathuいいえ、JNDI名は標準化されています。デフォルトでcom.mycorp.MyEJBクラスのEJBの場合はjava:comp/env/com/mycorp/MyEJBです。ただし、初期コンテキストファクトリの実装クラスは独自のものです。 –

+0

これは、コードが私が参照しているファイルにある方法です。 'public final static String JNDI_NAME =" myproj/Status "; public final static String EJB_NAME = "myprojStatus"; ' **ここではステータスがInterfaceであり、myprojという名前のディレクトリを作成し、Status Interfaceを配置する必要があります。 JNDI_NAMEはパスですか?** – JavaDragon

関連する問題