我希望在一个TomEE服务器实例中使用JSF 2.0页面调用在不同TomEE服务器下运行的远程EJB(两者显然都在不同的端口上运行)。
这就是我在日食中所做的......
AppEJB - 是一个包含所有ejb代码的EJB项目
AppEJBInterfaces - 该项目包含所有远程接口,其思路是将这个jar添加到包含JSF前端的Web应用程序项目的类路径中。
AppWeb - 是包含JSF前端的动态Web应用程序项目。
AppEAR - 包含AppEJB。
以下是AppEJB中的ejb
@Stateless(name="UserManager")
@LocalBean
public class UserManagerImpl implements UserManager {
public void createUser(User user) {
}
}
以下是AppEJBInterfaces中的远程接口
@Remote
public interface UserManager {
public void createUser(User user);
}
这就是我在JSF托管bean中所做的事情
@ManagedBean
@SessionScoped
public class UserLoginManager implements Serializable{
@EJB(mappedName="UserManager")
UserManager userManager;
}
我在eclipse中创建了一个服务器,并将其指向TomEE 1.6 plus安装。我已将WebApp添加到服务器。当我右键单击服务器时,我没有看到添加AppEAR项目的选项,所以我遇到的问题是
如何将EJB项目或AppEAR添加/部署到服务器(eclipse中的TomEE)? 如何让JSF托管bean查找远程EJB? 如果我们假设我将ejbs转换为本地bean如何指定jndi names / config?
答案 0 :(得分:1)
实际上,TomEE实现了JavaEE 6 Full Profile的大部分内容(它未经过认证,但在TomEE +中可用,例如JAXWS,JAXRS,JMS,Connector ......)。 @Remote EJB处于webprofile ditribution。
要查找,您可以使用RemoteInitialContextFactory或TomEE远程EJB注入功能(不可移植)。
请参阅http://tomee.apache.org/clients.html和http://tomee.apache.org/ejb-refs.html(页面末尾)
编辑:你可以使用tomee将ear或ejbmodule部署到tomee(参见tomee.xml)。只需将二进制内容放在你将在tomee home中创建的apps文件夹中