728x90
반응형
1. Eclipse에서 New Project -> Dynamic Web Project를 선택합니다.

   - Axis2의 구축조건은 (Dynamic Version 2.2-2.5 이하입니다.)

   - Dynamic Version 이란 무엇인가?

     즉 J2EE의 각 버전에서 정의된 지원하는 서블릿 API 버전이라고 생각하시면 됩니다.
      
         J2EE 1.4는 2.4까지 지원
         J2EE 1.5는 2.5까지 지원
         J2EE 1.6는 3.0까지 지원
          
         TOMCAT 5.5는 2.4까지 지원
         TOMCAT 6.0는 2.5까지 지원
         TOMCAT 7.0는 3.0까지 지원 

    필자는 TOMCAT 6.0을 사용하고 있으므로 2.5로 하겠습니다. 
 



2. Eclipse -> Window -> Preferences -> Web Services -> Axis2 Preferences에서 
    
    Axis2 디렉토리를 설정합니다. (없으신 분은 다운받으셔야 합니다.) 
    http://axis.apache.org/axis2/java/core/download.cgi 

  

 


3. Project를 선택하시고 -> Properties -> Proejct Facets에서 Axis2 Web Service를 체크해 줍니다.  


4.Axis2를 구축하려면 wsdl가 있어야 되는데 필자는 이클립스에서 기본적으로 제공하는 wsdl를 가지고 테스트를 해 보겠습니다. 개발적으로 가장 밑바탕이 되는건 역시 간단한 sample를 가지고 테스트를 하는거니까요. 

 

 


 


Target Name은 http://service.soap.co/ 을 입력해 줍니다. (패키지명 반대) 
 

 


5. 자 이제 생성된 wsdl를 가지고 jax-ws용 Object를 생성해 보도록 하겠습니다.

명령어는 wsimport wsdl파일명 -p 패키지명 -keep -Xnocompile 입니다. 

 



 

 


6. 생성된 Object를 src로 복사하여 옮겨 주도록 합시다.  




7. Tomcat 기동옵션 추가

java.lang.NoSuchMethodError: javax.xml.ws.WebFault.messageName()Ljava/lang/String;

Exception 의 원인은 Axis2는 JAX-WS 2.2를 지원하며 JDK 6도 JAX-WS 2.0까지 지원을 하지만 JDK 6이 먼저 

classLoder가 되기 때문에 Tomcat 기동옵션에 JDK 6의 클래스보다 Axis2의 JAX-WS 2.2가 먼저 기동 되도록 

기동옵션을 수정해 줍니다. 

Axis2 디렉토리에 있는 geronimo-jaxws_2.2_spec-1.0.jar 파일을 C:\apache-tomcat-6.0.36\endorsed에 복사하여

Tomcat 기동옵션에 다음과 같이 추가해줍니다.

Djava.endorsed.dirs="C:\apache-tomcat-6.0.36\endorsed"

package co.soap.service;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.soap.SOAPException;
import javax.xml.ws.BindingType;
import javax.xml.ws.soap.SOAPBinding;



/**
 * This class was generated by the JAX-WS RI.
 * JAX-WS RI 2.1.6 in JDK 6
 * Generated source version: 2.1
 * 
 */
@WebService(name = "sample", targetNamespace = "http://service.soap.co")
@XmlSeeAlso({
    ObjectFactory.class
})
@BindingType(value = SOAPBinding.SOAP11HTTP_BINDING) 
public interface Sample { 

    /** 
     * 
     * @param in
     * @return
     *     returns java.lang.String
     * @throws SOAPException 
     */ 
    @WebMethod(operationName = "NewOperation", action = "http://service.soap.co/NewOperation")
    @WebResult(name = "out", targetNamespace = "")

    @RequestWrapper(localName = "NewOperation", targetNamespace = "http://service.soap.co", className = "co.soap.service.NewOperation")
    @ResponseWrapper(localName = "NewOperationResponse", targetNamespace = "http://service.soap.co", className = "co.soap.service.NewOperationResponse") 

    public String newOperation(
        @WebParam(name = "in", targetNamespace = "")
        String in) throws SOAPException;

}



8. 구축된 Object를 이용하여 Service를 할 Class를 만들어 주셔야 합니다.

    Sample.java를 보시면 Interface기 때문에 이 Interface를 이용하여 implements 할 

    class를 만들어 주셔야 합니다. 
 


리턴될 형태가 String이기 때문에 간단한 메세지를 적어서 return 해 주도록 합시다. 


package co.soap.service;

import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.soap.SOAPException;
import javax.xml.ws.BindingType;
import javax.xml.ws.soap.SOAPBinding;

@WebService(endpointInterface = "co.soap.service.Sample", serviceName = "sample", portName="sampleSOAP", targetNamespace = "http://service.soap.co", wsdlLocation = "/wsdl/sample.wsdl")
@BindingType(value = SOAPBinding.SOAP11HTTP_BINDING) 
public class SampleService implements Sample {
      
@Override  
public String newOperation(
@WebParam(name = "in", targetNamespace = "") String in) throws SOAPException{
String result = null; 
result = "Soap Axis2 Return Success !!"; 

return result; 
}

}
 


9. 구축된 Project에서 lib 디렉토리를 보시면 jsr311-api-1.0.jar가 없는 것을 아실 수 있을 것입니다. jsr311-api-1.0.jar 파일을 Axis2를 웹 구동하기 위해 필요하기 때문에 Axis2설치 디렉토리 lib에서 복사하여 붙여 주도록 합시다.

(없을 경우 java.lang.NoClassDefFoundError: javax/ws/rs/Produces 발생) 

 


10. Tomcat를 기동하여 줍니다. 
 


11. 기동된 localhost/프로젝트를 보시면 아래와 같이 service가 등록된 것을 확인하실 수 있을 겁니다.  

 


 


12. http://localhost:8080/soapAxis2/services/sample?wsdl
  
     wsdl가 생성되는 것을 확인합니다. 
 



 


13. SoapUI (Soap 테스트 유틸)을 기동하여 방금 생성된 http://localhost:8080/soapAxis2/services/sampleImpl?wsdl를 붙여 넣어 테스트를 해 봅니다. 

 


14. 아래와 같이 코딩한 메세지가 리턴되면 성공하신 것을 보실 수 있을 겁니다.
 

 

출처:http://choyeonseop.blogspot.kr/2013/04/soap-axis2-eclipse-axis2jax-ws.html

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,