2017-12-01 5 views
0

저는 일부 비즈니스 메소드를 호출하고이 서블릿 프로세스의 모든 요청마다 고유 한 트랜잭션 ID를 생성해야한다는 서블릿을 가지고 있습니다. 이 트랜잭션 ID를 비즈니스 메소드에 전달해야한다.서블릿에서 매개 변수로 데이터를 보내지 않고 서블릿에서 비즈니스 메소드를 호출하는 방법이 있습니까?

한 가지 해결 방법은이 트랜잭션 ID를 매개 변수로 모든 비즈니스 메서드에 전달하는 것입니다. 그러나 코드가 중복되고 불필요하기 때문에 이것은 좋은 해결책이 아닙니다.

+0

id를 속성에 할당하고 모든 곳에 액세스하십시오. – Satya

+0

매개 변수없이 전달해야하는 서블릿이 있다고 가정 할 때 접근 방법을 찾고 있습니다. 해당 메소드에서 transactionid 또는 다른 특성 (loguserName 및 role)을 얻는 방법 – Rohit

+0

특성 파일에서 특성을 정의하십시오. 이제는 getProperty()를 사용하여 전쟁 내의 모든 서블릿/클래스에서 액세스 할 수 있습니다. 좋은 데? – Satya

답변

0

서블릿에 스레드 로컬 변수로 추가하고 다른 곳에서 액세스 할 수 있습니다. 들어오는 각 요청은 새 스레드를 생성하고 스레드 로컬 변수는 해당 스레드에만 국한됩니다.

+0

답해 주셔서 감사합니다. 사용자 로컬 값을 저장하기 위해 스레드 로컬을 사용했습니다. – Rohit

0

ThreadLocal을 사용하여이 문제를 해결했습니다.

스레드 로컬은 요청 범위 또는 세션 범위와 같은 액세스 범위로 간주 될 수 있습니다. 스레드 범위입니다. Thread Local에있는 객체를 설정할 수 있으며이 객체는이 객체에 액세스하는 특정 스레드에 대해 전역 및 로컬이됩니다. 이 문제를 해결하기 위해 this article을 언급했습니다.