你能告诉我怎么做最好吗? 如果我只有接口(interface),如何在 Web 应用程序上创建实体的新实例..
我有:
- EJB(3.1) 项目
- 网络项目
我有一个 EJB 项目,例如:
User.java
@Entity
public class User {
//variables.. getters and setters...
}
UserManagerBean.java
@Stateful
public class UserManagerBean implements UserManager {
//getters and setters...
//.......
public void addUser(User user) {
//implemented here
}
//.......
}
UserManager.java
@Local
@Remote
public interface UserManager {
//methods here
}
在网络应用程序(独立的网络应用程序)中,我有这个:
UserManager.java
public interface UserManager {
//methods here
}
User.java
public interface User {
//methods here
}
现在..在一个bean中...我试图从远程上下文获取我的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 上的一样?难道就没有更好的解决办法吗? 还有哪些其他解决方案?我搜索了谷歌,似乎每个人都知道如何做到这一点..只有我不知道...
提前谢谢您..
最佳答案
要创建 User 对象,您只需使用“new”运算符创建一个常规 Java 实例,然后调用您的 EJB 调用。
User myNewUser = new User();
userManager.addUser(myNewUser);
客户端(您的 Web 应用程序)和服务器端(EJB 3.1 项目)都必须知道如何序列化和反序列化 User 对象,因此每一方都必须有权访问 User 类和 EJB 接口(interface)。
在打包方面,您可以将 EJB 接口(interface)和用户实体类全部捆绑到客户端和服务器端都使用的单个 JAR 中。
另一种部署是将 Web 应用程序和 EJB 捆绑到部署在同一 JVM 内的单个应用程序中。
关于Java EE : EJB Entity, Web 独立版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7588804/