IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
한국 developerWorks   >  Developer CoD  > developerworks

WTP에서 Axis2를 이용한 웹 서비스 구현하기 Part 1: 개발 환경 구축과 웹 서비스 판매 프로세스 개발 준비




CoD 신청자: 이상렬(pcguy7@gmail.com)
CoD 신청 내용: 요즘 이클립스 매력에 푹 빠진 개발자 입니다. WTP 플러그인과, Axis2 를 이용한 자바 기반의 웹서비스를 구현하고 관리하는 방법, WTP 플러그인을 이용한 웹서비스 클라이언트를 구현하고 관리하는 방법을 단순히 데모가 아닌 실프로젝트를 구축한다는 가정 하에 정리해 주었으면 합니다.


난이도 : 초급
2007년 11월 20일


WTP란

WTP는 웹, 자바 EE 애플리케이션을 개발하는 데 필요한 도구들을 제공하는 이클립스 플랫폼 기반 플러그인이다. JSP, 서블릿의 구문오류, 코드 어시스턴트, 템플릿 제공을 하는 편집기부터 배포와 테스트까지 전반적인 웹 애플리케이션 개발을 지원한다.


이클립스의 확장성

이클립스는 편집기다. 하지만 단순히 코드를 입력하고 저장하는 일로 끝나는 게 아니라 설계, 개발, 배포, 보수와 같은 개발 단계에 있어 필요한 기능들을 지원한다. 정확히 말하면 그러한 기능을 제공하는 플러그인을 추가하는 것이다. 설계단계에서는 다이어그램을 그릴 수 있는 플러그인을, 개발단계에서는 컴파일과 디버깅을 도와주는 플러그인을 추가하여 사용할 수 있다. 우리는 개발단계 중에서도 웹 애플리케이션을 개발할 때 쓰는 플러그인인 이클립스 WTP에 대해 알아 볼 것이다.


WTP 설치

