IT한 것

WebApplication

lovian 2006. 10. 24. 21:45
정말로 지겹게 듣기만 하던 문장이다.

어이없게도 최근 Webservice 관련된 일을 지겹게 하면서, 이에 손을 대지 않을 수가 없다.
우선는 ear 파일로 만들어지는데 그 내부에 보면은
application.xml
application.war
등의 파일이 들어간다.
war파일의 이름은 고정된 것이 아니고 xml 파일은 WebApplication 을 식별하기 위한 고정된 문서이다.
이 파일의 내부에는 사용할 war 파일들의 목록과 설명 등이 적혀 있다.

war파일을 열어보면,
WEB-INF 디렉토리 아래로 web.xml, web-service.xml, classes 디렉토리가 존재한다.
꼭 그래야 하는 것은 아니고, 내가 WebService 관련 작업을 하고 있으니까 그렇다.
web.xml 내부에는 web-app 태그만 덩그러니 놓여 있고,
web-sevices.xml 내부에는 내가 작업하고 있는 handler에 대한 설정 등이 들어 있다.
classes 디렉토리에는 간단한 클래스 파일들이 존재한다.

구성을 잠깐 보면은
web-services.xml에 설정된 경로에 WebService 요청을 던져주면, 그 경로에 대응하는 클래스를 실행하고 내가 설정해둔 Handler들을 실행한다.

사실 단독으로는 작동하기 힘들고, 누군가가 WebService 요청을 던져줘야 한다.
그래서 클라이언트를 만들었는데, 아무는 그 녀석이 web-services.xml에 설정된 경로로 요청을 던져준다.
던져진 내용들은 web-sercvices.xml 에 등록된 HandlerChain을 따라가 각각의 등록된 Handler가 하고 싶은 일 을 다 하면은 그제서야 설정된 경로의 주인인 클래스에게 Handler에 의해 가공된 메시지가 전달된다.
주인 클래스가 할일을 다하면 뭔가 응답을 뱉어내고 다시 HandlerChain을 따라 Handler에 의해 가공되어 클라이언트에 응답을 해준다.


약간 특이한 점이라면, ear파일에 들어가는 war파일의 이름이 경로의 일부분이 된다는 것.
즉 WSDL 경로는
http://서버IP:서버PORT/war 파일의 이름/web-services.xml에서 정한 경로?WSDL
이 된다.

뭐, 더 쉽거나 간단한 설정 방법이 있을지도 모르겠지만, 이정도면은.. 하하..