1. 程式人生 > >WebService應用Axis2到SSH專案

WebService應用Axis2到SSH專案

1.匯入一個整合好的SSH專案
原專案結構圖
在這裡插入圖片描述
在這裡插入圖片描述

2.將SSH專案的功能釋出出去

新建一個包:com.ssh.ws,將你要釋出的方法放到這裡面。我在這個包裡面建了Author介面和Author的介面實現類(記得在配置裡配置這兩個類)
applicationContext-ws.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<!--spring產生service物件 --> <bean id="AuthorService" class="com.ssh.ws.AuthorImpl"></bean> <!--spring管理axis2物件 --> <bean id="
axis2Service"
class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder">
</bean> </beans>

將axis2所需要的jar放入Maven管理的pom.xml檔案中,然後ctrl+s儲存(保持有網的狀態)

<!-- 引入Axis2依賴 -->
	<dependency>
	  <groupId>org.apache.axis2</groupId>
	  <artifactId>axis2</
artifactId
>
<version>1.6.2</version> </dependency> <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-transport-http</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-transport-local</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>org.apache.xmlbeans</groupId> <artifactId>xmlbeans</artifactId> <version>2.4.0</version> </dependency> <!-- axis2整合spring --> <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-spring</artifactId> <version>1.6.2</version> </dependency>

在web.xml裡面新增axis2的核心servlet(注意將struts的核心過濾器的外部訪問路徑更改為*.action)

<!--axis的核心servlet  -->
	<servlet>
	    <servlet-name>Axis2</servlet-name>
	    <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
	</servlet>
	<servlet-mapping>
	    <servlet-name>Axis2</servlet-name>
	    <url-pattern>/service/*</url-pattern>
	</servlet-mapping>

然後在WEB-INF新建一個service包,然後新建spring包 ,再新建一個META-INF然後把services.xml複製進去。

<?xml version="1.0" encoding="UTF-8" ?>
<serviceGroup>
	<service name="authorService" scope="application">
		<description>simple spring example</description>
		<parameter name="ServiceObjectSupplier">
			org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier
		</parameter>
		<parameter name="SpringBeanName">AuthorService</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>

將官方的提供的axis的web專案,複製到專案的webapp下面。(因為測試的時候,需要顯示頁面,不需要也行)
在這裡插入圖片描述
3.啟動專案,服務類也會跟著專案啟動
在這裡插入圖片描述
如果要釋出多個服務,則在applicationContext-ws.xml配置服務物件類和services.xml配置service

4.啟動服務完成之後,嘗試獲取服務端資料
5.新建一個java專案,使用axis2的外掛,自動生成伺服器釋出的程式碼到新建專案的src檔案下,然後重新整理專案
6.專案報錯,則把axis2的Jar包拷過去,加入jar包到專案中去
服務端的控制檯輸出語句:
在這裡插入圖片描述

客戶端的控制檯輸出語句:
在這裡插入圖片描述
7.新建TestWsdl.java測試獲取服務端資料

package com.ssh.ws;

import org.apache.axis2.AxisFault;

/**
 * 
* @ClassName: TestWsdl
* @Description:測試獲取服務端資料的程式碼
* @author 小思
* @date 2018年10月18日 下午7:19:22
*
 */
public class TestWsdl {
	public static void main(String[] args) {
		try {
			//獲取服務類的實現類
			AuthorServiceStub authorServiceStub=new AuthorServiceStub();
			//服務類的釋出的方法
			Eat eat=new Eat();
			//設定方法的引數
			eat.setFood1("蛋糕");
			eat.setFood2("麵包");
			//呼叫方法之後的響應
			EatResponse eatResponse = authorServiceStub.eat(eat);
			//返回值
			String get_return = eatResponse.get_return();
			System.out.println(get_return);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

此部落格的完整案例程式碼在:
說在最後的話:編寫實屬不易,若喜歡或者對你有幫助記得點贊+關注或者收藏哦~