문제

방금 완성 된 프로젝트에서 나는 분산 거래 작업을하고있었습니다.

우리는 Jboss의 Arjuna Transaction Manager와 Spring의 선언 거래 경계를 사용하여이를 구현했습니다.

우리의 요청 순서는 다음과 같습니다.

browser -> secured servlet -> 'wafer-thin' SLSB -> spring TX-aware proxy -> request-handler POJO

이것이 의미하는 바는 우리가 안전한 서블릿과 SLSB에 봉사하기위한 귀를 섬기기위한 전쟁이 있다는 것입니다.

우리의 SLSB에는 스프링 응용 프로그램 컨텍스트를 부트 스트랩 할 수있는 정적 초기화 블록이있었습니다.

나는 기술의 혼합을 좋아하지 않지만, 다른 물리적 위치에 상주 할 수있는 프레젠테이션과 비즈니스 계층의 분리를 좋아합니다.

스프링을 사용할 때 다른 사람들이 티어를 분리하기 위해 제안하는 것을 알고 싶습니까?

도움이 되었습니까?

해결책

외관 인 SLSB를 위해 EJB3 앱 서버를 요구하는 것은 나에게 노력할 가치가없는 것처럼 보이지 않습니다. 당신이 그것을 제거 할 수 없었고 서블릿이 봄과 직접 일할 수 없었습니다. ContextLoaderListener를 전쟁에 추가하여 ApplicationContext를로드 한 다음 WebApplicationContextUtils를 추가하여이를 얻을 수 있습니다. 또는 SpringMVC, Struts 또는 기타 웹 기술을 사용할 수 있습니다. Servlet 자체가 허용하는 것보다 더 많은 일을 해야하는 경우.

다른 팁

매우 일반적인 접근 방식은 웹 계층, 서비스 계층 및 DAO 계층을 정의하고 서비스 계층에 트랜잭션 의미를 첨부하는 것입니다. 예를 들어 서비스 계층은 예를 들어 @transactional 주석이있는 많은 pojos 일 수 있습니다. 웹 계층은 Spring Web MVC 컨트롤러 일 수 있습니다. 이 접근법에서 웹 계층은 본질적으로 서비스 계층을 HTTP에 적용하고 있습니다. 좋은 분리와 SLSB가 필요하지 않습니다.

그래도 논쟁의 한 가지 영역은 직원이나 구매자와 같은 도메인 개체와 관련이 있습니다. 이러한 범위의 적용 계층과 주석으로 발생하는 것으로 보이는 한 가지는 도메인 객체가 특정 계층과 관련된 주석을 얻는다는 것입니다. 따라서 여기에 ORM 주석이있을 수 있지만 병렬 도메인/양식 객체 클래스를 피하는 방법으로 동일한 도메인 객체를 양식 지원 Bean과 사용하십시오. 어떤 사람들은 그 문제에 대한 건축 적 분리를 위반하는 것으로 반대합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top