私は、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));
驚いたことに、グローバルJNDIネームスペースとしてバインドされているため、接続文字列は "Service/remote-com.ecw.ejb.ServiceRemote"に追加するアプリ名はありませんでしたか?これは良いか悪いですか? – Sap
私はそれに問題が表示されません。ところで、デフォルトのものが気に入らなければ、あなた自身のJNDI名を提供することができます。カスタム名の場合、LocalBinding/RemoteBindingアノテーションまたはそれに相当するXMLを使用する必要があります。 – helios
解決策があなたのために働いた場合、答えを受け入れることができます: – helios