大部头上的绝地查找
JNDI lookup on TomEE
您好,在同一个 TomEE 服务器上有一个 Web 项目和一个 EJB 项目运行。
我已经在 TomEE 服务器的 apps 文件夹中部署了 EJB 项目,并且可以在服务器启动时看到 EJB 正在启动。
INFO: Jndi(name=DefaultRegistrationProcess) --> Ejb(deployment-id=DefaultRegistrationProcess)
下面是 EJB 项目中的 @Stateless
个 bean
@Stateless(name = "DefaultRegistrationProcess")
public class DefaultRegistrationProcess implements RegistrationProcess {
@Override
public void process(Registration registration) {
System.out.println("Hello from Default registration process!");
}
}
我想从 Web 项目对 DefaultRegistrationProcess bean 进行 JNDI 查找。
通过 maven 将 EJB 与 Web 项目打包我可以使用以下代码进行 JNDI 查找。
new InitialContext().lookup("java:module/DefaultRegistrationProcess");
在单独部署 EJB 时尝试执行相同的调用时,我得到
Exception occured: Name "module/DefaultRegistrationProcess" not found.
我浏览了 http://tomee.apache.org/documentation.html 站点并尝试了一些示例,但我仍然遇到错误。
当 EJB 部署在同一个 TomEE 服务器上时,如何从 Web 项目内部执行本地 JNDI 查找?
我必须将@Remote 添加到我的 DefaultRegistrationProcess
class 实现的业务界面。
@Remote
public interface RegistrationProcess {
public void process(Registration registration);
}
之后,我可以使用 LocalInitialContextFactory
属性 和 DefaultRegistrationProcessRemote
的 JNDI 名称进行 JNDI 查找。
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"org.apache.openejb.core.LocalInitialContextFactory");
new InitialContext(p).lookup("DefaultRegistrationProcessRemote");
您好,在同一个 TomEE 服务器上有一个 Web 项目和一个 EJB 项目运行。
我已经在 TomEE 服务器的 apps 文件夹中部署了 EJB 项目,并且可以在服务器启动时看到 EJB 正在启动。
INFO: Jndi(name=DefaultRegistrationProcess) --> Ejb(deployment-id=DefaultRegistrationProcess)
下面是 EJB 项目中的 @Stateless
个 bean
@Stateless(name = "DefaultRegistrationProcess")
public class DefaultRegistrationProcess implements RegistrationProcess {
@Override
public void process(Registration registration) {
System.out.println("Hello from Default registration process!");
}
}
我想从 Web 项目对 DefaultRegistrationProcess bean 进行 JNDI 查找。
通过 maven 将 EJB 与 Web 项目打包我可以使用以下代码进行 JNDI 查找。
new InitialContext().lookup("java:module/DefaultRegistrationProcess");
在单独部署 EJB 时尝试执行相同的调用时,我得到
Exception occured: Name "module/DefaultRegistrationProcess" not found.
我浏览了 http://tomee.apache.org/documentation.html 站点并尝试了一些示例,但我仍然遇到错误。
当 EJB 部署在同一个 TomEE 服务器上时,如何从 Web 项目内部执行本地 JNDI 查找?
我必须将@Remote 添加到我的 DefaultRegistrationProcess
class 实现的业务界面。
@Remote
public interface RegistrationProcess {
public void process(Registration registration);
}
之后,我可以使用 LocalInitialContextFactory
属性 和 DefaultRegistrationProcessRemote
的 JNDI 名称进行 JNDI 查找。
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"org.apache.openejb.core.LocalInitialContextFactory");
new InitialContext(p).lookup("DefaultRegistrationProcessRemote");