CXF WebService Hello World

        因爲公司如今是.Net系統於Java系統並存,項目中不免須要跨平臺的遠程服務調用。最近恰好有一個項目須要Java Web系統調用.Net提供的WebService服務。權衡了下各個因素,最後決定使用 Apache CXF框架,沒有用過的同窗能夠參考http://cxf.apache.org/.  
         廢話很少說,上例子,方便你們參考,也給本身作個備份。  
項目環境:Spring、Struts二、Ibatis、Maven  
1、添加依賴  
Java代碼    收藏代碼
  1. <dependency>  
  2.      <groupId>org.apache.cxf</groupId>  
  3.      <artifactId>cxf-rt-core</artifactId>  
  4.      <version>2.2.4</version>  
  5. </dependency>  
  6. <dependency>  
  7.      <groupId>org.apache.cxf</groupId>  
  8.      <artifactId>cxf-rt-transports-http</artifactId>  
  9.      <version>2.2.4</version>  
  10. </dependency>  
  11. <dependency>  
  12.      <groupId>org.apache.cxf</groupId>  
  13.      <artifactId>cxf-rt-databinding-aegis</artifactId>  
  14.      <version>2.2.4</version>  
  15. </dependency>  
  16. <dependency>  
  17.      <groupId>org.apache.cxf</groupId>  
  18.      <artifactId>cxf-rt-frontend-jaxws</artifactId>  
  19.      <version>2.2.4</version>  
  20. </dependency>  
  21. <dependency>  
  22.      <groupId>commons-httpclient</groupId>  
  23.      <artifactId>commons-httpclient</artifactId>  
  24.      <version>3.1</version>  
  25. </dependency>   
2、定義接口  
根據wsdl文件,建立對應的Java服務。  
Java代碼 
  1. <wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://tempuri.org/">  
  2. <wsdl:types>  
  3. <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">  
  4. <s:element name="AddUser">  
  5. <s:complexType>  
  6. <s:sequence>  
  7. <s:element minOccurs="1" maxOccurs="1" name="name" type="s:string"/>  
  8. <s:element minOccurs="1" maxOccurs="1" name="password" type="s:string"/>  
  9. </s:sequence>  
  10. </s:complexType>  
  11. </s:element>  
  12. <s:element name="AddUserResponse">  
  13. <s:complexType>  
  14. <s:sequence>  
  15. <s:element minOccurs="1" maxOccurs="1" name="AddUserResult" type="s:int"/>  
  16. </s:sequence>  
  17. </s:complexType>  
  18. </s:element>  
  19. </s:schema>  
  20. </wsdl:types>  
  21. ...  
  22. </wsdl:definitions>  
Java代碼 
  1. package com.test.ws;  
  2. import javax.jws.WebMethod;  
  3. import javax.jws.WebParam;  
  4. import javax.jws.WebResult;  
  5. import javax.jws.WebService;  
  6. @WebService ( targetNamespace="http://tempuri.org/" )  
  7. public interface TestService {  
  8.     @WebMethod(operationName="AddUser")  
  9.     @WebResult(targetNamespace="http://tempuri.org/",name=AddOrderResult" )  
  10.     public int addUser(  
  11. @WebParam(name="name",targetNamespace="http://tempuri.org/")String name,   
  12. @WebParam(name="password",targetNamespace="http://tempuri.org/")String password);  
  13. }  

3、配置服務  
Java代碼 
  1. <bean id="testService" class="com.test.ws.TestService"   
  2. factory-bean="clientFactory" factory-method="create"/>  
  3. <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">  
  4. <property name="serviceClass" value="com.test.ws.TestService"/>  
  5. <property name="address" value="http://192.168.1.101/Service/TestService.asmx"/>  
  6. <property name="bindingId" value="http://schemas.xmlsoap.org/wsdl/soap12/"/>  
  7. </bean>  
完成之後,就能夠像引用本地服務同樣使用該遠程服務了。
相關文章
相關標籤/搜索