본문 바로가기

웹서비스

오래된 SOAP문서

xml-axis를 사용한 웹 애플리케이션 설치및 배치


Contents

설치

이 문서는 아파치 Axis를 설치하는 방법을 서술한다. 이것은 당신이 자바코드를 쓰고 실행하는 방법을 이미 알고 있고 XML에 대해서 걱정이 없다는것을 가정하고 작성되었다. 당신은 애플리케이션 서버와 서블릿엔진를 가지고 있고 그것을 운영하고 배치하는것에 친숙해야만 한다. 만약 당신이 애플리케이션 서버가 필요하다면 우리는 Jakarta Tomcat을 추천한다. (만약 Tomcat을 설치한다면 최근의 4.1.x버전의 Xerces XML파서가 생갹된 LE버전이 아닌 전체 배보패키지를 사용해라.). 서블릿 API의 2.2버전 이상을 제공하는 서블릿 엔진은 모두 지원된다. Axis서버와 클라이언트는 Java 1.3이상을 요구한다.

Axis 사용의 좀더 상세한 정보를 원할때는 user guide를 보라.

당신이 알아야 하는것들

Axis를 사용할때 많은 문제점은 자바가 처음이거나 서버측 자바나 SOAP가 처음인 사람들에 의해서 많이 발생한다. 당신이 SOAP에 대해서 배울수 있는 동안 Axis클라이언트와 서버를 쓰는것은 기초적인 자바 개념을 배우기엔 적합한 시기가 아니다.

웹서비스를 쓰기 전에 알필요가 있는 것들

  1. 핵심적인 자바 데이터타입, 클래스와 프로그래밍 개념
  2. 쓰레드가 뭔지 race condition, thread safety와 sychronization(동기화).
  3. 클래스로더가 뭔지, 구조적 클래스로더가 뭔지, 그리고 "ClassNotFoundException"를 야기시키는 공통적인 이유가 뭔지
  4. 예외 추적으로 부터 문제를 어떻게 분석하는지, NullPointerException (NPE)과 다른 공통 예외들이 뭔지 그리고 그것들을 어떻게 고치는지
  5. 웹 애플리케이션이 뭔지, 서블릿이 뭔지, 클래스와 라이브러리 그리고 웹 애플리케이션내의 데이터를 어디다 두어야 할지
  6. 당신의 애플리케이션 서버를 시작하고 배치하는 방법
  7. 네크워크가 뭔지 IP프로토콜의 개념과 소켓 API, 특히 TCP/IP
  8. HTTP가 뭔지, 핵심 프로토콜과 에러코드, HTTP헤더와 기본 인증에 대한 설명
  9. XML이 뭔지, well-formed그리고 유효한 XML
Axis와 SOAP는 그런 모든 설명에 의존한다. 만약 당신이 그것들을 모른다면 Axis(또는 다른 웹서비스 미들웨어)를 배우기엔 위험하다. 곧 또는 나중에 이런 것들을 배워야 할것이다 그러면 Axis를 배우는데 좀더 쉬울것이다.

만약에 당신이 정말 자바가 처음이라면 우리는 Axis를 가지고 작업할수 있는 충분한 기초를 쌓을때까지 썬 웹사이트의 자바 튜토리얼과 Thinking in Java같은 것으로 시작하길 권한다.

0단계: 개념

Apache Axis는 오픈소스 SOAP서버이고 클라이언트이다. SOAP는 인터넷을 통해 임의의 언어로 쓰여진 시스템 사이에 애플리케이션 간의 통신을 위한 기술이다. SOAP는 언제나 HTTP를 통해 메시지를 교환한다. 오픈소스라는 것은 소스를 얻을수 있다는 것을 의미하지만 여기엔 뭔가가 잘못되었을때 형식적인 도움을 받을수 없다는 것이다.

