Axis2+spring整合例項
一、下載jar包
axis2-1.6.3下載:
下載地址:http://axis.apache.org/axis2/java/core/download.cgi,
下載axis2-1.6.3-bin.zip,此壓縮包包含了所有axis2的jar
spring3.1.4下載我就不廢話了
二、建立整合工程併發布測試
1.在搭好的spring MVC框架中,引入axis2的jar
2.在WEB-INF下建立services資料夾,,名字一定是services,其他不能識別,在services一定要再建立一個資料夾(名字順便,例如:MyService), 在MyService下建立一個資料夾,名字一定是META-INF,在META-INF下建立services.xml檔案和一個空的ServiceData.xml,這個名字也是不變的。
最後路徑是WEB-INF/services/MyService/META-INF/services.xml services.xml程式碼如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 訪問地址中的訪問那個webservice的名字 -->
<service name="TestWSService">
<description>Spring 整合例子 </description>
<parameter name="ServiceObjectSupplier">
org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
</parameter>
<!-- 配置在applicationContext中配置的bean,,這裡的值域bean中的id事一樣的,否則就報錯找不到bean錯 -->
<parameter name="SpringBeanName">testWSService</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
</messageReceivers>
</service>
最後目錄WEB-INF/services/MyService/META-INF/ServiceData.xmlServiceData.xml程式碼如下:
<?xml version="1.0" encoding="UTF-8"?>
<ServiceData>
</ServiceData>
三、在web.xml中加入以下資訊
<!--axis2 WebService配置資訊開始-->
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<!-- axis2 WebService配置資訊結束-->
四、在applicationContext.xml中注入引用的service
<bean id="testWSService" class="com.usi.jrtx.service.webservice.TestWSService"></bean>
五、TestWSService.java檔案
package com.usi.jrtx.service.webservice;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.github.miemiedev.mybatis.paginator.domain.Order;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.usi.jrtx.dao.account.AccountMapper;
import com.usi.jrtx.model.account.Account;
public class TestWSService {
@Autowired
private AccountMapper accountMapper;
/**
* 計算減法 d1-d2
*/
public Integer jianfa(Integer d1, Integer d2) {
return d1-d2;
}
/**
* 計算加法
*/
public Integer jiafa(Integer d1, Integer d2) {
PageBounds pageBounds = new PageBounds(1,1000,Order.formString("id.desc"));
Account account=new Account();
List<Account> list=accountMapper.queryAccounts(account, pageBounds);
System.out.println("接收d1:"+d1);
System.out.println("接收d2:"+d2);
for (int i = 0; i < list.size(); i++) {
System.out.println("賬戶名:"+list.get(i).getAccountName());
}
return d1+d2;
}
}
六、客戶端使用
package com.usi.jrtx.webservice;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.xml.namespace.QName;
import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
import com.usi.jrtx.model.soap.AccountVO81010;
import com.usi.jrtx.model.soap.ConsumeDetail;
import com.usi.jrtx.model.soap.ConsumeVO88010;
import com.usi.jrwl.util.XMLDomUtil;
public class WebserviceTest {
/**
* 測試
* @throws Exception
*/
public static void my() throws Exception {
String url = "http://192.168.20.34:8080/jrtxManager/services/TestWSService?wsdl";
try {
// 使用RPC方式呼叫WebService
RPCServiceClient serviceClient = new RPCServiceClient();
// 指定呼叫WebService的URL
EndpointReference targetEPR = new EndpointReference(url);
Options options = serviceClient.getOptions();
// 確定目標服務地址
options.setTo(targetEPR);
// 確定呼叫方法
options.setAction("urn:jiafa");
options.setTimeOutInMilliSeconds(60000);
QName qname = new QName("http://webservice.service.jrtx.usi.com","jiafa");
// 指定jiafa方法的引數值
String requestContent = "";
try {
} catch (Exception e) {
throw new Exception(e.getMessage(), e.getCause());
}
Object[] parameters = new Object[] {5,9 };
// 指定getPrice方法返回值的資料型別的Class物件
Class[] returnTypes = new Class[] { String.class };
// 呼叫方法一 傳遞引數,呼叫服務,獲取服務返回結果集
OMElement element = serviceClient.invokeBlocking(qname, parameters);
// 值得注意的是,返回結果就是一段由OMElement物件封裝的xml字串。
String result = element.getFirstElement().getText();
System.out.println(result);
} catch (AxisFault e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
my();
}
}
七、總結:就是那麼簡單!相關文章
- Spring Boot 整合 FreeMarker 例項Spring Boot
- Springboot整合mybatis框架(含例項Demo)Spring BootMyBatis框架
- SSM 框架快速整合例項--學生查詢SSM框架
- spring整合quartz的叢集配置例項Springquartz
- ActiveMQ的使用及整合spring的使用例項MQSpring
- FreaMarker入門教程,環境整合到使用例項
- Redis整合Spring結合使用快取例項RedisSpring快取
- Dubbo原始碼分析(一)Dubbo與Spring整合例項原始碼Spring
- SpringBoot+Dubbo的註解方式整合例項Spring Boot
- 單例項刪除ASM例項單例ASM
- 【Spring Boot架構】整合Mybatis-Plus的例項詳解Spring Boot架構MyBatis
- php例項化物件的例項方法PHP物件
- ruby中的類例項變數和例項的例項變數變數
- 2 Day DBA-管理Oracle例項-Oracle例項和例項管理概覽Oracle
- jQuery 例項jQuery
- OkHttpClient例項HTTPclient
- phpcocket例項PHP
- unittest例項
- 大型專案裡Flutter測試應用例項整合測試深度使用Flutter
- RAC 例項 遷移到 單例項 -- 使用RMAN Duplicate單例
- UML用例圖例項解析
- Spring mvc+struts2+Hibernate整合例項程式碼(註解詳解)SpringMVC
- js監聽鍵盤事件程式碼例項例項JS事件
- 演示中斷處理的例項(例項六)(轉)
- SQLMAP 例項COOKBOOKSQL
- ORM 例項教程ORM
- Java例項教程Java
- java介面例項Java
- YACC 例項分析
- Pull解析例項
- 管理 ASM 例項ASM
- 停止ASM例項ASM
- jQueryAjax例項演示jQuery
- 管理ORACLE例項Oracle
- 例項和物件物件
- Ant打包例項
- SQL TOP 例項SQL
- 策略模式例項模式