[英]JNDI LOOKUP Error Tomee OpenEJB NameNotFoundException
Hi i am Working with openEJB in Tomee jaxrs(1.7.4) server, i have a Web project and a EJB project running on the same TomEE sever. 嗨,我在Tomee jaxrs(1.7.4)服务器中使用openEJB,我有一个Web项目和一个EJB项目在同一TomEE服务器上运行。
I have deployed the EJB project in the webapps folder of the TomEE server and can see the EJB's are starting when the server starts. 我已经在TomEE服务器的webapps文件夹中部署了EJB项目,并且可以在服务器启动时看到EJB正在启动。
INFO: Enterprise application "C:\Apache_Software\OPEN_EJB\Server\webapps\OpenEjbServer" loaded.
Sep 08, 2016 10:08:39 AM org.apache.openejb.assembler.classic.Assembler createApplication
INFO: Assembling app: C:\Apache_Software\OPEN_EJB\Server\webapps\OpenEjbServer
Sep 08, 2016 10:08:39 AM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=calcRemote) --> Ejb(deployment-id=calc)
Sep 08, 2016 10:08:39 AM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=global/OpenEjbServer/calc!org.superbiz.stateless.basic.CalculatorBeanRemote) --> Ejb(deployment-id=calc)
Sep 08, 2016 10:08:39 AM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=global/OpenEjbServer/calc) --> Ejb(deployment-id=calc)
Sep 08, 2016 10:08:39 AM org.apache.openejb.cdi.CdiBuilder initSingleton
Below is one of the @Stateless beans in the EJB project 以下是EJB项目中的@Stateless bean之一
@Remote
public interface CalculatorBeanRemote {
public int add(int a, int b);
}
@Stateless
public class CalculatorBean implements CalculatorBeanRemote {
@Override
public int add(int a, int b) {
return a + b;
}
}
from EJB project using servlet I can do the JNDI Lookup using the following code. 使用servlet从EJB项目中进行操作,我可以使用以下代码进行JNDI查找。
Properties p = new Properties();
p.put("java.naming.factory.initial","org.apache.openejb.client.LocalInitialContextFactory");
p.put("java.naming.provider.url", "ejbd://localhost:4201");
Context remoteContext = new InitialContext(p);
try {
Object ojb = remoteContext.lookup("calcRemote");
}catch(Exception e){}
When trying to do the same call when the EJB is deploy separately I get 当尝试在单独部署EJB时执行相同的调用时,我得到
javax.naming.NameNotFoundException: Name "calcRemote" not found.
at org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:197)
at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:151)
at org.apache.openejb.core.ivm.naming.ContextWrapper.lookup(ContextWrapper.java:115)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
How can I do a local or remote JNDI Lookup from Web project to the EJB when it is deployed on the same TomEE server or different TomEE Server? 将Web项目部署在相同的TomEE服务器或不同的TomEE服务器上时,如何从Web项目到EJB进行本地或远程JNDI查找?
What could be cause of this error? 可能导致此错误的原因是什么? Appreciate any help 感谢任何帮助
您将Local用于远程 bean,因此它不起作用,而不是将LocalInitialContextFactory切换到远程bean,请查看http://tomee.apache.org/clients.html以获得详细信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.