使用axis2構建webservice


axis2是可以實現webservice的一個插件,使用這個插件可以發布webservice

1:可以使用這個插件來發布webservice,可以看網址:http://clq9761.iteye.com/blog/976029/======個人感覺一般不太適合我們做項目時候使用

2:我們這里將axis2的夾包引入到一個web工程里,運行這個web工程來發布webservice=====

       這是我們常用的,比如要你寫一個webservice客戶端,你要怎么做呢?創建一個web工程,然后引入axis2的夾包,使用axis2來實現一個webservice,這是一個最基本的想法

想使用axis2實現webservice要做幾件事如下:

  1:創建一個web工程,====還可以說是創建一個web服務====或者是創建一個web項目

  2:要引入需要的夾包到web工程的lib文件夾內

  3:創建service.xml文件  =====axis2發布webservice需要配置的xml文件

  4:配置web工程的web.xml,掃描axis2的service.xml文件 

  5:書寫對應的類來實現

然后運行寫好的web項目,在網頁上執行路徑就可以了,其實按着步驟走挺簡單的,下面是每一步的詳細介紹

第一步:創建一個web項目

第二步:引入需要的夾包

 

有個問題夾包從哪里來呢,去axis的官網下載
插件的下載網址:http://axis.apache.org/axis2/java/core/download.html

 

 下載后解壓。解壓文件里有lib文件夾,里面有需要的所有的jar包

這里需要注意的是夾包的版本,在官網上下載的可能與本章中圖片顯示的不同,這個不用管,名字一樣就行

如果不行再換,先試試 ===============這樣我們就可以把所有需要的夾包復制到web項目的lib下

第三步:創建service.xml文件,看下圖吧

在WEB-INF下創建services文件夾然后創建------conf----META-INF----services.xml

services.xml的內容如下:

=================services.xml內容開始=========================

<?xml version="1.0" encoding="UTF-8"?>
<service name="Testservice">  <!-- 指定服務名,隨便定義 -->
    <description>測試axis2webservices</description><!-- 服務的作用說明,可寫可不寫 -->
     <!-- 指定要發布的類路徑 -->
    <parameter name="ServiceClass">  <!-- 自定義    name-->
           com.axiswevservice.test.TestService      <!-- 寫的類路徑 -->
    </parameter>  
   <!-- 類里面的方法,有其他方法就在寫個operation標簽 -->
    <operation name="test">  <!-- 類里面的方法名 -->
        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
    </operation>   
</service>
<!-- http://localhost:8080/testaxis2webservice/services/Testservice?wsdl -->

 =================services.xml內容結束=========================

http://localhost:8080/testaxis2webservice/services/Testservice?wsdl

注釋:上面的路徑是搭建好web項目后要運行的wsdl路徑  
1: 指定服務名 =====就是要運行的wsdl路徑的?和/之間的那一部分===可以說指定的服務名是wsdl路徑的一部分

2:服務的作用說明====這個不用管===就相當於一個注釋,說說你要發布的webservice是干啥的

3:指定要發布的類路徑======就是你要把那個類做成webservice

4:類里面的方法,有其他方法就在寫個operation標簽=======配置你寫的類里面的方法

第四步:配置web.xml
 =================web.xml內容開始=========================

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>testaxis2webservice</display-name><!-- 項目名,創建項目時候自動生成的 -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
 
    <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>  
 
</web-app>

 =================web.xml內容結束=========================

 

第五步:書寫發布類

============================書寫的類開始======================

package com.axiswevservice.test;

public class TestService {
    
    public String test(String test){
        return "測試axis2webservice:"+test;
    }
    
}

==========================書寫的類結束=========================

類寫的簡單點,現在只是測試沒必要寫復雜,就寫一個類,類里寫一個方法
寫完這里之后,就要和上面的service.xml對應起來了,service.xml里面的類路徑,方法名要和這里寫的一樣

寫完之后就可以了,這是項目的結構圖如下

 

在eclipce中加載tomcate,將項目加載到tomcate中,運行tomcate 啟動項目

然后在網頁上輸入http://localhost:8080/testaxis2webservice/services/Testservice?wsdl