SOAP 메시지는 XML메시지이다. 그 메시지들은 SOAP시스템간에 구조적인 정보를 교환한다. 메시지들은 Envelope(SOAP을 위한 xml파일에 보면 가장 상위 요소인 태그를 말한다.)내에 하나 이상의 SOAP정보(Headers그리고 SOAP Body, SOAP는 그 요소내에 데이터를 서술하기 위해서 두가지 문법을 가진다.)들로 구성된다. Section 5, XML RPC시스템의 다음 형태이고 XML Schema, 그리고 새로운 시스템이다. Axis는 자바객체를 SOAP데이터로 변환을 할수있는 기능을 가진다. 뭔가가 잘못되었을때는 서버에 의해 SOAP Faults가 보내어진다. Axis는 이런것을 자바예외로 변환한다.

SOAP는 본질적으로 다른 시스템을 연결할려고하는 경향이 있다. 이것은 같은 팀에 의해 만들어진 자바 프로그램을 단단하게 묶을려는 기술이 아니다. 이것은 자바프로그램을 함께 묶을수도 있지만 RMI나 Corba처럼 단단하게 하지는 않는다. 만약 당신이 RMI가 직렬화한 많은 자바객체를 보낼려고 한다면 Axis가 실패함으로써 실망하게 될것이다. 만약 Axis가 RMI를 복사하거나 바이트스트림에 의해 자바객체를 직렬화한다면 당신은 어디서든 자바의 특정버전에 얽매이게 될것이다.

Axis는 자바서비스를 프로그램하기 위한 표준적인 방식중 하나인 JAX-RPC API를 구현한다. 만약에 Sun사의 웹사이트에서 스팩이나 튜토리얼을 본다면 당신은 그 API에 대해서 이해할수 있을것이다. Axis는 JAX-RPC API를 확장하는 많은 방법으로 확장기능을 제공한다. 당신은 더 나은 프로그램을 위해 그것들을 사용할수 있지만 여기서는 Axis구현만을 가지고 작업할것이다. 하지만 Axis는 free이고 당신이 소스를 구할수 있기 때문에 문제가 되지 않는다.

Axis는 axis.jar라는 이름의 jar파일로 컴파일되었다. 이것은 jaxrpc.jarsaaj.jar라는 이름의 jar파일내에 선언된 JAX-RPC API를 구현한다. 이것은 로깅을 위해, WSDL처리와 분석을 위해 다양한 헬퍼라이브러리를 필요로한다. 그런 모든 파일은 axis.war의 웹애플리케이션안으로 패키지될수 있다. Axis는 몇몇 예제 SOAP서비스와 함께 수행된다. 당신은 Axis웹애플리케이션으로 새롭게 컴파일된 클래스를 추가하고 등록함으로써 자신만의 서비스를 추가할수 있다.

당신이 그것들을 하기 전에 당신은 그것을 설치하고 작업을 해야 한다.

1단계: 웹애플리케이션 준비하기

여기에 우리는 로컬호스트에 8080포트로 운영되고 있는 웹서버가 있다고 가정한다. 만약에 당신의 서버가 다른 포트에서 운영중이라면 해당값을 바꾸어라.

당신의 애플리캐이션서버 설치에서 당신은 웹애프리케이션 파일들이 위치("webapps" 와 같은)하기 위한 디렉토리를 찾아야 한다. xml-axis배포패키지에서 webapps/axis로 디렉토리를 복사하라. 여기서 웹애플리케이션이름은 당신이 선호하는 이름으로 바꿀수 있다.

2단계: 라이브러리 설정하기

Axis디렉토리에서 당신은 WEB-INF라는 하위 디렉토리를 찾을수 있을것이다. 이 디렉토리는 몇개의 기초적인 설정정보를 포함한다. 하지만 의존적인것과 배치하기 위한 웹서비스를 포함할수 있다.

