2012-03-20 54 views
0

代碼中的兄弟們!EAR下的各種模塊的公共EJB客戶機Jar

這裏的第一個問題,我會盡我所能去尊重所有的標準。糾正我,如果我跳過任何東西,我會立即修復它。

我對我應該採取的方法感到困惑。我在同一個EAR下有幾個EJB項目和JSF項目,當然,我想爲所有EJB項目定義一些本地接口。我有一個持久層,其中包含EAO模式的一些模塊以及通過會話外觀到達業務層的接入點。

我的意圖是製作一個包含所有客戶端界面(如果必須說明的話,所有EJB客戶端界面在一箇中)的「SharedInterfaces」Jar以及實體將實現的所有界面,以便我可以在他們自己之間抽象項目(沒有依賴關係,只有通用接口才能一起工作)。

如何將此「SharedInterfaces」項目轉換爲所有模塊都將使用的通用EJB CLient Jar?另一方面,我可以做一些接口擴展,所以我不需要配置一個項目......但我不確定這個常見項目是否採用「最佳實踐」方法。

回答

1

嗯,我幾乎想通了自己。

SharedInterfaces項目定義了常用的接口,當我想爲EJB創建一個LocalInterface時,只需將該接口留空並擴展我在SharedInterfaces上定義的接口即可。容器似乎處理它,因爲界面畢竟是一個本地接口(有點)。

只是爲了清楚起見,我會添加一個我做過的簡單示例。這是本地接口,我爲EJB創建:

package org.myapp.managers; 

import javax.ejb.Local; 

@Local 
public interface UserManagerLI extends IUserManager{ 

} 

然後,在SharedInterfaces我只需添加接口IUserManager:

public interface IUserManager { 

    public IUser newUser(); 
    public void saveOrUpdate(IUser u, boolean hashPass);  
    public void deleteUser(IUser u);  
    public boolean checkUserAvailability(String username); 
    public IUser getUser(String username); 

} 

然後,要使用它,我只是做了注射和往常一樣:

@ManagedBean 
@SessionScoped 
public class LogInBean { 

    @EJB 
    private IUserManager userManager; 

     // Attributes, Setters, Getters and methods 

} 

當然,每個人都應該小心什麼,他揭露。將界面視爲服務合同,人們不應該能夠訪問他不會被訪問的功能。