`

Axis2创建webservice服务的方式之POJO方式

 
阅读更多

Axis2创建webservice服务的方式之POJO方式

 

Axis2创建webservice服务的方式又5种,POJO,AXIOM's OMElement,ADB,XMLBeans和

JiBX方式.

http://blog.csdn.net/larry_lv/article/details/6637570

五种方式的优缺点:

得知,POJO方式最简单,ADB方式强烈推荐.

 

下面就分别使用这两种方式创建webservice服务.

 

1. POJO方式

 

1.1 准备web工程

 

    http://jackyin5918.iteye.com/blog/1907992 中对Axis2版本中axis2.war的介绍可知,

要创建webservice先要创建一个普通的web工程,然后将axis2.war解压,用解压得到的WEB-INF

替换芯创建普通web工程的WEB-INF即可.axis2.war中的axis2-web不必使用.

 

所以要先创建一个web工程,然后替换WEB-INF.

 

这里创建web工程是:TestWebService

 

1.2 创建一个普通的java类(POJO)

package test.sevices;

public class TestService
{
  private String name ="Jack";
  
  public void setName(String newName)
  {
    this.name = newName;
  }
  
  public String getName()
  {
    return name;
  }
}

 

1.3 创建services.xml部署服务

 

根据http://jackyin5918.iteye.com/blog/1907992,部署一个服务,需要先创建一个services.xml文件.

这个文件需要放到classes文件夹下的META-INF目录中,格式一般如下:

 

<service name="StockQuoteService" scope="application" targetNamespace="http://quickstart.samples/">

    <description>

        Stock Quote Service

    </description>

    <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>

    <schema schemaNamespace="http://quickstart.samples/xsd"/>

    <parameter name="ServiceClass">samples.quickstart.service.pojo.StockQuoteService</parameter>

</service>

 

services.xml个节点含义解释: http://suselinks.us/2011/09/detailed-explanation-for-axis2-web-service-configuration-file

 

为本例创建的services.xml文件如下:

<service name="TestService" scope="application" targetNamespace="http://quickstart.samples/">
    <description>
        一个测试服务
    </description>
    <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>
    <schema schemaNamespace="http://quickstart.samples/xsd"/>
    <parameter name="ServiceClass">test.sevices.TestService</parameter>
</service>

 

 

1.4 创建一个符合发布服务要求的目录结构

 

参考:

- StockQuoteService

   - META-INF

     - services.xml

   - lib

   - samples

     - quickstart

       - service

         - pojo

           - StockQuoteService.class

创建的目录结构为:

- TestService

   - META-INF

     - services.xml

   - lib

   - test

     - services

        - TestService.class

        

2. 将上面的TestService文件夹复制到 \WEB-INF\services\下

然后启动tomcat,开始测试:

 

(1) 查看wsdl文件:

http://localhost:8080/TestWebService/services/TestService?wsdl

得到的wsdl文件如下:

<?xml version="1.0" encoding="UTF-8" ?> 
- <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ns="http://quickstart.samples/xsd" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:tns="http://quickstart.samples/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://quickstart.samples/">
  <wsdl:documentation>TestService</wsdl:documentation> 
- <wsdl:types>
- <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://quickstart.samples/xsd">
- <xs:element name="setName">
- <xs:complexType>
- <xs:sequence>
  <xs:element minOccurs="0" name="newName" nillable="true" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:element>
- <xs:element name="getName">
- <xs:complexType>
  <xs:sequence /> 
  </xs:complexType>
  </xs:element>
- <xs:element name="getNameResponse">
- <xs:complexType>
- <xs:sequence>
  <xs:element minOccurs="0" name="return" nillable="true" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:element>
  </xs:schema>
  </wsdl:types>
- <wsdl:message name="getNameRequest">
  <wsdl:part name="parameters" element="ns:getName" /> 
  </wsdl:message>
- <wsdl:message name="getNameResponse">
  <wsdl:part name="parameters" element="ns:getNameResponse" /> 
  </wsdl:message>
- <wsdl:message name="setNameRequest">
  <wsdl:part name="parameters" element="ns:setName" /> 
  </wsdl:message>
- <wsdl:portType name="TestServicePortType">
- <wsdl:operation name="getName">
  <wsdl:input message="tns:getNameRequest" wsaw:Action="urn:getName" /> 
  <wsdl:output message="tns:getNameResponse" wsaw:Action="urn:getNameResponse" /> 
  </wsdl:operation>
- <wsdl:operation name="setName">
  <wsdl:input message="tns:setNameRequest" wsaw:Action="urn:setName" /> 
  </wsdl:operation>
  </wsdl:portType>
- <wsdl:binding name="TestServiceSoap11Binding" type="tns:TestServicePortType">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> 
- <wsdl:operation name="getName">
  <soap:operation soapAction="urn:getName" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="setName">
  <soap:operation soapAction="urn:setName" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
  </wsdl:operation>
  </wsdl:binding>
- <wsdl:binding name="TestServiceSoap12Binding" type="tns:TestServicePortType">
  <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> 
- <wsdl:operation name="getName">
  <soap12:operation soapAction="urn:getName" style="document" /> 
- <wsdl:input>
  <soap12:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap12:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="setName">
  <soap12:operation soapAction="urn:setName" style="document" /> 
- <wsdl:input>
  <soap12:body use="literal" /> 
  </wsdl:input>
  </wsdl:operation>
  </wsdl:binding>
- <wsdl:binding name="TestServiceHttpBinding" type="tns:TestServicePortType">
  <http:binding verb="POST" /> 
- <wsdl:operation name="getName">
  <http:operation location="getName" /> 
- <wsdl:input>
  <mime:content type="application/xml" part="parameters" /> 
  </wsdl:input>
- <wsdl:output>
  <mime:content type="application/xml" part="parameters" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="setName">
  <http:operation location="setName" /> 
- <wsdl:input>
  <mime:content type="application/xml" part="parameters" /> 
  </wsdl:input>
  </wsdl:operation>
  </wsdl:binding>
- <wsdl:service name="TestService">
- <wsdl:port name="TestServiceHttpSoap11Endpoint" binding="tns:TestServiceSoap11Binding">
  <soap:address location="http://localhost:8080/TestWebService/services/TestService.TestServiceHttpSoap11Endpoint/" /> 
  </wsdl:port>
- <wsdl:port name="TestServiceHttpSoap12Endpoint" binding="tns:TestServiceSoap12Binding">
  <soap12:address location="http://localhost:8080/TestWebService/services/TestService.TestServiceHttpSoap12Endpoint/" /> 
  </wsdl:port>
- <wsdl:port name="TestServiceHttpEndpoint" binding="tns:TestServiceHttpBinding">
  <http:address location="http://localhost:8080/TestWebService/services/TestService.TestServiceHttpEndpoint/" /> 
  </wsdl:port>
  </wsdl:service>
  </wsdl:definitions>

 

 

(2)查看schema

http://localhost:8080/TestWebService/services/TestService?xsd
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://quickstart.samples/xsd" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:tns="http://quickstart.samples/" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://quickstart.samples/xsd">
- <xs:element name="setName">
- <xs:complexType>
- <xs:sequence>
  <xs:element minOccurs="0" name="newName" nillable="true" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:element>
- <xs:element name="getName">
- <xs:complexType>
  <xs:sequence /> 
  </xs:complexType>
  </xs:element>
- <xs:element name="getNameResponse">
- <xs:complexType>
- <xs:sequence>
  <xs:element minOccurs="0" name="return" nillable="true" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:element>
  </xs:schema>

 

  

(3) 调用服务查看:

 http://localhost:8080/TestWebService/services/TestService/getName

 输出:

 

- <ns:getNameResponse xmlns:ns="http://quickstart.samples/xsd">
  <ns:return>Jack</ns:return> 
  </ns:getNameResponse>

 

  

http://localhost:8080/TestWebService/services/TestService/setName?newName=Frank 设置新name(newName是setName方法的参数名)

 

再次调用 

http://localhost:8080/TestWebService/services/TestService/getName

 

输出:

- <ns:getNameResponse xmlns:ns="http://quickstart.samples/xsd">
  <ns:return>Frank</ns:return> 
  </ns:getNameResponse>

 

  参考:

http://danlley.iteye.com/blog/102163

 

附件为 工程文件,因为文件大小原因,删除了lib里面的jar包,使用的时候需要吧Axis2 1.6.2版本中的lib文件夹里的所有jar包拷贝到TestWebService\WebRoot\WEB-INF\lib

分享到:
评论

相关推荐

    axis2发布webservice

    Axis2 提供了多种方式来编写和发布 WebService,下面介绍使用 POJO 形式发布 WebService。 使用 POJO 形式发布 WebService 在 Axis2 中,不需要进行任何的配置,就可以直接将一个简单的 POJO 发布成 WebService。...

    axis2_WebService_开发指南

    Axis2是Apache软件基金会的一个用于构建和部署WebService的引擎,它基于Apache Axis项目,并且是Apache Web服务堆栈的最新版本。Axis2支持SOAP和REST风格的WebService,并且能够以最小的资源消耗和高性能来处理SOAP...

    axis2建webservice文档

    在描述中,“WebService大讲堂之Axis2(1):用POJO实现0配置的WebService”表明该文档系列首先介绍了如何使用Plain Old Java Objects (POJOs)来创建无配置的Web服务。POJO是一种简单的Java类,没有特定的框架约束,...

    Axis2各种方式实现WebService案例代码

    Apache Axis2是Java平台上一个高效且灵活的Web服务框架,它允许开发者用多种方式创建和消费Web服务。本篇将深入探讨使用Axis2实现Web服务的五种主要方法:POJO、AXIOM、ADB、XMLBeans和JIBX,并涵盖客户端和服务器端...

    WebService大讲堂之Axis2,多个实例

    Axis2还支持使用services.xml文件发布WebService,这是一种更加灵活的发布方式,允许开发者通过XML配置文件自定义服务的部署和运行参数。在二进制文件传输方面,Axis2提供了一个模块化的架构,使得开发者可以轻松地...

    WebService大讲堂之Axis2.pdf

    ### WebService大讲堂之Axis2:深入了解零配置的WebService开发 #### 一、Axis2简介及下载安装 Axis2是Apache软件基金会提供的一款高性能、轻量级的WebService引擎,它是在Axis1.x的基础上重新设计的产物,不仅...

    axis2_webservice 文档

    4. **启动服务**:通过命令行或其他方式启动Axis2服务。 5. **验证**:通过调用WebService接口验证服务是否正常运行。 #### 四、注意事项 - **端口冲突**:确保所使用的端口未被其他服务占用。 - **安全设置**:...

    webservice的axis2开发

    通过AXIS2,开发者可以轻松地创建和发布WebService,同时AXIS2提供了丰富的功能,如WS-Security、MTOM和SwA等,以支持复杂的Web服务交互场景。学习AXIS2有助于深入理解WebService开发,并能快速构建实际应用。

    axis2 webservice开发指南.pdf

    Axis2 WebService不仅提供了基础的Web服务实现能力,还集成了高级特性如异步处理、会话管理和模块化扩展,为开发者构建高性能、可维护的Web服务提供了强大支持。掌握这些知识,有助于深入理解和高效运用Axis2进行...

    Axis2 WebService常用功能详解

    1. **多种方式编写和发布Web服务**:Axis2支持JAX-RPC和JAX-WS规范,允许开发者选择适合他们项目的API来创建Web服务。同时,它还提供了RESTful Web服务的支持,与SOAP相比,REST更简洁,更适合轻量级的交互。 2. **...

    WebService之Axis2经典教程

    ### WebService之Axis2经典教程 #### 一、概述 随着信息技术的发展,Web Service作为一种重要的分布式计算模式,已经成为实现服务导向架构(SOA)的关键技术之一。Axis2作为一款流行的Web Service引擎,不仅具备高...

Global site tag (gtag.js) - Google Analytics