2011-07-25 16 views
1

私は、earファイルではなくwarファイルにejbをデプロイしました。 以前はearファイルにデプロイされたejbを正常に消費しましたが、EJBがwarファイルでホストされているため、javax.naming.NameNotFoundExceptionが発生しています。私のWebアプリケーションがSpeechServicesと呼ばれ、Beanがcom.xyz.ejbパッケージの下にあり、その名前がServiceの場合、JNDIの参照文字列は何を使用する必要がありますか? 私は今、次のものを使用しています。JBOSSにデプロイされたEJBのエンドポイント

上記の声明でエラーを修正するのを手伝ってください。彼らは耳にしている場合はEJBに接続するために働く私の完全なコードは以下の通りです

 Properties env = new Properties(); 
     env.put(Context.INITIAL_CONTEXT_FACTORY, 
       "org.jnp.interfaces.NamingContextFactory"); 
     env.put(Context.URL_PKG_PREFIXES, 
       "org.jboss.naming:org.jnp.interfaces"); 
     env.put(Context.PROVIDER_URL, "jnp://localhost:1099"); 
     env.put(Context.SECURITY_PRINCIPAL, "admin"); 
     env.put(Context.SECURITY_CREDENTIALS, "admin"); 
     env.setProperty(Context.INITIAL_CONTEXT_FACTORY, 
       "org.jboss.security.jndi.JndiLoginInitialContextFactory"); 
     InitialContext ct = new InitialContext(env); 
     ServiceRemote remote = (ServiceRemote) ct.lookup("SpeechServices/Service/remote-com.xyz.ejb.ServiceRemote"); 
     System.out.println(remote.parseNotes(null, null, null)); 

答えて

0

は、あなたが右キーを使用していることを確認するためにJNDIを確認してください。これを行うには:

  1. アクセスのJBoss:サービス= JNDIViewをJMXコンソールで
  2. 呼び出すリストを()メソッドは
  3. あなたのEJBが正しくバインドされているかどうかを確認し、キーを使用していることを確認します正しい
+0

驚いたことに、グローバルJNDIネームスペースとしてバインドされているため、接続文字列は "Service/remote-com.ecw.ejb.ServiceRemote"に追加するアプリ名はありませんでしたか?これは良いか悪いですか? – Sap

+0

私はそれに問題が表示されません。ところで、デフォルトのものが気に入らなければ、あなた自身のJNDI名を提供することができます。カスタム名の場合、LocalBinding/RemoteBindingアノテーションまたはそれに相当するXMLを使用する必要があります。 – helios

+0

解決策があなたのために働いた場合、答えを受け入れることができます: – helios

0

は、使用するのweb.xmlを更新していることを確認している

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0"> 

私の仕様では、web.xmlでEJBがJava EE 6の方法で処理されないと処理されないという仕様があると思います。

+0

これはすでにそこにあります – Sap