드디어 성공.
웹서버와 웹서비스 서버를 물리적으로 완전히 분리했다.
웹서비스 서버는 JBoss 5 Community Edition을 사용했다. (AIX 6.1)
Web서버는 Windows Server 2008. -.-; 머신이 싸길래.
웹서버와 웹서비스 서버는 완전히 분리되어 있다.
웹서버는 80번 포트를 오픈하고 아파치 서버를 올려 바깥에 내놨고(공인IP),
웹서비스 서버는 tomcat connector를 위한 포트만 오픈하고 죄다 닫아버렸다. 그리고 이 서버는 내부에 있다.(사설 IP)
나의 목표는 웹서비스를 포함한 모든 요청을 전부 웹서버가 받아서 웹서버가 처리할 건 지가 알아서 처리하고, 웹서비스 서버가 처리할 건 웹서비스 서버가 처리하도록 하는 거였다.
방법은 비교적 간단하고 세팅도 그리 어렵지 않다.
1. jk_mod를 다운로드 받아 $APACHE/modules에 복사
2. 약간의 환경세팅
위 과정은 인터넷 뒤져보면 잘 나와있고, 아파치 홈페이지에도 설명되어 있으니 생략.
다 잘 되었다고 생각했었는데, 맨 끝에 문제가 발생했다.
wsdl에 접속 location이 명시되어 있는데, 이게 기본적으로 서버 자체의 ip를 물고 들어가게 된다.
그러니까,
현재 상황은 이렇다.
웹서버가 http://www.hello.co.kr 이고,
웹서비스 요청은 http://10.1.1.5:8080/helloWS 으로 받고 있다.
이 상황에서,
웹서버가 웹서비스 요청을 포함한 모든 요청을 받도록 하기 위해,
웹서버에게 http://www.hello.co.kr/helloWS 로 요청을 보내면 이 요청이 방화벽 안의 웹서비스에게로 날아가서 그놈이 처리하도록 되어 있는 거다.
다 잘되었는데, wsdl의 맨 끝에
<<service
name="helloWS">
<soap:address location="http://10.1.1.5:8080/helloWS" />
</port>
</service>
이렇게 되어 있어서 결국 아무런 처리도 안되고 있었다.
왜냐, 외부에서는 10.1.1.5 서버에 연결할 수 없기 때문에. (방화벽 정책 자체를 그렇게 설정해 놨으니까)
그런데 이 문제 비교적 쉽게 해결했다.
JBoss 서버를 띄어놓은 상태에서 mvn install 에 성공하면 JBoss가 기록하는 로그에 (debug 모드) wsdl을 어디에 publish했다는 기록이 남는다.
이런 식이다.
19:33:18,234 INFO [WSDLFilePublisher] WSDL published to: file:/usr/local/jboss/jboss-5.1.0.GA/server/default/data/wsdl/helloWS-1.0.war/HELLOWS4208386379691609677.wsdl
그럼 그냥 단순히 저 파일을 열어서 맨 끝에 address location만 바꿔주면 된다.
<service name="helloWS">
<soap:address location="http://www.hello.cl.kr/helloWS" />
</port>
</service>
이렇게 바꿔줬다. 아주 잘되고 있다.
자. 이게 한가지 꼭 짚고 넘어가야 할 것이 있다.
아마도 몇몇 설정만 바꾸면 wsdl이 항상 내가 원하는대로 나오게 할 수 있을 거다. 어디를 바꿔야 할지 아는 분 꼭 알려주시기 바랍니다.
'프로그래밍' 카테고리의 다른 글
IBM AIX 6에 Oracle 10g client 설치하기 (0) | 2010.02.23 |
---|---|
jboss soap wsdl 주소 변경하는 방법 (0) | 2010.02.22 |
oracle MD5 암호화 (0) | 2009.10.23 |
오라클 특정 컬럼 암호화 하기 (0) | 2009.10.23 |
NSIS 시작프로그램에 등록하기 (0) | 2009.09.15 |