WebService應用Axis2到SSH專案
阿新 • • 發佈:2018-11-09
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();
}
}
}
此部落格的完整案例程式碼在:
說在最後的話:編寫實屬不易,若喜歡或者對你有幫助記得點贊+關注或者收藏哦~