2013-04-04 140 views
0

我有一个小的EAR-JEE6-应用程序,它由3个模块(EAR + EJB + WEB)组成。 共有3个文件:ear,jar和war - ear-file包含jar和war文件。我想在两台不同的机器(IP-1和IP-2)上设置2个glassfish服务器,我想在IP-1上部署EJB(jar文件),而在WEB(战争文件)在IP-2上。部署到Glassfish的多个实例,分解我的EAR

我的Web项目有一个servlet,它依赖于EJB项目中的无状态bean,注入。我无法理解这一点。

Web项目如何在EJB项目中找到无状态bean? 我需要某种查询服务,这是'全球'(我可以输入所有IP地址) - 只是在这里猜测。

这可能吗?

回答

1

您可以使用Java命名和目录接口(JNDI)执行此操作。

你必须手动查找您的豆在这样的方式:

Context ic = new InitialContext(); 
Object o = ic.lookup("java:comp/env/ejb/Foo"); 

更详细一点可以在这里找到:Accessing EJB Components in a Remote GlassFish Serverthis stackoverflow question

+0

Thanks.But如果我将这些行放在Servlet中,如果它部署在另一个IP地址上,它将如何找到'java:comp/env/ejb/Foo'? – InKi 2013-04-04 10:18:47

+0

try { InitialContext context = new InitialContext(); CapitalBeanRemote bean =(CapitalBeanRemote)context.lookup( “java:global/RemoteEJBModule/CapitalBean”); messageTextField.setText(bean.getCapital(“Japan”)); context.close(); (例外e){ e.printStackTrace(); } Web项目必须依赖于EJB项目,因为CapitalBeanRemote是EJB项目的一部分? – InKi 2013-04-04 10:25:29