Axis는 XML파서가 필요하다. 만약에 당신의 애플리케이션 서버나 자바런타임이 이것을 포함하지 않는다면 당신은 그것을 다운받아 추가할 필요가 있다. 자바 1.4는 Crimson파서를 포함한다. 자바 1.4를 사용한다면 이것을 생략할수 있지만 Axis팀은 Xerces를 추천한다.

XML파서를 추가하기 위해 JAXP 1.1 XML과 호환이 되는 것을 구해라. 우리는 xml-xerces 배포로 부터 Xerces jar파일들을 추천한다. 당신은 axis/WEB-INF/lib밑에 파서 라이브러리를 추가할수 있다. 예제에서 Axis가 그 파서를 찾을수 있도록 AXISCLASSPATH에 xml-apis.jar 와 xercesImpl.jar를 추가하도록 한다.(역자 주. Axis를 사용하기 위해서는 웹애플리케이션뿐 아니라 콘솔상에서 다양한 작업이 가능함으로 시스템 classpath에 해당 라이브러리 패스를 추가해 주는것이 좋다. AXISCLASSPATH값에 Axis관련 클래스패스를 작성한 다음에 시스템 classpath에 추가해준다.)

만약에 당신이 XML파서 관련해서 ClassNotFound에러를 본다면 AXISCLASSPATH가 제대로 설정이 되지 않은 것이다.

톰캣 4.x 과 자바 1.4

자바 1.4는 로드되기 위해서 java.* 와 javax.* 으로 패키지 시작하는 방법에 규칙이 변경되었다. 그들은 단지 endorsed디렉토리에서만 로드한다. jaxrpc.jar 와 saaj.jar는 javax 패키지를 포함한다. 만약에 happyaxis.jsp가 관련 패키지를 찾을수 없다면 axis/WEB-INF/lib에서 CATALINA_HOME/common/lib로 복사를 한후 톰캣을 재시작해라.

웹로직 8.1

웹로직 8.1은 Axis의 saaj.jar와 충돌이 나는 webservices.jar을 가지고 있다. 이 충돌은 자바 웹서비스 개발팩 버전 1.0javax.xml.soap.*패키지 예전 정의를 사용하기 때문에 존재한다. Axis는 J2EE 1.4로부터 새로운 버전을 사용한다.

