Glassfish 为EJB提供JNDI
我已经创建了一个带有远程接口的EJB:Glassfish 为EJB提供JNDI,glassfish,ejb,jndi,Glassfish,Ejb,Jndi,我已经创建了一个带有远程接口的EJB: @Stateless public class TestSessionBean implements TestSessionRemote { public void businessMethod() { System.out.println ("***businessMethod"); } } 我希望通过以下方式从服务器上运行的另一个组件(例如servlet)访问它: ic = new Initial
@Stateless
public class TestSessionBean implements TestSessionRemote
{
public void businessMethod()
{
System.out.println ("***businessMethod");
}
}
我希望通过以下方式从服务器上运行的另一个组件(例如servlet)访问它:
ic = new InitialContext();
ic.lookup("myEJB");
我正在使用netBeans 6.5.1和glassfish v2
我该怎么做
谢谢,
实际上,ejb3使用了默认的命名约定,我还没有找到一种解决方法 您的bean的名称类似于: TestSessionBean#package.TestSessionBean 要访问远程服务,您可以执行以下操作
InitialContext ctx = new InitialContext();
ctx.lookup(interfaceClass.getSimpleName()+"#"+interfaceClass.getName());
其中interfaceClass是远程接口的类
请注意,您尚未为该Web服务器定义远程接口(或本地接口)。您可能无法从其他上下文访问EJB
至于改名,实际上我认为通过募捐是不可能的。不过不确定抱歉,差不多一个月后又重新出现了这个问题。在GlassFishV2中,您可以执行@Stateless(mappedName=“fooBean”),然后可以使用“fooBean”进行查找。这是特定于供应商的,不可移植。但是要小心,因为在GlassFish3(EJB3.1)中,这会改变一些。您仍然可以在远程接口查找中使用mappedName,但是现在有了一个标准化的java:全局命名设置。看看你是否还不够困惑。