웹 개발시 유용한 플러그인
필자가 현재 웹 개발을 할 때 사용하는 몇 가지 플러그인과 환경을 소개하겠다.
  1. Aptana(http://www.aptana.com)
    • 각 브라우저에서 사용되는 스크립트 메서드들별로 코드 어시스턴트를 지원한다.
    • HTML 미리보기를 지원한다.
    • JSP, 자바스크립트 내의 구문오류를 잡아준다.
  2. Eclipse SQL Explorer(http://eclipsesql.sourceforge.net)
    • MySQL, 오라클 등 자바 커넥션 드라이버를 이용해 DB 정보를 확인할 수 있다.
  3. Firebug(http://www.getfirebug.com)
    • 파이어폭스의 부가 기능이다. 개발중인 HTHML의 실시간 인스펙트가 가능하다.
    • CSS를 확인할 수 있고 변경하여 반영된 결과를 확인할 수 있다.

WTP를 설치하는 방법은 크게 올인원 패키지로 설치하는 방법과 플러그인 사이트를 통해 기존에 사용하던 이클립스 플러그인 형태로 설치하는 방법이 있다. 플러그인 설치방식은 WST, EMF, JST 같은 다른 의존 플러그인들을 필요로 한다. 그 때문에 각각의 의존 플러그인을 찾아 연결해 설치하는 것이 여간 번거로운 일이 아니다. 이번 이클립스 유로파(Europa) 버전은 마치 플러그인 선물세트 같다. 각 분야의 플러그인을 모아 유로파 업데이트 사이트에 올려두고 업데이트 관리자(Update Manager)를 통해 다운로드할 수 있도록 했다.

  1. 올인원 설치
    1. http://download.eclipse.org/webtools/downloads에서 최신 발표된 Web Tools Platform All-In-One Packages를 다운로드한다(이 글을 쓰는 현재 2.0.1 버전이 최신이다).
    2. 적절한 위치에 압축을 푼다. 이클립스를 실행한 후, 프로젝트가 저장될 워크스페이스를 선택한다.
  2. 유로파 업데이트 사이트에서 업데이트 관리자를 통한 플러그인 설치

    1. Help - Software Updates - Find and Install - Search for new features to install - Next 클릭
    2. Sites to include in search 박스에서 Web Tools Platform (WTP) Updates를 체크 - Finsh 클릭 (설치가 진행되는것은 아니다)
    3. 미러 사이트를 선택하면 WTP가 의존하는 Plugin들을 포함하여 다운로드, 설치할 수 있다. Next를 클릭하고 약관에 동의하고 설치를 진행한다.


위로



웹 애플리케이션 만들기

이번 절에서는 WTP를 이용해 웹 애플리케이션을 만들고 WTP에서 빈(bean) 객체가 처리되는 모습을 살펴보겠다.


프로젝트 생성

우선, 웹 개발을 시작하기에 앞서 테스트 서버(이 글에서는 톰캣 5.5을 이용한다)와 JRE를 설정한다. JRE는 Preferences - Java - Installed JREs에서 설정할 수 있고, 아래 그림과 같은 서버 설정 화면에서도 바로 넘어갈 수 있다. 우선, 톰캣 5.5 다운로드 페이지에서 코어 패키지를 다운로드한다. WTP는 톰캣의 jar 파일들만 이용하기 때문에 설치할 필요가 없다. 적당한 위치에 다운로드해 압축을 푼 후 Preference - Server - installed Runtime - add로 서버를 등록한다.

WTP는 여러 종류의 서버를 지원한다. 아래 그림처럼 원하는 서버를 선택하고 Next를 클릭한다.

그림

서버를 선택한 후, 서버의 경로를 선택하고 JRE를 지정한다.

: 윈도우에서 WTP를 처음 설치한 경우 기본적으로 JRE가 설정되어 사용되고 있다. 하지만 윈도우에서는 지정된 JRE로 톰캣을 시동하면 에러가 발생할 때가 있다. 그럴 경우, Installed JRE을 클릭해 JRE가 아닌 JDK를 선택하고 지정하도록 한다.

이클립스는 모든 작업이 프로젝트 단위로 이루어진다. 메모장이나 에디트플러스(Editplus)처럼 단일 파일을 열어 사용하지 않는다는 말이다. 우선, 이클립스 WTP에서 웹 애플리케이션을 생성하기 위해 axis2store라는 이름으로 Dynamic Web Project를 생성한다.

  • File -> New -> Project -> Web 카테고리 -> Dynamic Web Project
  • Project name: axis2store – Finish 클릭

클래스, 웹 페이지 생성

자! 이제 웹 개발을 시작할 준비가 됐다. 프로젝트를 열고 Java Resource: src에서 오른쪽 클릭으로 클래스를 생성한다.

패키지명: axis2.store, 클래스명: Customer를 입력하고 Finish를 클릭한다. 다음으로 자동 생성된 Customer 클래스에 예제에서 쓸 변수들을 선언한다.

  

package axis2.store;
public class Customer {
    private String id;
    private String name;
    private String address;
    private String phone;
}
 

위의 변수에서 오른쪽 클릭 - Source - Generate Getters and Setters를 클릭하면 변수에 대한 get, set 메서드를 자동으로 생성해 준다.

  

public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
... 중략 ...
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
 

다음 연재에서 Products 빈 클래스와 Orders 빈 클래스를 만들기로 하고 우선 위의 빈을 이용해 보자. 서버 측에서 빈 객체를 처리하기 위한 Manager 클래스를 만든다.

  

package axis2.store.mgr;
import axis2.store.Customer;

public class CustomerManager {


    public Customer getCustomer(String id){
        Customer customer = new Customer();
        customer.setName("김광섭");
        customer.setAddress("용인");
        customer.setId("kwangsub");
        return customer;
    }


    public int insertCustomer(Customer customer){
        // DB 수행
        System.out.println(customer.getName());
        System.out.println("서버의 작업이 작동됩니다.");
        return 1;
    }
}
 

위 코드를 보면 insertCustomer() 메서드가 클라이언트로부터 받은 Customer객체를 처리하는 메서드다. 1회에서는 DB 처리 부분을 생략하였고, Customer 객체가 들어오면 객체의 getName()을 콘솔에 찍어주고 그냥 1을 반환하도록 했다. DB 처리 부분은 다음 연재에 좀더 자세히 설명하겠다.
클래스를 만들었을 때와 비슷한 방법으로 이번에는 클래스가 아닌 JSP 파일을 /WebContent/customer 밑에 form.jsp라는 이름으로 만든다. form.jsp 내에 사용자의 항목을 입력할 수 있는 양식을 추가한다. ContentType은 UTF-8로 지정한다.

  

<form method="post" action="proc_form.jsp">
    <p><label for="id">아이디</label><input type="text" id="id" name="id"></input></p>
    ... 중략 ...
    <p><label for="phone">전화 </label><input type="text" id="phone" name="phone"></input></p>
    <p><input type="submit" value="확인"/></p>
</form>
 
한글 문제
파라미터를 받아 출력을 하면 한글이 다 깨져 출력되는 것을 볼 것이다. URL 인코딩되어 전송된 값을 다시 복원하지 않았기 때문이다. form.jsp의 content-type을 utf-8로 지정하였으니 다음과 같은 방법으로 복원할 수 있다.

String name = new String(request.getParameter("name").getBytes("8859_1"), "UTF-8");

form.jsp에서 넘어온 값을 처리하기 위한 proc_form.jsp도 만든다(바로 서블릿으로 넘겨 처리할 수 있지만 필자는 서블릿에서 HTML렌더링 작업이 번거로워 렌더링은 대부분HTML 코드에서 처리한다). 다음 코드는 넘어온 값을 처리하기 위한 proc_form.jsp의 내용이다.






  

<body>
<%
    Customer customer = new Customer();

    customer.setId(StringEncoder.toKorUTF8(request.getParameter("id")));
    ... 중략 ...
    customer.setPhone(StringEncoder.toKorUTF8(request.getParameter("phone")));
   
    CustomerManager customerMgr = new CustomerManager();
    int flag = customerMgr.insertCustomer(customer);
   
    if(flag == -1){
%>
    <p>문제 발생 에러!</p>
<%
    }else{
%>
    <p><%=customer.getId() %></p>
    ... 중략 ...
    <p><%=customer.getPhone() %></p>
<%
    }
%>
</body>
 

서버 실행, 테스트

이제 서버를 구동해 보자. 오른쪽 Project Explorer의 form.jsp에서 오른쪽 클릭 - Run As - Run on Server를 선택하면 서버를 선택하는 마법사 화면이 나올 것이다. 위에서 설정한 벤더의 서버를 선택한 후 서버를 구동한다. 아무 문제 없이 서버가 구동되면 브라우저 탭이 생성되고 form.jsp를 보여줄 것이다.

"확인" 버튼을 누르면 proc_form.jsp가 호출되고 CustomerManager.insertCustomer()가 호출된다. 서버에서 DB에 대한 별다른 동작을 수행하지 않지만 콘솔에는 insertCustomer의 out.println 작업이 수행됨을 볼 수 있다.


WTP에서 Src 디렉터리와 WebContent 디렉터리

  • WebContent 디렉터리는 톰캣의 Context(http://localhost:8080/axis2의 axis2에 해당함)를 root로 보여주는 디렉터리라 볼 수 있다.
  • Src 디렉터리는 개발 중 생성되는 서블릿이나 빈 클래스가 위치하는 곳이다. 컴파일된 클래스 파일들은 /build/classes로 들어간다.
  • war(web application archive)로 익스포트할 경우, WebContent는 axis2의 폴더로, src는 컴파일되어 WEB-INF/classes로 바뀐다.


위로



배포 가능한 WAR 만들기

이렇게 만들어진 웹 애플리케이션을 압축형태로 만들어 배포할 수 있다. war 파일은 톰캣 컨테이너에 복사하는 것만으로 배치 작업을 완료할 수 있다. 위의 작업에서 만들어진 웹 애플리케이션의 프로젝트에서 Export 버튼을 선택한다. Export - Web - War files를 선택하고 Next를 누르고 나서, war 파일이 저장될 위치(destination)를 지정하고 Finish 버튼을 클릭한다.

그림

생성된 war 파일을 %TOMCAT_HOME/webapps/에 복사한 후 서버를 구동하면 좀전의 예제와 동일한 모습을 확인할 수 있다. 지금까지 WTP를 이용해 웹 애플리케이션을 구축해보았다. 이제 Axis2에 대한 소개와 사용법을 살펴보자.



위로



Axis2에 대해

Axis2 는 웹 서비스를 구현하는 데 필요한 엔진과 유용한 도구들을 제공한다. 이전 버전의 아파치 Axis와 다른 점은 기능들을 확장 가능한 모듈 형태로 인터페이스를 제공하고 구현되어 있다는 것이다. 이는 이클립스의 플러그인 기능과 비슷하다. Axis2는 자바와 C를 이용하여 Axis2 웹 서비스 엔진을 사용할 수 있도록 Axis2/Java와 Ajax/C를 제공하고 있다. Axis2의 기능을 크게 보면 다음과 같다.

  • SOAP 메시지 전송 기능
  • SOAP 메시지를 받고 처리(파싱)하는 기능
  • POJO(Plain Old Java Object)를 이용한 웹 서비스 구축 기능
  • WSDL을 이용해 서버, 클라이언트 클래스를 생성하는 기능
  • WSDL 검색 기능
  • 첨부파일을 지닌 SOAP 메시지 전송 및 송신 기능
  • REST 기반 웹 서비스 생성 및 활용 기능
  • 모듈로 제공되는 WS-Security, WS-ReliableMessaging, WS-Addressing, WS-Coordination, WS-Atomic Traction 등을 이용한 서비스 생성 및 활용 기능
그림
[그림 출처. http://ws.apache.org/axis2/1_3/userguide.html#whatis]

Axis2 를 쉽게 이해하려면 웹 서비스의 흐름을 이해하는 것이 도움이 된다. 웹 서비스의 흐름을 살펴보면 위 그림처럼 애플리케이션에서 헤더와 바디에 정보를 담은 XML 기반 SOAP 메시지를 생성한다. 필요하다면 WS-Addressing이나 WS-Security 같은 추가 작업을 수행할 수도 있다. 메시지를 보낼 준비가 되면 HTTP를 통해 전송하고 수신자는 메시지를 받는다(HTTP 통신뿐만 아니라 TCP, 이메일, JMS 전송도 가능하다). 만일 송신하는 곳에서 WS-Addressing이나 WS-Security를 수행했다면 수신하는 쪽에서도 적당한 작업을 수행해야 한다. 서비스 요청시에는 클라이언트가 송신자가 되고 서버가 수신자가 되며, 응답시에는 그 반대가 된다. 이렇게 서버와 클라이언트가 웹 서비스 요청과 응답에 SOAP으로 통신을 하게 된다.

Axis2는 SOAP 메시지 생성부터 전송, 수신, 처리까지 일련의 작업을 쉽게 도와주는 엔진이다. 이러한 작업들의 각 부분에서 Axis2는 모듈화된 기능을 추가, 처리할 수 있도록 지원한다. WS-Security 구현을 지원하는 Rampart 모듈, WS-ReliableMessaging을 지원하는 Sandesha 모듈, WS-Addressing을 지원하는 Addressing 모듈은 Axis2의 대표적인 모듈이다. 추가 모듈을 http://ws.apache.org/axis2/modules/index.html에서 확인할 수 있다.

Axis2를 다운로드해 디렉터리 구조를 살펴보자. 우선 bin에는 콘솔에서 수행할 수 있는 실행파일들이 있다. 주목할 만한 부분만 보고 넘어가겠다.

  • $AXIS2_HOME/bin - 콘솔을 통해 단독(stand-alone) 서버 작동, WSDL을 자바로 변환해주는 작업, 자바를 WSDL로 변환해주는 작업, 클래스 패스 설정을 하는 배치파일들이 들어 있다.
  • $AXIS2_HOME/conf – bin 디렉터리에 있는 axis2server로 서버를 작동시킬 때 연동되는 환경설정 파일이 들어 있다.
  • $AXIS2_HOME/lib - axis2 엔진에서 쓰는 라이브러리가 들어 있다.
  • $AXIS2_HOME/repository/modules - aixs2가 작동하면서 쓰일 추가 모듈들이 들어 있다.
  • $AXIS2_HOME/repository/services - 실제 서비스들이 있는 arr(axis2 archive) 파일들이 들어 있다. arr 파일을 생성해 넣어주면 서비스가 배치된다.
  • $AXIS2_HOME/webapp - 서비스의 현황, 등록, 제거 작업을 웹에서 수행할 수 있게 지원한다. ANT를 이용해 war 파일을 생성할 수 있는데 이때 /repository, /moudles에 들어있는 모듈과 서비스들이 함께 묶여 배포 가능한 war로 만들어준다. 이 war를 $TOMCAT_HOME/webapps에 넣어주고 실행하면 서비스가 된다. 보통은 http://ws.apache.org/axis2/download.cgi에서 war를 받아 arr를 webapps에 복사하여 사용한다.

Axis2 Simple Server 예제

이해를 돕기 위해 간단하게 예제를 진행해 보자. 먼저 Axis2의 SimpleAxisServer를 이용하여 서비스를 구동해 보자. 구동 순서는 다음과 같다.

  1. export JAVA_HOME=/Library/Java/Home
  2. export AXIS2_HOME=/Users/kskim/Documents/01.Dev/11.Axis/axis2-1.3
  3. $AXIS2_HOME/bin/axis2.sh
  4. $AXIS2_HOME/bin/axis2server.sh
kwangsub-macbook:~/Documents/01.Dev/11.Axis/axis2-1.3/bin kskim$ ./axis2server.sh
Using AXIS2_HOME: /Users/kskim/Documents/01.Dev/11.Axis/axis2-1.3
Using JAVA_HOME: /Library/Java/Home/
[INFO] [SimpleAxisServer] Starting
[SimpleAxisServer] Using the Axis2 Repository/Users/kskim/Documents/01.Dev/11.Axis/axis2-1.3/repository
[SimpleAxisServer] Using the Axis2 Configuration File/Users/kskim/Documents/01.Dev/11.Axis/axis2-1.3/conf/axis2.xml
[INFO] Deploying module: addressing-1.3
... 중간 생략...
[INFO] Deploying module: soapmonitor-1.3
[INFO] script module activated
[INFO] Deploying Web service: version.aar
[INFO] [SimpleAxisServer] Started
[SimpleAxisServer] Started
[INFO] Listening on port 8080

위의 콘솔 화면을 보자. SimpleAxisServer가 시동되면서 /modules, /repository 내의 모듈들과 서비스 가능한 arr 파일을 배치하고 있다.

http://localhost:8080/axis2/services로 접속하면 %AXIS2_HOME/repository 안의 version.arr이 어떤 서비스를 제공하고 있는지 볼 수 있다. Version 서비스는 Axis2의 버전을 보여주는 getVersion()이라는 메서드를 제공한다. 또한, http://localhost:8080/axis2/services/Version?wsdl에서 WSDL 정보를 얻을 수 있다. 이제 wsdl2java를 이용하여 클라이언트 애플리케이션을 제작하기 위한 클라이언트 스텁들을 만들어 보겠다.

  

$AXIS2_HOME/bin/wsdl2java uri http://localhost:8080/axis2/services/Version?wsdl
 

이상이 없다면 파일 세 개가 생성된 것을 볼 수 있다.

  • sample/axisversion/ExceptionException0.java
  • sample/axisversion/VersionCallbackHandler.java
  • sample/axisversion/VersionStub.java

이렇게 만들어진 스텁 파일을 이용하여 웹 서비스 서버에서 제공중인 Version 서비스를 아래와 같이 이용할 수 있다.

  

package sample.axisversion;
import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;
public class VersionMain {
    public static void main(String[] args) {
        try {
            VersionStub stub = new VersionStub();
            VersionStub.GetVersionResponse adb = stub.getVersion();
           
            System.out.println(adb.get_return());

        } catch (AxisFault e) { e.printStackTrace();
        } catch (RemoteException e) { e.printStackTrace();
        } catch (ExceptionException0 e) { e.printStackTrace();
        }
    }
}
 

TIP: class를 못찾는 에러가 나오면 실행하기에 앞서 %AXIS2_HOME/bin/axis2.sh를 이용해 classpath를 등록해 준다. 실행 후, 다음과 같은 결과를 확인할 수 있다.

Hello I am Axis2 version service , My version is 1.3


위로



Customer Manager 웹 서비스 만들기

위 "웹 애플리케이션 만들기"에서 작업했던 코드를 그대로 이용하여 웹 서비스를 만들어 보자. Axis2에서는 기존 POJO를 이용해 웹 서비스를 구축할 수 있다. 이 외에도 AXIOM, ADB, XMLBeans, JiBX를 이용해 웹 서비스를 구축할 수 있다. "웹 애플리케이션 만들기"에서 작업한 프로젝트 폴더(아래 경로) 밑에 services.xml을 만든다.

  • Eclipse-WTP/workspace/axis2store/src/META-INF/services.xml
  

<service name="CustomerManager" scope="application">
    <description>
        Axis2Store: Customer Service
    </description>
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" 
		class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" 
		class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </messageReceivers>
    <parameter name="ServiceClass">axis2.store.mgr.CustomerManager</parameter>
</service>
 

앤트(ant)를 이용해 서비스를 빌드하기 위해 아래 코드와 같이 build.xml을 만든다.

  • Eclipse-WTP/workspace/axis2store/build.xml
  

<project name="CustomerManager" basedir="." default="generate.service">

    <property name="dest.dir" value="build" />
    <property name="dest.dir.classes" value="${dest.dir}/classes" />
    <property name="dest.dir.lib" value="${dest.dir}/lib" />
    <property name="axis2.home" value="/Users/kskim/Documents/01.Dev/11.Axis/axis2-1.3" />
	<!-- axis2가 있는 경로를 지정한다.-->
    <property name="repository.path" value="${axis2.home}/repository/services" />

    <path id="build.class.path">
        <fileset dir="${axis2.home}/lib">
            <include name="*.jar" />
        </fileset>
    </path>
    <path id="client.class.path">
        ...중략...
    </path>
    <target name="clean">
        ...중략...
    </target>
    <target name="prepare">
        ...중략...
    </target>

    <target name="generate.service" depends="clean,prepare">
        <copy file="src/META-INF/services.xml" tofile="${dest.dir.classes}/META-INF/services.xml" 
		overwrite="true" />

        <javac srcdir="src" destdir="${dest.dir.classes}" includes="axis2/store/**,axis2/store/mgr/**,
		axis2/store/util/**">
            <classpath refid="build.class.path" />
        </javac>

        <jar basedir="${dest.dir.classes}" destfile="${dest.dir}/CustomerManager.aar" />
		<!-- axis2 archive파일을 만든다.-->

        <copy file="${dest.dir}/CustomerManager.aar" tofile="${repository.path}/CustomerManager.aar"
		overwrite="true" />
    </target>

</project>
 

빌드 내용을 살펴보면 크게 다음과 같은 작업들이 수행됨을 알 수 있다.

  1. META-INF/services.xml을 dest.dir.classes에 복사
  2. javac 컴파일을 마치고 jar로 CustomerManager.aar를 생성
  3. 생성된 CustomerManager.arr는 %AXIS2_HOME/repository로 복사

앤트를 이용해 서비스를 생성한다.

  

kwangsub-macbook:~/Documents/eclipse/workspace/axis2store kskim$ ant generate.service
... 중략 ...
BUILD SUCCESSFUL
Total time: 1 second
 

%AXIS2_HOME/bin/axis2server.sh를 실행하면 CustomerManager.arr이 등록되는 모습을 확인할 수 있다.

  

[INFO] Deploying Web service: CustomerManager.aar
 

http://localhost:8080/axis2/services/CustomerManager?wsdl로 접속하면 CustomerManager의 WSDL을 확인할 수 있다. WSDL경로도 알았으니 wsdl2java를 이용해 스텁 파일들을 생성해 보자.

  

$AXIS2_HOME/bin/wsdl2java uri http://localhost:8080/axis2/services/CustomerManager?wsdl
 

생성된 스텁 파일들을 이용해 클라이언트 프로그램을 작성할 수 있다. 예제는 앞에 나온 내용을 참고하기 바란다.



위로



톰캣에 웹 서비스 등록하기

%AXIS2_HOME/bin/axis2server.sh를 이용한 서비스 실행이 아닌 기존에 작동중인 톰캣 서버에 바로 등록하는 간단한 방법을 소개한다. http://ws.apache.org/axis2/download/1_3/download.cgi에서 war를 다운로드해 axis2.war를 %TOMCAT_HOME/webapps에 복사하고 서버를 구동하면 아래와 같이 배치되는 내용을 콘솔창에서 확인할 수 있다.

  

...중략...
[INFO] Deploying module: addressing-1.3
[INFO] Deploying module: script-1.3
...중략...
[INFO] script module activated
[INFO] Deploying Web service: version-1.3.arr
 

%TOMCAT_HOME/webapps/axis2/WEB-INF/services에 위에서 만들어진 CustomerManager.aar를 복사한다. 잠시 후 배치되는 모습을 콘솔에서 확인할 수 있다.

  

[INFO] Deploying Web service: CustomerManager.aar
 

http://localhost:8080/axis2로 접속하면 등록되어 있는 서비스 목록과 현재 Axis2 버전의 Validation 여부, 웹 버전 Axis2 administration console을 확인할 수 있다.

웹 버전 Axis2 administration console은 좀전의 aar 파일을 복사했던 작업, 서비스 활성화/비활성화 등 웹 서비스에서 쓰이는 기능들을 웹에서 처리할 수 있도록 지원한다. http://localhost:8080/axis2/axis2-admin/로 들어가면 여러 기능을 확인할 수 있다. 초기 계정은 admin/axis2다.

지금까지 만들었던 방법과 동일하게 WSDL을 통해 스텁들을 만들고 클라이언트를 구축할 수 있다.

  

$AXIS2_HOME/bin/wsdl2java uri http://localhost:8080/axis2/services/CustomerManager?wsdl
 


위로


   소셜 북마크

   mar.gar.in mar.gar.in
    digg Digg
    del.icio.us del.icio.us
    Slashdot Slashdot

결론

이번 1회에서는 WTP와 Axis2에 대해 살펴 보았다. 2회에서는 Customer 빈 객체 외에도 Order, Product 등과 같은 객체들이 추가로 나와 하나의 프로세스를 완성할 것이다. 이렇게 만들어진 프로세스를 바탕으로 이 연재의 핵심인 WTP에서 웹 서비스를 구축하는 방법에 대해 설명할 것이다.



위로




참고 사이트

  1. http://ws.apache.org/axis2/
  2. http://www.eclipse.org/webtools/
  3. http://www.eclipseplugincentral.com





필자 소개

김광섭김광섭 kwangsub.kim@gmail.com

서울대학교 치과의료정보기술전공 박사과정을 휴학하고 케이포엠(K4M)에서 전문연구요원으로 병역특례근무를 하고 있다.








developerWorks에 소개되었으면 하고 바라던 주제가 있으시거나, 관심 있는 기술에 대한 전문가의 지식과 견해가 궁금하시다면 Developer CoD 코너에 원하는 주제를 신청해주세요. 해당 분야 전문가를 필자로 섭외해, 여러분이 원하는 주제에 대한 맞춤형 컨텐츠를 제작해드립니다.
developer CoD 신청양식 다운로드   MS워드 아이콘   아래아한글 아이콘



[지난 Developer CoD 보기]


    IBM 소개 개인정보 보호정책 문의