Axis2學習筆記

Axis2學習筆記

目錄:

1.準備

2.發佈service

3.生成客戶端代碼

1.     準備

下載axis2 binwar兩種發行版本。

Bin版本用於使用自帶的命令生成客戶端代碼。

War包中的WEB-INF目錄下的文件用於服務提供方使用。

2.     發佈service

新建一個Maven項目,在pom.xml中新增以下依賴:

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-kernel</artifactId>
            <version>1.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-ant-plugin</artifactId>
            <version>1.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-corba</artifactId>
            <version>1.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-jaxws</artifactId>
            <version>1.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-spring</artifactId>
            <version>1.7.3</version>
        </dependency>


在本例中是使用springaxis2集成一起,所以有axis2-spring 依賴。

web.xml中新增一個axis2 servlet ,代碼如下:

    <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-mapping>
        <servlet-name>AxisServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
</servlet-mapping>


把下載的war包中的WEB-INF目錄下的confservicesmodules文件夾複製到工程中的WEB-INF目錄下。

 

新建一個Service Pojo類:

 

publicclass NameService {
    
    publicvoid print(String name)
    {
        System.err.println("print :"+name);
    }
    
    public String getFullName(String name)
    {
        return"Your name is "+name;
    }
 
}

spring中註冊NameService類爲一個bean

    
<bean name="nameService" class="com.hikvision.ws.service.NameService"></bean>

services目錄下新建META-INF目錄,在META-INF目錄中新建services.xml文件,用於描述該服務。


services.xml:

 

<servicename="NameService">
    <description>
        NameService
    </description>
    <parametername="ServiceObjectSupplier">
       org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
    </parameter>
 
    <messageReceivers>
        <messageReceivermep="http://www.w3.org/ns/wsdl/in-only"
            class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
        <messageReceivermep="http://www.w3.org/ns/wsdl/in-out"
            class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </messageReceivers>
 
    <parametername="SpringBeanName">
        nameService
    </parameter>
</service>

 

其中

<parameter name="SpringBeanName">

 

注意,services.xml中不要出現

<?xml version=”1.0”encoding=”UTF-8” ?>

 

在命令行中進入services目錄,輸入命令:jar –cvf NameService.arr ./META-INF

這個命令是將當前目錄中的META-INF中的文件打包成一個NameService.arr文件。

注意:這個命令是jdk中的jar命令,需要本地安裝jdk並且設置環境變量。


這樣會在services目錄生成對應的arr文件,本例生成的是NameService.arr文件。arr文件其實和jar文件類似,兩者的區別是:

 

*.jar:只包含了class文件與清單文件,不包含資源文件,如圖片等所有res中的文件。

*.aar:包含所有資源,class以及res資源文件全部包含。

 

NameService.arr文件中包含的是services.xml,是對該服務的描述。

至此,NameService服務配置完畢。啓動tomcat,在瀏覽器中輸入http://localhost:port/項目發佈目錄/services/NameService?wsdl,即可得到服務的wsdl

 

3.     生成客戶端代碼

保存上一章節中得到的wsdl文件爲NameService.xml

解壓axis2bin版本,在命令行中切換到當前目錄,執行以下命令:

 

D:\axis2-1.7.3\bin\wsdl2java -uriNameService.xml -p com.test.webService.stub –s

 

其中“D:\axis2-1.7.3\”是axis2bin版本解壓到是目錄。 -uri指定wsdl文件,-p指定了包名, -s代表同步執行。

  

該命令會在當前目錄生成src文件夾,文件夾中有*stub.java文件,調用這個文件即可調用ws

 

新建一個Maven項目,在pom.xml中加入以下依賴:

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-kernel</artifactId>
            <version>1.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-ant-plugin</artifactId>
            <version>1.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-jaxws</artifactId>
            <version>1.7.3</version>
        </dependency>


將生成的stub.java文件複製到項目中的指定包中(指生成stub–p 指定的包)。

新建一個NameServiceClient.java文件:

import java.rmi.RemoteException;
 
import com.hikvision.ws.stub.CaculateServiceStub;
import com.hikvision.ws.stub.CaculateServiceStub.Plus;
import com.hikvision.ws.stub.NameServiceStub;
import com.hikvision.ws.stub.NameServiceStub.GetFullName;
 
publicclass NameServiceClient {
    
    
    publicstatic String getFullName(String name)throwsRemoteException
    {
        NameServiceStub stub=new NameServiceStub("http://127.0.0.1:8011/Axis2/services/NameService");
        GetFullName getfull=new GetFullName();
        getfull.setName(name);
        return stub.getFullName(getfull).get_return();
    }
    
    publicstaticvoid main(String[] args)throwsRemoteException {
        
        System.err.println(getFullName("12313416546-****************************"));
        
    }
 
}


 

運行該文件就完成了對webservice的調用。

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章