본문 바로가기

웹서비스

Axis 서비스 완전히 초기화하기

MyAxisServlet.java

[출처] Axis 서비스 완전히 초기화하기|작성자 다빈

http://blog.naver.com/ecogeo/100008614207

Axis 서버를 구성하는 주요 모듈에는 엔진, 핸들러, 프로바이더가 있고

거기에 서비스별로웹서비스 로직이 구현된서비스구현체가 있다.

- 엔진

- 핸들러

- 프로바이더

- 서비스구현체

보통 AxisServlet을컨테이너의 web.xml에 다음과 같이 등록함으로써

컨테이너가 웹App를 로딩할 때 Axis서버를 초기화한다.

<servlet>
<servlet-name>axis</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
<load-on-startup>4</load-on-startup>
</servlet>

그런데소스를 분석해본결과 AxisServlet은 init 메소드에서 엔진만 초기화할 뿐 핸들러,프로바이더, 서비스구현체는 초기화하지 않았다. 핸들러, 프로바이더,서비스 구현체는 실제로 웹서비스

요청이 들어와야 비로소 초기화(객체의 인스턴스를 만들고 init 메소드를 호출하는 등)되었다.

그러나 이런식으로 lazy initialization 방식으로 초기화를 하게되면 컨테이너를 띄울 때

Axis서버의 오류를 바로 알 수가 없다는 문제가 있다.

따라서 컨테이너를 스타트업하면서 Axis의 모든 자원 또한 함께 로딩(초기화)하는 것이

오류를 빨리 파악하기 위해서 꼭 필요하다.

구글링을 통해 엔진을 제외한 Axis의 나머지 자원을 early initialization하는 방법을 찾아봤으나

손가락만 아프고 말았다. 그래서 열받아서 직접 Axis를 완전히 초기화하는 커스텀 AxisServlet을

만들었다.

파일 첨부하니 필요하신 분을 갖다쓰시길...(별로 없을듯.. -.-;)

ps. 서비스 구현체 중에서 application 스코프를 갖는 것만 early loading 대상에 포함시켰다.

request와session 스코프를 갖는 서비스를 early loading하는 것은 의미가 없기 때문이다.

'웹서비스' 카테고리의 다른 글

Apache Axis2 User`s Guide - Introducing Axis2  (0) 2010.07.12
Apache Axis2 Installation Guide  (0) 2010.07.12
AXIS2 설치시 문제점  (0) 2010.07.12
Axis2에서 SOAPMonitor 사용하기  (0) 2010.07.12
Flex - SOAP 호출  (0) 2010.07.07