簡體   English   中英

Java EE:EJB實體,Web Standalone

[英]Java EE: EJB Entity, Web Standalone

你能告訴我最好怎么辦? 如果我只有接口,如何在Web應用程序上創建實體的新實例..

我有 :

  • EJB(3.1)項目
  • 網絡項目

我有一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM