결합성만으로 따지면 CXF(구 XFire)를 사용하고 싶었지만, 파워빌더와의 호환성으로 Axis2 를 사용하게 되었습니다.
간단하게 샘플을 만들었던 내용을 적습니다. 그러니 태클 사절.!
필수.
1. Axis2 : http://ws.apache.org/axis2/
2. axis2-spring-1.4.x.jar : Spring
3. axis2-jaxws-api-1.4.x.jar : Annotations
시작.
- .aar(Axis2 achieve) 를 직접 만들지는 않겠습니다.
1. Axis2.xml 을 어딘가에 위치 시킵니다. 그렇다고 아무곳이나...ㅡㅡ;
2. WEB-INF/services/FRWebservice 폴더를 만들고, 다음과 같은 구조로 하위구조를 생성합니다.
../FRWebservice/META-INF
../FRWebservice/META-INF/MANIFEST.MF
../FRWebservice/META-INF/services.xml
이것이 사실상 끝입니다. ㅡㅡ; 그럼 서비스를 올리기 위한 소스를 만들고 디플로이 하겠습니다.
- interface : SProdWebService.java
public interface SProdWebService {
public String helloWs(String msg);
}
- class : SProdWebServiceImpl.java
...
@WebService(serviceName = "SProdWebService")
public class SProdWebServiceImpl implements SProdWebService {
public String helloWs(String msg) {
return msg+" 나 웹서비스야!";
}
}
위의 소스를 FRWebservice/META-INF/services.xml 파일에 등록합니다.
<?xml version="1.0" encoding="UTF-8"?>
<serviceGroup>
<service name="SProdWebService">
<parameter
name="ServiceObjectSupplier"
locked="false"> org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier</parameter>
<parameter
name="SpringBeanName"
locked="false"> sProdWebService</parameter>
<!-- parameter name="ServiceTCCL" locked="false">composite</parameter -->
<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>
</service>
</serviceGroup>
빨간색으로 표기된 부분을 보시면
<service name="SProdWebService"> <-- 서비스명 입니다. Url의 http://localhost/services/SProdWebService?wsdl 이죠.
<parameter name="ServiceObjectSupplier" <-- 제공되는 Spring 연계부분입니다.
<parameter name="SpringBeanName" locked="false"> sProdWebService</parameter> <-- ApplicationContext-xxxx.xml 에서 지정된 bean id 를 입력합니다.
<bean id="sProdWebService".../>
자 그럼 웹으로 처리 하기 위해서 servlet 매핑을 해줘야 겠군요. web.xml에 Axis2를 추가합니다.
<!--
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.wso2.spring.ws.servlet.SpringAxis2Servlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
-->
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
<init-param>
<param-name>axis2.xml.path</param-name>
<param-value>/WEB-INF/spring/config/axis2.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
모든것이 끝났고 톰캣 기동을 하시면, wsdl 을 보실 수 있지 않을까요?
다음번에는 직접 시연과 Annotations 과 관련된 내용으로 해보겠습니다.
Programming!