wsdl路徑的組成:tomcate里配置的ip和端口號 + 項目名 + web.xml里配置的<url-pattern> + service.xml里面指定的服務名+?wsdl

 運行結果如下:

 這樣就成功了,使用axis2來實現webservice服務端,這樣在寫個客戶端調用就可以了

=====================================================================================

開始寫客戶端調用服務端寫的接口通不通,

我們可以使用soupui這個軟件來測試服務端,也可以自己寫代碼測試

這里我們自己寫:要怎么做呢?很簡單,需要做如下:

1:建個java工程  ------創建一個java工程

2:引入夾包

3:寫個測試類

===========================開始==================================

第一步:創建一個java工程======就是創建一個java項目,我們的項目一般分為java項目,web項目,maven項目。。。。。。

第二步:引入夾包,夾包引入的方法和上面寫服務端引入的一樣,但是多了兩夾包httpcore-4.4.4.jar,commons-codec-1.3.jar

         這兩個夾包在axis2的插件的lib下也可以找到

第三步:書寫測試類

 其實就是建個java項目,把寫的web工程的夾包復制到java項目下,在從解了壓的axis2插件的lib下把少的兩個夾包加進來,寫個類測一下就行了

======================測試類開始=======================

package testwebserver;

import javax.xml.namespace.QName;

import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

public class test {

    public static void main(String[] args) {
    
        try {
            //本機tomcat端口默認為8081,參數是wsdl網址的一部分
            EndpointReference targetEPR = new EndpointReference("http://localhost:8081/testaxis2webservice/services/Testservice");  
            RPCServiceClient sender = new RPCServiceClient();  
            Options options = sender.getOptions();  
            options.setTimeOutInMilliSeconds(2*20000L);//超時時間20s  
            options.setTo(targetEPR);  
            /**
             * 參數:
             * 1:在網頁上執行 wsdl后xs:schema標簽的targetNamespace路徑
             * <xs:schema  targetNamespace="http://test.axiswevservice.com">
             * 2:<xs:element name="test"> ======這個標簽中name的值
             *
             */
            QName qname = new QName("http://test.axiswevservice.com", "test");
            String str = "客戶端調用成功";  //方法的入參
            Object[] param = new Object[]{str};  
            Class<?>[] types = new Class[]{String.class};  //這是針對返值類型的  
            /**
             * RPCServiceClient類的invokeBlocking方法調用了WebService中的方法。
             * invokeBlocking方法有三個參數
             * 第一個參數的類型是QName對象,表示要調用的方法名;
             * 第二個參數表示要調用的WebService方法的參數值,參數類型為Object[];
             * 第三個參數表示WebService方法的返回值類型的Class對象,參數類型為Class[]。
             *  
             * 當方法沒有參數時,invokeBlocking方法的第二個參數值不能是null,而要使用new Object[]{}。
             */  
            Object[] response1 = sender.invokeBlocking(qname, param, types);  
            System.out.println(response1[0]);
        } catch (AxisFault e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
}

======================測試類結束=========================

這是個java項目,直接寫在main方法內,直接運行main方法就可以了,

注意:你這里寫好的服務端得一直起着,這里寫的測試調用才能調通,看下圖:

 總結:如果都測通了,我們要明白一下幾點

1:axis2要實現webservice需要哪些夾包,夾包是哪里來的

   需要哪些夾包看截圖,夾包是從axis2的官網下的,官網有個.....bin.zip的文件,解壓這個文件,里面有個lib文件夾,那里面有所有的夾包

2:怎么才能使用axis2發布一個webservice,

    需要axis2的一個service.xml配置文件,我們要確保項目啟動時要掃描到這個配置文件,並且要和寫的類/方法等一致

    那么程序就會將service.xml里面配置的類和方法做成一個webserce發布,

    我們這里是將service.xml引入到了一個web工程里,使用web工程的web.xml來掃描service.xml文件,當運行這個web工程的時候    程序就將service.xml里面的配置的做成一個webservce服務發布了,只要這個web工程一直起着,我們就可以調用發布的服務

3:要發布的類,中的方法怎么寫

     方法有個返回值和入參就行,不管寫方法在復雜,格式就是那樣的

4:客戶端怎么寫的?

    客戶端就是寫個java工程寫個類測試下就行,夾包看上面截圖,調用的代碼要好好看看

 

 

 

    

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM