이 가이드는 Apache Axis2 를 처음 접해보는 사용자를 위한 출발점을 제공한다. 또한, Axis2 를 이용해 웹 서비스를 생성하고 디플로이 하는 방법과 클라이언트와 서버를 WSDL을 사용하여 만드는 방법과 같은 정보를 더욱 익숙한 사용자들에게 제공한다.
Apache Axis2에 익숙한 사용자들은 Advance User's Guide 로 시작하기를 추천한다.
- Introducing Axis2
-------------------------------------------------------------------------------------------------------------------
이 섹션은 Axis2와 이것의 구조를 소개한다.최신 Axis2가 포함하고있는 다양한 디렉토리와 파일들에 대해 설명한다.
Content
-------------------------------------------------------------------------------------------------------------------
● Introducing Axis2
○ What is Axis2?
○ What's under the hood?
○ How Axis2 handles SOAP messages
○ Axis2 distributions
○ The Axis2 Standard Binary Distribution
○ Axis2.war Directory hierarchy
○ Axis2 Documents Distribution
○ Axis2 and clients
● Installing and testing client code
○ Message Exchange Patterns
○ Choosing a Client Generation Method
○ Generating Clients
○ Axis Data Binding (ADB)
○ Getting Comfortable with Available Options
○ Creating a service from scratch
○ Deploying Plain Old Java Objects
○ Deploying and running an Axis2 service created from WSDL
● Samples
What is Axis2?
-------------------------------------------------------------------------------------------------------------------
Apache Axis2 project는 자바 기반으로 만들어진 웹 서비스의client와 server의implementation 이다. Apache Axis 1.0 을 통해 배운 장점들을 수용해 디자인되었고 완벽한 object model과 modular architecture를 제공한다. modular architecture는 간단히 기능을 추가하고 웹서비스 관련 명세서와 요구사항을 지원한다.
Axis2는 다음과 같은 일들을 쉽게 수행할수 있게 해준다:
●SOAP messages 보내기
● Receive and process SOAP messages
● Create a Web service out of a plain Java class
● Create implementation classes for both server and client using WSDL
● Easily retrieve the WSDL for a service
● Send and receive SOAP messages with attachments
● Create or utilize a REST-based Web service
● Create or utilize services that take advantage of the WS-Security, WS-ReliableMessaging, WS-Addressing,
WS-Coordination, and WS-Atomic Transaction recommendations
● 새로운 요구사항이 생기면 이를 쉽게 지원하기위한 Axis2modular structure를 이용한다.
더욱 많은 특성들이 있지만 여기서는 처음에 언급한 다섯가지를 성취하는데 초점을 맞추고 있다.
What's Under the Hood?
-------------------------------------------------------------------------------------------------------------------
Axis2와 이것이 하는일을 이해하기 위해 Web services message의 life cycle에 대한 이해가 필요하다. 전통적으로 이것과 비슷하다:
보내는 어플리케이션은 original SOAP message를 생성한다. 이것은 header와 body로 구성되 있는 XML 메세지 이다. (SOAP에 대한 더욱 자세한 정보를 원한다면 "Introduction to Services" 를 보라.) 만약 시스템이 WS-Addressing또는 WS-Security 와 같은WS* recommendations을 요구한다면 sender에 보내지기전에메세지는 추가적인 처리를 거칠것이다. 메세지가 준비되면 HTTP, JMS 등등과 같은 특정 transport를 통해 보내진다.
receiver안에서 transport listener를 통해 받은 메세지는지정된 방식으로 동작한다. (다르게 말하면, 만약 어플리케이션에 실행중인HTTP listener가 없다면 어떠한 HTTP메세지도 받을수 없을것이다.) 다시, 만약 그 메세지가 WS-Security 또는 다른 recommendations을 필요로하는 시스템의 일부분이면 인증검사 또는 중요한 정보의 암호해독을 위한추가적인 처리가 필요하다. 마지막으로, dispatcher는 메세지에 지정된특정 어플리케이션(또는 자바 함수 처럼다른 컴포넌트)을 결정하고 그 컴포넌트에 보낸다. 그 컴포넌트는 여기저기로 데이터를 보내는 일을하기위해 디자인된전체적인 어플리케이션의 일부분이다.
How Axis2 Handles SOAP Messages
-------------------------------------------------------------------------------------------------------------------
Axis2는 어플리케이션안의 sender와 receiver를 위한 처리를 다룰수 있다. Axis2의 관점에서 보면 그 구조는 아래처럼 보인다:
양쪽 모두(보낸 또는 받은) message들을 처리할수 있도록 설계된 어플리케이션을 가지고 있다. 가운데에 Axis2가 있다. 더 정확히 말하면Axis2를 둘수 있다. 웹 서비스의유용성은sender와 receiver가 (각각은 server또는 client가 될수 있다)동일한 플랫폼위에 있지 않아도 된다는 것이다. 더군다나 동일한 어플리케이션에 있을 필요는 더더욱 없다. 그러나 Axis2가 양쪽 모두에서 실행되고 있고 그 처리과정이 아래와 같다고 가정하자:
● sender는 SOAP message를 생성한다.
● Axis "handlers"는 WS-Security와 관련된 메세지들의 암호와같은메세지에필요한모든 행동을수행한다.
● Transport sender는 메세지를 보낸다.
● 받는쪽의 끝단에서 transport listener는 메세지를 탐지한다.
● transport listener는 받는쪽의어떠한 handler들에게도 메세지를 넘길수 있다.
● "pre-dispatch" phase 에서 메세지가 처리되고 나면 dispatcher에게 넘겨진다.
dispatcher는 이 메세지를 알맞은 어플리케이션에게 넘긴다.
Axis2 에서 이런 action들은 "pre-dispatch", "dispatch,"그리고 "message processing" 과 같은몇개의 미리 정의된 phase들을 가지고있는"phases" 안에 포함되어졌다. 각각의 phase는 "handlers"들의 집합이다.Axis2는 어떤 handler가 어떤 phase에 들어가며 phase안에서 실행되는 handler들의 순서를 제어할수 있도록한다. 또한 당신의 phase와 handler를 추가할수도 있다.
실행중인 Axis2 시스템에 "modules" 부터의 handler들을 끼워넣을수 있다. Rampart와 같은이 모듈들은 WS-Security 구현을 제공하며 WS-ReliableMessaging의 구현을 제공하는Sandesha는 Axis2에서 중요한 확장성 메카니즘이다.
Axis2 Distributions
-------------------------------------------------------------------------------------------------------------------
Axis2는 몇개의 배포본으로 배포된다. 무었을 할것인가에 따라 필요로하는 것을 얻을 수 있다.
The Axis2 Standard Binary Distribution
-------------------------------------------------------------------------------------------------------------------
만약 당신이 service와 어플리케이션을 개발중이라면 Axis2 Standard Binary Distribution이 필요할 것 이다. 이것은 필요한 모든 *.jar 파일을 가지고 있으며 개발을 쉽게 할수 있도록 다양한 스크립트를 제공한다. 이것은 다음과 같은 구조를 가지고 있다:
Code Listing 1: Axis2 Standard Binary Distribution
------------------------------------------------------------------------------------------------------------
bin
axis2.bat
axis2.sh
axis2server.bat
axis2server.sh
java2wsdl.bat
java2wsdl.sh
wsdl2java.bat
wsdl2java.sh
setenv.sh
lib
activation-1.1.jar
...
XmlSchema.jar
repository
modules
modules.list
addressing-1.1.1.mar
..
services
services.list
version.aar
..
samples
...
webapp
...
conf
axis2.xml
LICENSE.txt
README.txt
NOTICE.txt
INSTALL.txt
release-notes.html
------------------------------------------------------------------------------------------------------------
bin 디렉토리는 많은 유용한 스크립트를 가지고 있다. axis2.bat (or axis2.sh) 스크립트는 모든 Axis2 jar 파일들을 클래스패스에 수작업으로 추가하는 일없이 자바 명령어를 쉽게 실행할 수 있도록 해준다. java2wsdl.bat (and .sh) and wsdl2java.bat (and .sh) 스크립트는 WSDL 파일과 vice versa로 부터 자바 코드를 생성하는것을 쉽게 해준다. axis2server.bat (and sh) 스크립트는 당신의 어플리케이션에 메세지를 보내고 받을 수 있는 Axis2의 기능을 빌드할수 있는 간단한 웹 서버를 제공한다.
lib 디렉토리는 모든 필요한 jar 파일들을 가지고 있다. Service와 module들은 repository 디렉토리에 추가된다. Axis2는 WS-Addressing을 구현하는 표준 모듈을 가지고 있으며 repository/modules디렉토리안의 Rampart와같이당신이 필요로하는 어떠한 모듈이라도 추가할 수 있다.
conf 디렉토리는 axis2.xml (global deployment descriptor)을 가지고 있다.
마지막으로 samples 디렉토리는 Axis2와 함께 배포되는 모든 예제 코드를 가지고 있다. 당신은 여기서 모든 예제들과 description들의 목록을 볼수 있다.
axis2.war Distribution Directory Hierarchy
-------------------------------------------------------------------------------------------------------------------
axis2.war 파일은 WAR (Web Archive) 배포본에 포함되 있다. Axis2의 서버 부분이 J2EE application으로 포함되어 있으며 Code Listing 2 에서 보여지는것과 같은 구조를 가지고 있다.
Code Listing 2: Server Side of Axis2
------------------------------------------------------------------------------------------------------------
axis2-web
META-INF
WEB-INF
classes
conf
axis2.xml
lib
activation.jar
...
xmlSchema.jar
modules
modules.list
addressing.mar
...
soapmonitor.mar
services
services.list
aservice.aar
...
version.aar
web.xml
------------------------------------------------------------------------------------------------------------
위에서부터 시작해 보자. axis2-web은 서비스를 추가하고 모듈을 engaging하거나 dis-engaging하는 것과같이 당신이 필요로하는 모든 action을 수행할Axis2 관리자 어플리케이션을 만드는 JSP들이 있다. WEB-INF 디렉토리에는 모든*.jar 파일과 인클루드된 모듈들 그리고 디플로이된 서비스들을 포함하는실제 Axis2 어플리케이션이 있다.
classes 디렉토리는 Axis2가 필요로하는 클래스 또는 속성파일(예:log4j.properties)들을 가지고 있다. 시스템에 의해 관리되는 모든 실제 서비스들은 axis archive 또는 *.aar파일의 형태로services 디렉토리에 존재한다. 이 파일은 service에 관련된 모든 클래스들과 services.xml파일을포함하고 있다. services.xml파일은 message sender와 message receiver들의 정의 같은 모든 추가적인 요구들을 컨트롤한다.
그러나 이모든것의 메인 파일은 axis2.xml 이다. axis2.xml은 어플리케이션이 received message들을 어떻게 다룰지를 컨트롤한다. 이것은 message receiver와 transport receiver들을 정의하며 추가로 transport sender들을 정의하며 어떤 모듈이 활성화 될것인지도 정의한다. 이것은 또한 phase들의 순서를 정의하고 각각의 phase에서 실행될 handler들을 정의한다.
당신은 웹 어플리케이션을이용하여이 모든 정보들을 컨트롤 할 수 있다. 그러나 Axis2 어플리케이션을 재시작 한다면 이런 수정사항들은 적용되지 않을것이며 서브의 정의들은 axis2.xml 파일에 의해 이전의 상태로복원될 것이다.
Axis2는 또한 세번째 배포본(소스 배포본)을 제공한다. 이것은 당신이이 war 파일을 생성 할 수 있도록 해준다.
Axis2 Documentation Distribution Directory Hierarchy
-------------------------------------------------------------------------------------------------------------------
Documents distribution은 xdoc과 javadoc을 포함한 모든 Axis2 d0cumentation을 포함하고 있다. 이것은 다음과 같은 구조를 가지고 있다:
Code Listing 3: Axis2 Documents Distribution
------------------------------------------------------------------------------------------------------------
docs
javadocs
xdocs
LICENSE.txt
README.txt
release-notes.html
------------------------------------------------------------------------------------------------------------
javadocs 디렉토리는 Axis2 API에 대한 모든standard API d0cumentation을 가지고 있다. xdocs 디렉토리는 이보다더 대화형의 d0cumentation을 가지고 있다(이 문서 처럼).
Axis2 and Clients
-------------------------------------------------------------------------------------------------------------------
웹 어플리케이션의 일부로서 Axis2가 어떻게 동작하는지 설명했다. 그러나 J2EE어플리케이션의 일부가 아닌standalone 클라이언트는 어떤가? 이 경우는 sender가 Axis2 기본 설정들을 사용할 수 있다. 다르게 말하면 특별한 핸들러가 없다. 그러나 당신이 axis2.xml 파일의 복사본을 클라이언트가 로드하고 그에 따라 동작하게 하는옵션을 설정 할 수 있다.
See Next Section - Installing and Testing Client Code
----------------------------------------------------------------------------------------------------------------
원본 : http://ws.apache.org/axis2/1_1_1/userguide.html
번역 : 김운주 ounju@naver.com
'웹서비스' 카테고리의 다른 글
AXIS2.0 설치및 환경설정 (0) | 2010.07.12 |
---|---|
WTP에서 Axis2를 이용한 웹 서비스 구현하기 Part 1: 개발 환경 구축과 웹 서비스 (0) | 2010.07.12 |
Apache Axis2 Installation Guide (0) | 2010.07.12 |
Axis 서비스 완전히 초기화하기 (0) | 2010.07.12 |
AXIS2 설치시 문제점 (0) | 2010.07.12 |