2014-09-29 4 views
2

유스 케이스가 있는데, 이론적으로는 해결 된 문제 일 것입니다. 하지만 확실히 해고 된 구현을 찾을 수는 없습니다.트랜잭션 당 하나의 객체 인스턴스

  1. 아파치 CXF, 스프링을 사용하여 편안하고 API를 생성하고이 응용 프로그램은
  2. 내가 내 서비스에서 사용자 정의 로거 객체를 생성 할 필요가 표준 서비스 - 프록시 DAO 계층 구조를 포함
  3. 최대 절전했습니다 (또는 pre-service) 레이어를 만들고, 응용 프로그램 계층을 거쳐 돌아 오는 모든 호출을 통해 대부분 유지되는 일련의 매개 변수를 초기화합니다.
  4. 어떻게 개별 서비스 호출마다이 로거 객체를 한 번 초기화하고 매 순간마다 인스턴스화 할 필요없이 모든 레이어에서 사용할 수 있습니다. 어느 것이 든 필요한 모든 클래스에 초기화 된 객체를 삽입하거나 그 행에 무엇인가 삽입합니다.
  5. 정적 블록을 사용하거나 메소드 서명에서 객체를 전달하고 싶지 않습니다.

스프링, CXF 또는이 유스 케이스를 구현할 수있는 다른 자바 프레임 워크의 일부로 사용할 수있는 것이 있습니까?

EDIT : 트랜잭션을 호출에서 응답으로 웹 서비스 엔드 포인트에 대한 단일 호출로 정의합니다.

+0

혹시 AOP에 대해 들어 보셨습니까? 그렇지 않다면 http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/aop.html을 읽어 보면됩니다.하지만 시간이 좀 걸릴 것입니다. 모든 것을 올바르게하기. – blagae

답변

4

ThreadLocal은 문제를 해결하는 데 이상적인 후보자입니다.

UPDATE :

이 "공유"참조 주위에 참조를 전달하지 않고 모든 상황이 자원에 액세스 할 수 있습니다 요구되는 모든 장소에서 사용할 로컬 스레드를 생성.

http://www.appneta.com/blog/introduction-to-javas-threadlocal-storage/ 참조 - 로컬 스레드를 사용하는 방법과 문제 공간을 처리하는 방법에 대한 좋은 설명처럼 보입니다.

+1

대답을 확장하고 싶을 수도 있습니다 – kolossus

+0

확장 된 대답 –

관련 문제