2011-10-13 1 views
0

Ok Apache Axis2 및 Spring Framework를 사용하고 있습니다. 기본적으로 WebServiceHandler 클래스는 모든 웹 서비스 작업을 노출 한 클래스입니다. 따라서 요청이 들어 오면이 클래스가 호출됩니다. 모든 요청에 ​​대해 Tomcat 또는 Axis2는 새 스레드를 만들어야한다는 것을 이해합니다. 그러나 "Thread.currentThread(). getId()"및 "Thread.currentThread(). getName()"은 항상 동일한 ID와 이름을가집니다.Apache Axis2 및 Spring 스레드

나는 3 개의 SessionFactories를 생성하고 현재 스레드 모델을 사용하여 쿼리를 실행하여 전체 시스템이 실제로 느려지 게하기 때문에 Hibernate를 사용하기 때문에 DAO에서 문제가 발생한다고 생각한다.

DAO 클래스를 호출하기 전에 모든 작업에 대해 새 스레드를 생성 할 수 있지만 아직 시도하지 않았습니다. Axis2 또는 Spring의 구성을 통해이를 해결하는 방법은 무엇입니까? 감사. 아래에있는 내 applicationContext.xml의

부 : 이것은 바람둥이 (또는 웹 컨테이너)에 의해 처리됩니다

<!-- Axis2 Web Service, but to Spring, its just another bean that has dependencies --> 
<bean id="springContext" class="com.ws.beans.spring.SpringContext"/> 

<bean id="springAwareService" class="com.ws.beans.WebServiceHandler" > 
    <constructor-arg ref="springContext" /> 
</bean> 

답변

0

. 모든 요청에 ​​대해 새 스레드를 생성하지는 않지만 스레드 풀을 사용하여 들어오는 요청을 실행합니다. 한 번에 하나의 요청 만 실행하고 있으므로 동일한 스레드가 후속 요청을 실행하는 데 사용됩니다. 병렬로 많은 요청을 실행하려고하면 스레드 ID/이름이 달라진다는 것을 알 수 있습니다.

+0

그래, 고맙다. 내 문제는 하나의 데이터베이스 테이블에 거의 2 백만 행이 있다는 것이 었습니다. 느린 응답을 일으키는 원인이 무엇인지 알지 못 했으므로 Tomcat이 들어오는 HTTP 요청을 처리하는 방법이라고 생각했습니다. – Marquinio