是否有一个较短的名称可以用来进行EJB的JNDI查找?

时间:2012-03-15 18:33:32

标签: ejb websphere

我有一个Java EE Web应用程序(WebSphere 7)。代码通过执行JDNI查找来查找应用服务器上的EJB。

在我的开发环境(Eclipse / IBM RAD)中,EAR项目称为customerEAR,因此JNDI查找是这样的:

ejblocal:customerEAR.ear/customerEJB.jar/CustomerService@com.mydomain.service.CustomerServiceLocal

但是当在生产应用程序服务器上部署EAR时,查找失败,并且日志文件指出EJB可用于:

ejblocal:server1-dev-customerEAR.ear/customerEJB.jar/CustomerService@com.mydomain.service.CustomerServiceLocal

将EAR部署到服务器的人实际上是可以将eAR文件从customerEAR.ear重命名为server1-dev-customerEAR.jar - 或者WebSphere可能会在部署时重命名?我无法抓住部署人员确定。

但是,无论如何,我的问题是:

是否有更简洁的方法来查找EJB?比如,使用较短的查找名称,或“相对路径”而不是“完整路径”?

非常感谢任何建议,谢谢!

罗布

3 个答案:

答案 0 :(得分:1)

您可以使用bean类中的注释为远程EJB定义名称,或者在ejb-jar.xml中定义它。

@Stateless(mappedName = "TestBean")
@Remote(TestBeanRemote.class)
public class TestBean implements TestBeanRemote 
{
    //...
}

在客户端查找:

TestBeanRemote testBeanRemote = (TestBeanRemote)new InitialContext().lookup("TestBean");

如果您不使用“mappedName”,某些应用程序服务器会为您的Bean名称添加一些后缀以自动生成名称。因此,最好使用“mappedName”来定义服务器无关。

答案 1 :(得分:1)

如果你想要更短的名字,create an ibm-ejb-jar-bnd.xml并指定一个绑定而不是将它留给产品来生成一个明确的名称。请参阅标题为“绑定文件示例1”的部分。

根据您是否有多个EJB实现您的接口,您还可以使用“简短形式”绑定。请参阅标题为“默认绑定模式”的部分。

答案 2 :(得分:0)

由于部署人员在部署之前坚持重命名我的EAR,我设法让它工作,我设法通过缩短它来实现它:

ejblocal:customerEAR.ear/customerEJB.jar/CustomerService@com.mydomain.service.CustomerServiceLocal

到此:

ejblocal:com.mydomain.service.CustomerServiceLocal