我已經在war文件(不是ear文件)中部署了ejb。 我已經成功地使用了先前部署在ear文件中的ejb,但現在我得到了javax.naming.NameNotFoundException,因爲我的EJB託管在war文件中。如果我的web應用程序被稱爲SpeechServices,並且該bean在com.xyz.ejb包下,並且它的名稱是Service,那麼應該使用的JNDI查找字符串是什麼? 我現在正在使用以下內容。部署在JBOSS上的EJB的端點
ServiceRemote remote = (ServiceRemote) ct.lookup("SpeechServices/Service/remote-com.xyz.ejb.ServiceRemote");
請幫我糾正上述錯誤。
我完整的代碼如下,其工作方式連接到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