2011-09-07 4 views
1

디자인에 대한 의견 및 전문가의 조언을 원합니다.JSF 기반 프런트 엔드에서 제 3 자 메소드를 호출하는이 디자인을 어떻게 개선 할 수 있습니까?

JSF2 및 EJB3을 사용하여 응용 프로그램을 개발 중이며 이 아니며 CDI를 사용하여입니다.

다른 팀의 API (jar)가 주어졌으며 세 가지 주요 방법이 있습니다. 하나는 데이터베이스를 검색하고 자동차 목록을 반환하고 하나는 푸시 바이크 목록을 반환하고 하나는 보트 목록을 반환합니다.
기본적으로 우리는 서로 다른 차량 목록을 세 가지 가지고 있습니다.

Ui 측 사용자는 자동차, 푸시 바이크 또는 보트 용 라디오를 검색하려는 차량의 각 유형별로 3 개의 라디오 버튼이있는 검색 양식을 가지고 있습니다. 그런 다음 동일한 페이지에 세 개의 개별 섹션이 모두 표시됩니다. 사용자는 사용자가 자동차 목록을 원할 경우 검색 할 내용에 대한 세부 정보를 제공 할 수 있습니다. 등록 번호를 제공하거나 모델을 작성하는 옵션이 있으며 사용자가 보트 입력 필드를 검색하려면 이름에 대한 세부 정보를 제공해야합니다. 보트 또는 선착장 등.
하나의 검색 버튼이 있습니다. 이제이 항아리에 액세스하여 레이어를 배치하고 결과를 표시하는 방법에 대한 조언을 원합니다.
다음은 내가 접근하는 방법입니다.
SearchBean은 JSF 관리 Bean입니다.
세 클래스가 있습니다. CarSearchRequest, PushBikeSearchRequestBoatSearchRequest 각각에 search() 메소드가 있습니다.
그런 다음 세 개의 상태 비 저장 세션빈이 있습니다. CarDAO, PushBikeDAOBoatDAO이 DAO는 각각 지정된 jar의 메소드 호출을 호출합니다. CarDAO은 자동차를 반환하는 API 등을 호출합니다.
위의 세 Request 클래스는 각각 private 기본 생성자를 가지고 있으며 public 생성자 만이 각각의 DAO를 인수로 취합니다.
그런 다음 내 SearchBean에서 EJB 인 세 DAO를 주입하고 @PostConstruct 메서드에서 세 개의 요청 객체를 모두 초기화하고 DAO를 생성자에 전달합니다.
화면에서 검색 버튼 다음이에서 문이 검사를 필요가 없습니다 좋은 디자인을 검색하면 내가이 싫어이

public void search() 
{ 
    //Vehicle is an enum whose value is selected by radi button 
    if(this.vehicle.isCar()) 
    { 
    carRequest.search(); 
    } 
    else if(this.vehicle.isPushBike()) 
    { 
    pushBikeRequest.search(); 
    } 
    //boat checks and calls here ... 

} 

같은 것입니다 검색 (searchBean의) 메소드를 호출합니다.
요청 객체에서 anti-pattern을 사용하여 DAO 검색을 호출하는 것은 확실하지 않습니다.이 방법이 좋은 방법입니까?
다시 말해서 제대로 작동하지 않는 6 개의 클래스 (3 개의 요청 개체 및 3 개의 DAO)를 만드는 것처럼 보입니다. 각 검색 구현이 다르기 때문에 제네릭으로 벗어날 수없는 것 같습니다.

누군가가 나에게 더 나은 접근법이나 관련 조언을 제공 할 수 있습니까?

답변

0

JSF2 및 EJB3을 사용하여 응용 프로그램을 개발 중이며 CDI를 사용하지 않습니다.

조언은 CDI와 관련이 있습니다. 왜 그것을 사용하지 않기로 결정 했습니까? CDI를 사용하지 않으면 JSF 웹 개발에서 JEE6이 제공하는 가장 근본적인 두 가지 새로운 서비스 인 컨텍스트 및 종속성 삽입이 손실됩니다. EJB 3.1에서만 독점적으로 작업 할 수 있지만 가능한 가장 단순한 솔루션으로 끝나지는 않을 것입니다. CDI로 시작하면 트랜잭션, jmx, 풀링 등과 같은 다른 요구 사항이 필요합니다. EJB가 당신을 구해줍니다.

+0

시간은 있지만 내게는 묻지 않습니다. –

관련 문제