내 응용 프로그램은 각 호출의 고유 식별자를 추적해야하는 로깅 구성 요소를 사용합니다.자바 스레드의 고유 ID
출발점은 분명히 여러 클래스에 대한 일련의 메소드 호출을 시작하는 MDB입니다. 각 클래스는 log4j와 비슷한 새로운 logger-object를 작성하고이를 사용하여 이벤트를 데이터베이스에 기록합니다. 그리고 생성 된 로거 객체마다 고유 한 식별자가 할당됩니다. 이 식별자는 후속 호출이 모두 반환되고 내 MDB의 onMessage 메서드가 종료 될 때까지 스레드를 따라야합니다.
하나의 JmsMessage를 처리하는 동안 다른 메시지가 MDB에 수신되고 내 ID가 섞여서 문제가 발생합니다.
저는 책상을 머리에 대고 머리를 숙이고있었습니다. 나는 그 대답이 내 앞에 있다는 것을 알았지 만 아이디어가 있습니까? 첫 번째 작업이 완료되기 전에 다른 프로세스가 시작된 경우에도 "프로세스"가 자체 ID를 사용하여 기록 할 수 있도록하려면 어떻게해야합니까?
미리 감사드립니다.
대부분의 Java EE 서버는 요청을 처리하기 위해 스레드 풀을 사용하므로 메시지 당 스레드 ID가 고유하지 않습니다. –
@Peter Lawrey'Thread.currentThread(). getName()'을 사용할 때,'weblogic.kernel.Default (self-tuning) '>'와 같이'Thread name : [ACTIVE] ExecuteThread :'4 ' 출력, 이것은별로 도움이되지 않습니다. 'Thread.currentThread(). getId()'는 두 자리수의 int를 제공하는데, 이것은 내가 찾고있는 것보다 약간 적습니다. – Morten
스레드에 좀 더 의미있는 이름을 지정해야합니다. 자동으로하지 않으려면 의미있는 이름을 만들어야합니다. –