2012-03-20 2 views
0

안녕하세요 형제 코드!여러 모듈에 공통 EJB 클라이언트 JAR 동일 EAR

첫 번째 질문은 여기에 있으므로 모든 표준을 존중하도록 최선을 다할 것입니다. 내가 무엇이든 건너 뛰면 곧바로 고칠거야.

나는 응용 프로그램과 관련하여 취해야 할 접근법에 대해 혼란스러워합니다. 몇 가지 EJB 프로젝트와 JSF 프로젝트가 같은 EAR 아래에 있으며, 물론 모든 EJB 프로젝트에 대해 일부 로컬 인터페이스를 정의하고 싶습니다. 나는 EAO 패턴에 의해 insipierd 된 두 개의 모듈과 세션 Façade를 통해 bussiness 레이어에 대한 액세스 포인트를 가진 퍼시스턴스 레이어를 가지고있다.

제 생각에는 모든 클라이언트 인터페이스 (모든 EJB 클라이언트 항아리가 하나만 있다면 말입니다)와 엔티티가 구현할 모든 인터페이스를 포함하는 "SharedInterfaces"Jar를 만들어서 자체 프로젝트를 추상화 할 수 있습니다 (종속성 없음, 함께 작동하는 공통 인터페이스).

이 "SharedInterfaces"프로젝트를 모든 모듈에서 사용할 공통 EJB 클라이언트 Jar로 변환하려면 어떻게해야합니까? 다른 한편으로는 인터페이스 확장을 할 수 있으므로 프로젝트를 구성 할 필요가 없습니다.이 공통 프로젝트가 "모범 사례"접근법인지 확실하지 않습니다.

답변

1

글쎄, 나는 그것을 거의 알아 냈다.

SharedInterfaces 프로젝트는 일반적으로 사용되는 인터페이스를 정의하며 EJB 용 LocalInterface를 만들려고하면 해당 인터페이스를 비워두고 SharedInterfaces에 정의한 인터페이스를 확장하면됩니다. 컨테이너는 결국 인터페이스가 모든 인터페이스 (일종의)이므로 로컬 인터페이스를 처리하는 것처럼 보입니다.

간단히하기 위해 내가 한 일에 대한 간단한 예를 추가하겠습니다.

package org.myapp.managers; 

import javax.ejb.Local; 

@Local 
public interface UserManagerLI extends IUserManager{ 

} 

그런 다음, SharedInterfaces에 단순히 인터페이스 IUserManager 추가 : 이것은 내가 EJB에 대해 만든 로컬 인터페이스 그리고

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 

} 

물론 그가 노출하는 것에 대해주의해야합니다. 인터페이스를 서비스 계약으로 생각하면 액세스 할 수있는 권한이 부여되지 않은 기능에 액세스 할 수 없어야합니다.

관련 문제