自从x时间开始,我就陷入了如何在JSF应用程序的托管bean中注入远程EJB的问题。 我已经创建了一个简单的Java应用程序,并且我已经使用查找来注入远程EJB ...并且它可以工作。 但是当我来到网络应用程序时,我真的不知道该怎么做!!!
这是我的EJB代码:
@Stateless
public class Hello implements HelloRemote {
@Override
public String sayHello(String name) {
return "Hello, "+name;
}
}
远程接口是
@Remote
public interface HelloRemote {
public String sayHello(String name);
}
在我的网络应用程序中,我创建了我的托管bean:
@ManagedBean
public class MyBean {
@EJB
HelloRemote helloRemote;
}
但它不起作用:(
答案 0 :(得分:0)
如果要在本地公开EJB,则必须在Interface上使用@Local
。
如果要在本地和远程公开,则必须创建2个接口,一个使用@Local
,另一个使用@Remote
。
如果您的JSF ManagedBean(MyBean)在本地运行,即在与EJB相同的App服务器上运行,您可以使用@EJB
直接注入它。
如果您的JSF ManagedBean在不同的服务器上运行,则必须使用 JNDI Registry 来查找和访问EJB。