简体   繁体   English

JNDI LOOKUP错误Tomee OpenEJB NameNotFoundException

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM