Sanggu's blog




최상단 광고 코드

 추천 사이트

 애자일 이야기 : http://agile.egloos.com
 서명덕 기자의 인터넷 : http://itviewpoint.com
 비지니스 뉴스 : http://www.ciobiz.co.kr
 MOCOMSYS : http://www.mocomsys.com
 Apache Software : http://www.apache.org
 소프트웨어 기술경력관리: http://career.sw.or.kr
 한이음 (지식경제부): http://www.hanium.or.kr
 IT 기술 뉴스: http://www.bloter.net/
 IBM 티볼리 까페: http://cafe.naver.com/tivolitool.cafe
 JAVA jar 검색 : http://www.findjar.com
 VM Ware 가상화: http://www.vmware.com

2011년 10월 6일 목요일

AXIS2 웹서비스 샘플 프로그램

AXIS2 framework로 Provider (Server), Consumer (Client)를 작성 샘플을 살펴 봅시다.

=============================================================
Web Service Client 예제
=============================================================

package com.zero.test.webservice;

import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;

public class SimpleClient 
{
    // 사용할 서비스의 HTTP 주소
    private static EndpointReference targetEPR = 
    new EndpointReference     ("http://localhost:8080/axis2/services
                              /UserGuideSampleService");

    public static OMElement greetUserPayload(String personToGreet) 
    {
        // 서비스 콜을 위해 필요한 내용을 세팅 한다.
        OMFactory fac = OMAbstractFactory.getOMFactory();

        // 1) 네임스페이스 지정  
        OMNamespace omNs = fac.createOMNamespace   ("http://example1.org/example1",
      "example1");

        // 2) 콜 할 매서드 명 설정
        OMElement method = fac.createOMElement("sayHello", omNs);

        // 3) 콜 할 매서드의 파라메터 설정
        OMElement value = fac.createOMElement("personToGreet", omNs);
       value.addChild(fac.createOMText(value, personToGreet));

       // 4) 매서드의 파라메터를 매서드에 ADD (JDOM 이랑 같은 방식)
       method.addChild(value);

       /*
        * 
        * ${personToGreet}
        * 
        * 
        * 이거를 만들어서 반환
         */

       return method;
    }



    public static void main(String[] args) 
    {
        try 
        {
            //greetUserPayload() 를 통해 OMElement 형태의 메서드+
              파라메터 XML 를 받는다.
            OMElement payload = SimpleClient.greetUserPayload("John");
            // 전송 옵션 설정
             Options options = new Options();

            // 서비스 주소 세팅
             options.setTo(targetEPR);
       
            // 서비스 프로토콜 세팅
             options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

            // 실제로 메세지 전송을 담당할 Sender 인스턴스 생성
             ServiceClient sender = new ServiceClient();

           // 옵션 객체에 설정해 놓은 전송 옵션을 sender 에 마운트
             sender.setOptions(options);

           // ** sendReceive 메세지로 실제 메세지 전송을 시작 한다.
           OMElement result = sender.sendReceive(payload);

           // 결과값을 받아서 화면에 뿌려줌.
           String response = result.getFirstElement().getText();
           System.out.println(response);
        } 
        catch (Exception e) 
        { 
            System.out.println(e.toString());
        }
    }
}

============================================================ 
Web Service Server 예제
============================================================ 
package com.zero.test.webservice; 
import org.apache.axiom.om.OMAbstractFactory; 
import org.apache.axiom.om.OMElement; 
import org.apache.axiom.om.OMFactory; 
import org.apache.axiom.om.OMNamespace; 
import org.apache.xmlbeans.xml.stream.XMLStreamException; 

public class SimpleService 
{ 
    public OMElement sayHello(OMElement element) throws XMLStreamException   
    { 
       // Client 의 서비스 요청을 받음 (AXIS2 의 OMElement 형태)
         element.build();
         element.detach();
         
         
         // 받은 요청 OMElement 를 파싱하여 파라메터를 추출.(JDOM 이랑 같다고 보면 됌)
         String rootName = element.getLocalName();
         System.out.println("Reading "+rootName+" element");
        
         OMElement childElement = element.getFirstElement();
         String personToGreet = childElement.getText();
         
         // 파싱한 데이터를 가지고 Biz Logic 를 수행함
         
         // Biz Logic 수행 결과를 Client 에 전송.
         OMFactory fac = OMAbstractFactory.getOMFactory();
         OMNamespace omNs = fac.createOMNamespace("http://example1.org/example1",
         "example1");
         OMElement method = fac.createOMElement("sayHelloResponse", omNs);
         OMElement value = fac.createOMElement("greeting", omNs);
         value.addChild(fac.createOMText(value, "Hello, "+personToGreet));
         method.addChild(value);

         return method;
    }
}

댓글 없음:

댓글 쓰기