2013-11-01 148 views
0

的EJB按照java ee Tutorial可以通過jndi訪問EJB訪問JNDI查找

java:global[/application name]/module name/enterprise bean name[/interface name] 

我使用Jboss應用服務器,當我嘗試訪問EJB命名FirstBean它實現吶接口CustomerData用:

bean = (CustomerData) context.lookup("java:global/EJBTest/FirstBean/CustomerData"); 

拋出異常:

Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial 

如果我添加一行:

properties.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); 

它拋出一個其他異常:

No provider URL configured for connection 

我已經實現使用Jboss說明書中對其進行訪問:

bean = (CustomerData) context.lookup("ejb:/EJBTest//FirstBean!com.al.ejbtest.CustomerData"); 

如何使用標準的java ee speci來訪問它特別是只有斜槓而不是帶有exlamation標記?是否需要設置任何環境變量?

+0

什麼'Jboss'版本您使用? – Ilya

+0

jboss-as-7.1.1.final – arjacsoh

+0

從哪裏嘗試訪問EJB?如果您使用遠程ejb客戶端進行嘗試,則需要檢查該客戶端的文檔。例如https://docs.jboss.org/author/display/AS71/Remote+EJB+invocations+via+JNDI+-+EJB+client+API+or+remote-naming+project?_sscc=t –

回答

0

另外試試這個:

properties.put(javax.naming.Context.PROVIDER_URL, "jnp://127.0.0.1:1099");

+0

不,它確實不行。即使我嘗試更新:jndiProps.put(Context.PROVIDER_URL,「remote:// localhost:4447」); – arjacsoh