2011-10-04 4 views
0

Weblogic 용 defaultWM을 사용하는 서블릿이 있습니다. 이 서블릿은 차례로 ejb를 호출합니다. 이 ejb는 다른 WM (WM_EJB)과 연결됩니다. 내가 알고 싶은 것은 쓰레드가 서블릿을 통해 처리되게되면 서블릿은 defaultWM을 사용하고 동일한 WM 컨텍스트를 ejb 호출로 전달 하는가? 또는 스위치가 있습니까?Weblogic WorkManager 정책 (ejb-jar와의 전쟁)

  1. ServletA에 대한 외부 요청 - ServletA는
  2. ServletA 프로세스가 요청하고 EJB.helloWorld 전화 DefaultWM로 구성되어 있습니다()
  3. EJB.helloWOrld은() WM_EJB의 workmanager로 구성되어

전체 프로세스가 DefaultWM을 사용하거나 EJB.helloWorld() 호출시 전환합니까?

다른 답변이 있으면 WM 응답에 대한 답변을 찾을 수 없습니다.

답변

1

나는 이것에 대해 조사를 해왔다. Weblogic *이 DefaultWM에서 구성 요소의 WorkManager로 EJB_WM *이 정의 되었다면 전환 할 것이라고 대답했다.

실행 스레드는 동일하게 유지되므로 요청이 들어 오면 동일한 스레드가 서블릿을 실행 한 다음 EJB를 실행합니다. weblogic-ejb-jar.xml에, 나는 로그를 보여주는를 볼 수 있습니다 만

<work-manager> 
     <name>WorkManagerA</name> 
     <max-threads-constraint> 
      <name>MyMaxThreadCount</name> 
      <count>1</count> 
     </max-threads-constraint> 
    </work-manager> 

은 EJB이 제약 조건을 정의한 반면, 내 샘플 응용 프로그램에서

, 나는, index.jsp가 50 동시 호출을 발사 해요 이제 index.jsp를

INDEX.JSP - Current ThreadName Is: [ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)' 

INDEX.JSP - Current ThreadName Is: [ACTIVE] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)' 

내에서 서로 다른 쓰레드 6, 8이 병렬 전화 좀 더 로그 문

Calling EJB from index.jsp 1317985368088[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)' 
Start EJB 1317985368088[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)' 
end EJB 1317985368088[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)' 

Calling EJB from index.jsp 1317985368088[ACTIVE] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)' 
Start EJB 1317985368104[ACTIVE] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)' 
end EJB 1317985368104[ACTIVE] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)' 

타임 스탬프 (System.currentTimeMillis())가 표시되면 index.jsp가 Thread 6 및 8에서 1317985368088과 동시에 호출되지만 System.out.println 문은 "Start EJB"및 "End EJB" 스레드 6 및 8에 대해 다른 타임 스탬프를가집니다. 이는 EJB 내에서 발생합니다.

이것은 EJB WorkManager가 병렬 스레드 수를 한 번에 하나씩 제한하는 작업을 수행하고 있음을 보여줍니다.