0

질문하기 전에 응용 프로그램 구축 방법을 설명해야합니다.외관/서비스 아키텍처

우리는 서비스 계층에서 ejb를 사용하는 여러 웹 응용 프로그램을 실행합니다. 나는 간단한 예제와 통신을 설명하려고 :

  • JSF 콩 (PersonHandler)는 외관 다양한 서비스를 사용할 수 있지만, 다른 외관을 사용할 수 없습니다
  • 는 "사람"개체를 삭제하는 외관을 호출합니다. 이 경우 PersonFacade는 PersonService (사람을 삭제)와 NotificationService (전자 메일 보내기)를 사용합니다. 또한 거래는 정면 논리에 의해 제어됩니다. 전자 메일은 트랜잭션이 성공적으로 커밋 된 경우에만 보내야합니다.
  • 서비스에는 다른 서비스 또는 외관에 대한 참조가있을 수 없습니다. 이 대신에 PersonService는 PersonDao (지속 논리)에 대한 참조 만 갖는다.

이 아키텍처는 매우 일반적이라고 생각합니다. 여기에 내 질문이있다.

PersonFacade의 삭제 방법에는 중복되지 않는 중요한 코드가 있습니다. 사람을 삭제해야 할 때마다이 코드가 실행되어야합니다. 다른 Facade 로직에서는 똑같은 코드가 필요하지만 외관은 < -> Facade 통신이 허용되지 않습니다.

이 문제를 해결하는 가장 좋은 해결책은 무엇입니까?

Heres 현재 솔루션이지만 만족스럽지 않습니다. 나는 삭제 로직을 처리하는 ejb를 가진 새로운 ejb 모듈을 만들었다. 두 정면 모듈 모두 새로운 모듈에 대한 의존성을 가지기 때문에 모든 것이 발견되고 "정면은 결코 다른 정면을 사용하지 마십시오"계약을 깨뜨리지 않습니다. 우리가 다른 장소에서 동일한 코드를 필요로 할 때마다 이것을 사용하면 모듈이 폭발하고 모듈이 혼란스러워집니다. 현재 우리는 250 개 이상의 ejb/jar 모듈을 보유하고 있습니다.

답변

0

다음은 두 가지 옵션입니다.

  1. 는 외관이 호출 할 수 있다는 헬퍼 클래스 (유틸리티)에 대한 모든 외관의가에서 확장하는 기본 외관 일반적인 논리, 또는
  2. 이동 일반적인 논리를 가지고. 새로운 ejb를 작성하여 이미 비슷한 일을하고있는 것을 보았습니다. 나는 그것이 ejb 일 필요가 있는지 확실하지 않다. 정확한 논리에 달려있다.