어쨌든 웹로직 8.1에서 Axis기반의 웹서비스를 가능하게 하기 위한 두가지 대안적인 설정법이 있다.

  • Axis를 포함하는 웹애플리케이션에서 WEB-INF/weblogic.xml내의 값을 true로 셋팅하라. weblogic.xml 예제는 다음과 같다.`
       true   

    만약에 true로 설정한다면 요소는 웹로직 클래스로더에게 WEB-INF디렉토리에 위치한 클래스를 강제로 로드하도록 만든다. 이것은 한개의 웹모듈에만 추천되는 접근법이다.

  • 웹로직 서버를 시작할때 사용되는 스크립트에서 웹로직의 webservices.jar앞에 Axis의 saaj.jar을 위치시킴으로써 CLASSPATH속성을 변경해라. 이것은 웹로직 자체의 웹서비스를 사용하는 웹애플리케이션에도 영향을 끼치기 때문에 주의하라.

3단계: 웹서버 시작하기

이것은 제품에 따라 다르다. 많은 경우는 시작아이콘을 더블클릭하거나 명령창에서 명령어를 실행함으로써 간단하게 이루어진다.

4단계: 설치성공에 대해서 알아보기

웹애플리케이션과 의존적인 것들에 대한 설치후에 당신은 서버가 웹애플리케이션을 실행하고 있는지 확인해봐야 한다.

시작 페이지를 보라

웹애플리케이션의 시작페이지를 봐라. http://127.0.0.1:8080/axis/에서 확인가능하지만 포트가 다른경우엔 해당 포트를 바꾸어주면 된다.

당신은 Apache-Axis시작 페이지를 지금 보고 있을것이다. 만약 그렇지 않다면 웹애플리케이션이 제대로 설치되어 있지 않거나 애플리케이션 서버가 실행중이지 않다.

happyaxis으로 Axis체크하기

다음 링크 Validate the local installation's configuration (로컬 설치관련 설정 체크하기)를 따라해라.
이것은 당신에게 필요한 라이브러리가 있는지 확인할수 있는 happyaxis.jsp을 줄것이다. 이것의 URL은 http://localhost:8080/axis/happyaxis.jsp과 비슷하다.

만약 필요한 라이브러리가 없다면 Axis는 작동하지 않는다.
당신은 필요한 모든 라이브러리를 찾을때까지 처리되지 않을것이다.

몇가지 서비스를 보라.

시작 페이지로부터 View the list of deployed Web services(배치된 웹서비스 목록 보기)을 선택하라. 이것은 등록된 웹서비스의 목록을 보여준다. 이 페이지에서 당신은 각각의 웹서비스가 정상적으로 작동중인지 확인하기 위해 각각의 (wsdl)을 클릭할수 있다.

여기 목록에서 나와있지 않은 Axis지원은 'instant' JWS 웹서비스임에 주의하라.

SOAP Endpoint 테스트하기.

이제는 서비스를 테스트할 시각이다. endpoint로 XML요청을 서브밋하기 위해 SOAP1.1은 HTTP POST를 사용한다. Axis는 테스트목적으로 유용한 HTTP GET접근방법도 지원한다. 첫번째 version endpoint로 부터 getVersion메소드를 호출하여 Axis의 version을 가져오도록 하자.

http://localhost:8080/axis/services/Version?method=getVersion

이것은 다음과 같은 것을 반환할것이다.
  
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
xsi:type="xsd:string">
Apache Axis version: 1.1 Built on Apr 04, 2003 (01:30:37 PST)




이 Axis 버전과 빌드시각은 물론 다를것이다.

JWS Endpoint 테스트하기

JWS웹서비스를 테스트해보자. Axis의 JWS웹서비스는 당신이 Axis웹애플리케이션으로 저장한 자바파일이다. 그것들에게 .jws확장자를 준다. 누군가가 주어진 URL에 의해 .jws파일로 요청을 한다면 이것은 컴파일이 되고 실행된다.

JWS서비스를 테스트하기 위해 우리는 내장된 예제(EchoHeaders.jws)에 대해서 요청을 생성한다.

당신의 브라우저에서 http://localhost:8080/axis/EchoHeaders.jws?method=list로 요청을 보내라.

이것은 당신의 애플리케이션 헤더의 다음과 같은 XML목록을 반환할것이다.

 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
soapenc:arrayType="xsd:string[6]"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
accept:image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
accept-language:en-us
accept-encoding:gzip, deflate
user-agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
host:localhost:8080
connection:Keep-Alive





꺼내어진 반환값은 다를것이고 당신은 어떤 정확한 호스트로 URL, 포트 그리고 웹애플리케이션에 대한 서술을 변경할 필요가 있다.

5단계: 새로운 웹서비스 설치하기

당신은 설치되고 작동하는 Axis를 가지고 있다. 지금은 당신만의 웹서비스를 추가할 시각이다.

프로세스를 요약하자면 (1)Axis WAR디렉토리에 새로운 서비스의 클래스와 라이브러리를 넣는다. (2)새로운 파일에 대해서 AxisEngine에게 말한다. (2)의 프로세스는 AdminClient프로그램이나 Ant작업과 함께 작동하는 Admin웹서비스를 통해 서비스에 XML 배치서술자를 서브밋함으로써 수행된다. 둘다 같은것이다. Admin관리자 서비스에게 Axis SOAP클라이언트가 수행되도록 한다.

첫번째 단계는 서버에 당신의 코드를 추가하는 것이다.

WEB-INF디렉토리에서 "classes" 디렉토리(예를 들면 axis/WEB-INF/classes)를 찾아보거나 없으면 생성하라. 이 디렉토리에 당신이 설치하고 싶은 컴파일된 자바클래스를 복사해라.

만약 당신의 클래스가 JAR파일내에 벌서 패키지되어있다면 WEB-INF/lib 디렉토리 대신에 그것들을 삭제하라. 또한 같은 디렉토리에 당신이 의존하는 다른 라이브러리도 추가해라.

Axis웹애플리케이션에 새로운 클래스나 라이브러리를 추가한다음, 당신은 웹애플리케이션을 다시시작해야 한다. 이것은 당신의 애플리케이션서버를 재시작하거나 특정 웹애플리케이션을 재시작하는 어떤기능을 사용함으로써 수행된다.

주의:만약 당신의 웹서비스가 xml-axis에 의해 제공되는 간단한 인증을 사용한다면(이것은 추천되지 않는다.) 당신은 WEB-INF디렉토리에 users.lst파일을 복사해 넣을 필요가 있다.

6단계: 당신의 웹서비스 배치하기.

다양한 클래스와 JAR는 당신이 새로운 웹서비스를 구현하도록 한다. 이 웹서비스를 드러내기 위해서 Axis에 알려야 하는것은 이제 무엇이 남았는가.? Axis는 무엇이 서비스되는지, 어떤 메소드가 호출되는지 SOAP endpoint가 어떻게 되는지 알기 위한 XML안에 웹서비스배치서술자(WSDD)파일을 가진다.

클래스패스 설정

이런 예제들이 작동하기 위해서 자바는 axis.jar, commons-discovery.jar, commons-logging.jar, jaxrpc.jar, saaj.jar, log4j-1.2.8.jar 그리고 XML파서 jar파일등을 찾을수 있어야 한다. 이런 예제들은 당신이 실행할때 AXISCLASSPATH에 추가되는 부분을 수정해야 한다. 이 예제또한 AXIS_LIB 디렉토리에 xml-apis.jar 와 xercesImpl.jar파일을 추가한다.

윈도우즈에서 이것은 다음과 같은 과정을 통해 이루어질수 있다. 우리는 c:\axis밑에 Axis가 설치되어 있다고 가정한다. 당신이 WinNT/2000/XP를 사용한다면 "내 컴퓨터"에서 오른쪽 클릭후 "속성", 그리고 "고급"탭을 선택한다. "환경변수"에서 새로운 환경변수를 추가한다.
 set AXIS_HOME=c:\axis
set AXIS_LIB=%AXIS_HOME%\lib
set AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar;
%AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;
%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar
유닉스 유저는 비슷한 과정으로 수행할수 있다. /usr/axis밑에 Axis가 설치되어있다고 하자. bash쉘을 이용해서 다음처럼 추가하면 된다.
 set AXIS_HOME=/usr/axis
set AXIS_LIB=$AXIS_HOME/lib
set AXISCLASSPATH=$AXIS_LIB/axis.jar:$AXIS_LIB/commons-discovery.jar:
$AXIS_LIB/commons-logging.jar:$AXIS_LIB/jaxrpc.jar:$AXIS_LIB/saaj.jar:
$AXIS_LIB/log4j-1.2.8.jar:$AXIS_LIB/xml-apis.jar:$AXIS_LIB/xercesImpl.jar
export AXIS_HOME; export AXIS_LIB; export AXISCLASSPATH
Axis클라이언트 코드를 사용하기 위해서 당신은 다음처럼 수행할수 있다.
java -cp %AXISCLASSPATH% ...(윈도우즈 방식)
또는
java -cp "$AXISCLASSPATH" ...(유닉스 계열 방식)


또한 이것은 당신의 CLASSPATH변수에 AXISCLASSPATH를 추가할수 있는 좋은 시간이다. 이것은 이 가이드의 예제를 실행할때 AXISCLASSPATH를 포함하지 않는 것을 가능하게 한다. 이 문서는 당신이 이것을 하지 않는다는 것을 가정한다.

배치서술자 찾기

파일 deploy.wsdd를 위해 axis/samples/stock안을 보아라. 이것은 Axis에 대해서 우리가 말하길 원하는 배치서술자이다. 배치서술자는 Axis가 어떻게 웹서비스를 배치하는지에 대한 것과 어떻게 스스로 설정을 하는지 서술하는 XML파일이다. Axis관리자 웹서비스는 AdminClient프로그램과 그것의 Ant작업자를 해석을 위해서 새로운 WSDD파일을 서브밋한다. 그 Axis의 'engine'는 그 설정을 수정할것이고 그 다음 그 상태를 저장한다.

초기설정의 Axis에 의해 그것은 전역 설정파일인 axis/WEB-INF/server-config.wsdd에 상태를 저장한다. 때때로 당신은 그런 파일을 찾을수 없다는 경고메시지를 보지만 걱정하지 마라. 왜냐하면 Axis는 그것을 배치한 후에 자동으로 생성하기 때문이다. 당신은 개별적인 설정을 부여하길 원한다면 다른 시스템에 그 파일을 복사할수도 있다. Axis는 확장된 웹애플리케이션과 이 위치에 상태를 저장하고자 하는 WEB-INF디렉토리에 쓰기 권한이 필요한것에 주의해라.

admin클라이언트 실행하기.

sample/stock디렉토리에서 다음의 명령어를 실행해라. 만약 당신이 이 디렉토리가 아니라면 당신은 "java.io.FileNotFoundException: deploy.wsdd (The system cannot find the file specified)" 예외를 만나게 될것이다.
윈도우즈에서
java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient -lhttp://localhost:8080/axis/services/AdminService deploy.wsdd

유닉스에서

java -cp $AXISCLASSPATH org.apache.axis.client.AdminClient
-lhttp://localhost:8080/axis/services/AdminService deploy.wsdd
만약에 당신이 몇개의 자바 클라이언트 에러(ClassNotFoundException와 같은)를 보게 된다면 당신은 AXISCLASSPATH변수를 제대로 설정하지 않았거나, 클래스이름을 잘못 썼거나, 다른 어떤 기본적인 에러를 범한것이다. 기본적인 자바개발능력으로 그 문제를 해결해라. 그 문제를 해결하지 못한다면 좀더 자바에 대해서 공부하라.

주의:당신은 아마도 당신의 호스트명과 당신의 웹서버에 의해 사용이 되는 포트인 8080포트로 localhost을 교체해야 할 필요가 있다. 만약에 당신이 "axis"가 아닌 다른 어떤 이름으로 웹애플리케이션을 변경한다면 URL이 변경되어야 한다.

만약에 당신이 몇개의 AxisFault목록을 보게 되고 클라이언트가 작동중이라면 사실 배치는 성공한게 아니다. 이것은 웹서비스 배치때 필요한 TCP에 대한 소켓 API와 HTTP에 대한 기본적인 지식이다. 만약에 당신이 connection refused와 같은 몇개의 소켓에러를 보게 된다면 당신에게 어떤것을 제공하지 않을것이다. 그래서 당신은 그 문제를 찾아서 고쳐야 한다. 만약에 당신이 HTTP에러를 보게 된다면 에러가 의미하는것을 찾아서 고쳐야 한다. 그런 능력은 웹서비스를 사용할때 필수로 가져야 하는 것이다.

유저 가이드는 AdminClient와 당신의 Ant스크립트의 사용으로 자동으로 하기 위해 Ant task에 대해 좀더 자세한 정보를 가진다.

7단계: 테스팅

이 단계는 옵션이지만 강력히 추천된다. 목적으로 그려보기 위해 이것은 stock quote데모를 설치하고 배치한다.

  • xml-axis를 위해 배포디렉토리로 디렉토리를 변경한다. 그리고 다음의 명령를 실행한다.
    윈도우즈에서
    java -cp .;%AXISCLASSPATH% samples.stock.GetQuote
    -lhttp://localhost:8080/axis/servlet/AxisServlet -uuser1 -wpass1 XXX


    유닉스에서
    java -cp $AXISCLASSPATH samples.stock.GetQuote
    -lhttp://localhost:8080/axis/servlet/AxisServlet -uuser1 -wpass1 XXX


  • 당신은 "55.25"라는 결과를 얻게 될것이다.

주의:당신은 호스트이름과 당신의 웹서버에 의해 사용되는 포트인 8080으로 localhost를 변경해야 한다. 만약에 "axis"를 다른 이름으로 변경한다면 URL도 변경해야 한다.

좀더 상세한 설치: 당신의 웹애플리케이션에 Axis를 추가해라.

만약에 당신이 웹애플리케이션배치를 경험해 보았다면 특별히 당신은 존재하거나 복잡한 웹애플리케이션에 웹서비스를 추가해보고자 한다면 당신은 실행중인 Axis에 대안적인 접근법을 가질수 있다. Axis웹애플리케이션에 당신의 클래스를 추가하는 대신에 당신은 당신의 애플리케이션에 Axis를 추가할수 있다.

그 핵심적인 개념은

  1. 당신의 WAR파일에 axis.jar, wsdl.jar, saaj.jar, jaxrpc.jar 그리고 다른 의존적인 라이브러리를 추가해라.
  2. axis/WEB-INF/web.xml로 부터 Axis 서블릿선언과 맵핑을 복사하고 당신만의 web.xml을 추가해라.
  3. 당신의 웹애플리케이션을 빌드하고 배치해라.
  4. 당신의 웹애플리케이션에 대해 Axis대신에 그것을 호출하는 URL을 변경함으로써 Axis AdminClient를 실행해라.
이 프로세스는 또한 PDF파일에서 다운로드가능한 Ant를 사용한 자바개발 15장에서 다루어진다.

작동하지 않는다면 무었때문인가.?

Axis는 설치하기에는 다소 복잡한 시스템이다. 이것은 당신의 애플리케이션서버의 참조되는 기능에 의존적이기 때문에 다소 복잡한 설정과 모든 분산 애플리케이션처럼, 또는 네트워크에 의존적인면을 가진다.

우리는 axis-user메일링리스트에 그들의 문제를 올리는 많은 사람들을 본다. 하지만 당신의 문제를 올리기전에 주의가 있다.

Axis는 free이다. 이것은 어느누구도 그것을 지원하는 사람들에게 금전적인 보상이 없다는 것을 의미한다. 모든 도움은 그들 마음의 친절함으로 부터 얻을수 있다. 그들은 다른 유저일수도 있다

  1. 개발자 리스트가 아닌 유저메일에 글을 올려라.
  2. Axis와 관련이 없는 질문은 하지 마라.
  3. soapbuilders메일링 리스트에도 올려서 괴롭히지 마라.
  4. 어느 누군가가 반드시 그 문제를 해결해 주리라고 믿지 마라.
  5. 답변이 바로 나오리라고 생각하지 마라.
  6. 먼저 스스로 해볼만큼 해봐라.
  7. 올릴때는 제목에서 부터 문제점이 뭔지 파악할수 있도록 해라.
  8. 먼저 어느 누군가가 똑같은 문제를 만났고 해결했는지 mailing list archives를 찾아봐라.
  9. Axis버그를 찾기 위한 데이터베이스인 bugzilla를 사용해라.
  10. 자주 요청되는 질문(FAQ)에 대해서 Axis Wiki를 참조하라.
  11. 직접적으로 이메일로 도움을 요청하지 마라.
  12. 설정문제는 되풀이되는 것이기 때문에 어렵다는 것을 알아라. 그래서 도움을 주기도 어렵다.
  13. 가급적이면 Axis의 최신버전을 사용하라. 최신버전은 이전버전의 버그를 수정했을 가능성이 높다.
  14. 소스를 공부하고 사용해라. 그리고 문제점을 찾았을때는 수정해라.
당신의 도움이 필요하다. Axis개발에 참여해달라.

요약

Axis는 당신의 웹애플리케이션에 추가할수있는 SOAP의 간단한 구현물이다. 설치는 다소 성가시다. 자바 1.4를 가급적이면 요구한다. 당신이 만약에 방법론적인 절차와 테스트, happyaxis를 사용한다면 당신은 Axis를 쉽게 시작할수 있을것이다.

추가사항: SOAP모니터링 가능하게 하기

SOAP모니터는 자바플러그인 1.3이상을 사용하느 웹브라우저를 통해 SOAP요청과 응답을 모니터링하게 한다. 이 사용법에 대해 좀더 상세한 것을 원한다면 유저가이드내에 SOAP모니터 사용하기를 읽어라.

초기설정에 의해 SOAP모니터는 사용가능하지 않다. SOAP모니터 자바애플릿을 가능하게 하는 기초적인 단계는 SOAP모니터 웹서비스를 배치하고 각각의 모니터하는 웹서비스를 위해 요청,응답의 정의를 추가하는것이다. 좀더 상세하게 말하면..

  1. $AXIS_HOME/webapps/axis(또는 %AXIS_HOME%\webapps\axis)으로 이동해라. 그리고 SOAPMonitorApplet.java를 컴파일해라.
    윈도우즈에서는
    javac -classpath %AXIS_HOME%\lib\axis.jar SOAPMonitorApplet.java


    유닉스에서는
    javac -classpath $AXIS_HOME/lib/axis.jar SOAPMonitorApplet.java

    모든 결과물의 클래스파일을 SOAP모니터를 사용하는 웹애플리케이션의 가장 상위 디렉토리로 복사해라.
  2. admin클라이언트와 deploy-monitor.wsdd파일을 가지고 SOAPMonitorService웹서비스를 배치해라.
    deploy-monitor.wsdd이 위치한 디렉토리로 이동해서 아래의 명령을 실행해라. 이 명령는 웹애플리케이션이 /axis이고 8080포트를 사용한다는것을 가정한다.
    윈도우즈에서
    java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient -lhttp://localhost:8080/axis/services/AdminService deploy-monitor.wsdd

    유닉스에서

    java -cp $AXISCLASSPATH org.apache.axis.client.AdminClient
    -lhttp://localhost:8080/axis/services/AdminService deploy-monitor.wsdd
    SOAPMonitorService 배치서술자(deploy-monitor.wsdd)
                 
  3. 모니터링되는 각각의 서비스를 위해 서비스 배치서술자에 요청,응답처리정의를 추가하고 그 서비스를 배치하라. requestFlowresponseFlow정의는 요소의 시작태그 뒤에 온다. 만약에 서비스가 먼저 배치되었다면 배치된것을 엾애고 변경된 배치서술자를 가지고 다시 배치해라. 그 예제는 다음과 같다.
    ...        ...
  4. 웹브라우저에서 http(s)://host(:port)(/webapp)/SOAPMonitor(예를 들면 http://localhost:8080/axis/SOAPMonitor)으로 이동해라. 이것은 서비스요청과 응답을 보여주기 위한 SOAP모니터 애플릿을 보여준다. 서비스에 대한 어떤 요청이 정확하게 설정되고 배치되었는지 이 애플릿에서 볼수 있다.

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

SOAP 통신에서 weblogic parsing error - jar 의 충돌  (0) 2010.07.05
Simple Object Access Protocol (SOAP)  (0) 2010.07.05
[JSP] XML 통신 예제  (0) 2010.06.30
[JSP] XML 읽기  (0) 2010.06.30
SOAP의 개념 (간단예제)  (0) 2010.06.30