2013-11-01 118 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