JavaEE:EJB实体,Web独立

JavaEE:EJB实体,Web独立,java,web,ejb,entity,Java,Web,Ejb,Entity,你能告诉我怎么做最好吗? 如果我只有接口,如何在web应用程序上创建实体的新实例 我有: EJB(3.1)项目 网络项目 我有一个EJB项目,如: User.java UserManagerBean.java UserManager.java 在web应用程序(一个独立的web应用程序)中,我有: UserManager.java User.java 现在。。在豆子里。。。我正在尝试从远程上下文获取我的bean并使用它们: //ctx is created with the specific

你能告诉我怎么做最好吗? 如果我只有接口,如何在web应用程序上创建实体的新实例

我有:

  • EJB(3.1)项目
  • 网络项目
我有一个EJB项目,如:

User.java

UserManagerBean.java

UserManager.java

在web应用程序(一个独立的web应用程序)中,我有:

UserManager.java

User.java

现在。。在豆子里。。。我正在尝试从远程上下文获取我的bean并使用它们:

//ctx is created with the specific properties to access remote context..
InitialContext ctx = new InitialContext();
userManager = (UserManager)ctx.lookup("java:global/project/projectEJB/UserManagerBean");

User user = userManager.getUserById(1); //working

User new_user = (User)ctx.lookup("java:global/project/projectEJB/User"); //not working
//I know this is not supposed to work.. but how can I do this?
我知道您无法获取实体的实例,因为它不是ejb。。。 我是否必须创建一个普通的用户类,在projectEJB上拥有everying as?难道没有更好的解决办法吗? 还有什么其他的解决方案?我搜索了谷歌,似乎每个人都知道怎么做。。只是我不


提前感谢您。

实体bean不应该直接在web层中创建-因为要使它们持久化,您需要
EntityManager
,它不能保证线程安全(这在servlet上下文中很重要)


您可能想做的是编写一个DAO EJB,使用一个方法创建一个新用户,在servlet中注入/查找它,然后调用它。谷歌搜索“GenericDAO”模式开始。

要创建用户对象,只需使用“new”操作符创建一个常规Java实例,然后调用EJB调用

User myNewUser = new User();
userManager.addUser(myNewUser);
客户端(web应用程序)和服务器端(EJB3.1项目)都必须知道如何序列化和反序列化用户对象,因此每一方都必须能够访问用户类和EJB接口

在打包方面,您可以将EJB接口和用户实体类都捆绑到一个JAR中,供客户端和服务器端使用


另一种部署是将web应用程序和EJB捆绑到部署在同一JVM中的单个应用程序中。

我的用户管理器不是已经是DAO了吗?您的建议是为我的实体类创建一个dao——setters和getter。。。对吗?@user969812-Hmmm,我无法知道UserManagerBean是否是一个DAO。如果它只作用于用户实体,则可能是。当然,您可以创建一个带有“new”的实体,但是持久化应该在EJB端进行。另一个提示:您可以将“addUser”的返回类型更改为User,并返回新持久化的实体。
@Local
@Remote
public interface UserManager {
    //methods here
}
public interface UserManager {
    //methods here
}
public interface User {
    //methods here
}
//ctx is created with the specific properties to access remote context..
InitialContext ctx = new InitialContext();
userManager = (UserManager)ctx.lookup("java:global/project/projectEJB/UserManagerBean");

User user = userManager.getUserById(1); //working

User new_user = (User)ctx.lookup("java:global/project/projectEJB/User"); //not working
//I know this is not supposed to work.. but how can I do this?
User myNewUser = new User();
userManager.addUser(myNewUser);