[英]Java EE: EJB Entity, Web Standalone
你能告訴我最好怎么辦? 如果我只有接口,如何在Web應用程序上創建實體的新實例..
我有 :
我有一個EJB項目,如:
@Entity
public class User {
//variables.. getters and setters...
}
@Stateful
public class UserManagerBean implements UserManager {
//getters and setters...
//.......
public void addUser(User user) {
//implemented here
}
//.......
}
@Local
@Remote
public interface UserManager {
//methods here
}
在Web應用程序(獨立的Web應用程序)中,我有:
public interface UserManager {
//methods here
}
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上一樣? 是不是有更好的解決方案? 還有哪些其他解決方案? 我搜索谷歌,似乎每個人都知道如何做到這一點..只有我不...
先感謝您..
實體bean不應該直接在Web層中創建 - 因為要使它們持久存在,您需要EntityManager
,這不能保證是線程安全的(這在servlet上下文中很重要)。
您可能想要做的是編寫一個DAO EJB,其方法是創建一個新用戶,在servlet中注入/查找它,然后調用它。 谷歌以“GenericDAO”模式開始。
要創建User對象,只需使用'new'運算符創建常規Java實例,然后調用EJB調用。
User myNewUser = new User();
userManager.addUser(myNewUser);
客戶端(您的Web應用程序)和服務器端(EJB 3.1項目)都必須知道如何序列化和反序列化User對象,因此每一方都必須能夠訪問User類和EJB接口。
在打包方面,您可以將EJB接口和User實體類全部捆綁到客戶端和服務器端使用的單個JAR中。
另一種部署方式是將Web應用程序和EJB捆綁到同一JVM內部署的單個應用程序中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.