`
yongguang423
  • 浏览: 110581 次
  • 性别: Icon_minigender_1
  • 来自: 山东
社区版块
存档分类
最新评论

Axis Web Service开发之旅 (二) --利用services.xml发布

阅读更多

对于带有package的类发布就要复杂一些,需要配置services.xml,这种方法也是最常用的方式。

Axis2也允许将带包的POJO类发布成Web Service。
    先实现一个POJO类,代码如下:

 

package service;   
  
public class MyService   
{   
    public String getGreeting(String name)   
    {   
        return "您好 " + name;   
    }   
    public void update(String data)   
    {   
        System.out.println("<" + data + ">已经更新");   
    }   
}  
package service;

public class MyService
{
    public String getGreeting(String name)
    {
        return "您好 " + name;
    }
    public void update(String data)
    {
        System.out.println("<" + data + ">已经更新");
    }
}
 

 
    这个类有两个方法,这两个方法都需要发布成Web Service方法。这种方式和直接放在pojo目录中的POJO类不同。要想将MyService类发布成Web Service,需要一个services.xml文件,这个文件需要放在META-INF目录中,该文件的内容如下:

 

<service name="myService">  
    <description>  
        Web Service例子   
    </description>  
    <parameter name="ServiceClass">  
        service.MyService     
    </parameter>  
    <messageReceivers>  
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"  
            class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"  
            class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />  
    </messageReceivers>  
</service>  
<service name="myService">
    <description>
        Web Service例子
    </description>
    <parameter name="ServiceClass">
        service.MyService  
    </parameter>
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
            class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
            class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    </messageReceivers>
</service>
 

 


其中<service>元素用于发布Web Service,一个<service>元素只能发布一个WebService类,name属性表示WebService名,如下面的URL可以获得这个WebService的WSDL内容:

http://localhost:8080/axis2/services/myService?wsdl

其中name属性名就是上面URL中"?"和"/"之间的部分。

<description>元素表示当前Web Service的描述,<parameter>元素用于设置WebService的参数,在这里用于设置WebService对应的类名。在这里最值得注意的是<messageReceivers>元素,该元素用于设置处理WebService方法的处理器。例如,getGreeting方法有一个返回值,因此,需要使用可处理输入输出的RPCMessageReceiver类,而update方法没有返回值,因此,需要使用只能处理输入的RPCInOnlyMessageReceiver类。

使用这种方式发布WebService,必须打包成.aar文件,..aar文件实际上就是改变了扩展名的.jar文件。在现在建立了两个文件:MyService.java和services.xml。将MyService.java编译,生成MyService.class。services.xml和MyService.class文件的位置如下:

D:\ws\service\MyService.class

D:\ws\META-INF\services.xml
  

 在windows控制台中进入ws目录,并输入如下的命令生成.aar文件(实际上,.jar文件也可以发布webservice,但axis2官方文档中建议使用.aar文件发布webservice):jar cvf ws.aar .
    最后将ws.aar文件复制到<Tomcat安装目录>\webapps\axis2\WEB-INF\services目录中,启动Tomcat后,就可以调用这个WebService了。另外services.xml文件中也可以直接指定WebService类的方法,如可以用下面的配置代码来发布WebService:

 

<service name="myService">  
    <description>  
        Web Service例子   
    </description>  
    <parameter name="ServiceClass">  
        service.MyService     
    </parameter>  
    <operation name="getGreeting">  
        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
    </operation>  
    <operation name="update">  
        <messageReceiver  
            class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />  
    </operation>  
</service>  
<service name="myService">
    <description>
        Web Service例子
    </description>
    <parameter name="ServiceClass">
        service.MyService  
    </parameter>
    <operation name="getGreeting">
        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    </operation>
    <operation name="update">
        <messageReceiver
            class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    </operation>
</service>
 

   


上面的配置代码前面的部分和以前的services.xml文件的内容相同,但后面使用了<operation>元素来指定每一个WebService方法,并单独指定了处理每一个方法的处理器。对于客户端来说,调用使用这两个services.xml文件发布的WebService并没有太大我区别,只是使用第二个services.xml文件发布WebServices后,在使用wsdl2java命令或使用C#、delphi等生成客户端的stub时,update方法的String类型被封装在了update类中,在传递update方法的参数时需要建立update类的对象实例。而使用第一个services.xml文件发布的WebService在生成stub时直接可以为update方法传递String类型的参数。从这一点可以看出,这两种方法生成的WSDL有一定的区别。但实际上,如果客户端程序使用第一个services.xml文件发布的WebService生成stub类时(这时update方法的参数是String),在服务端又改为第二个services.xml文件来发布WebService,这时客户端并不需要再重新生成stub类,而可以直接调用update方法。也就是说,服务端使用什么样的方式发布WebService,对客户端并没有影响。

如果想发布多个WebService,可以使用<serviceGroup>元素,如再建立一个MyService1类,代码如下:

package service   
public class MyService1   
{   
    public String getName()     
    {    
        return "bill";   
    }   
}  
package service
public class MyService1
{
    public String getName()  
    { 
        return "bill";
    }
}
 



 
在services.xml文件中可以使用如下的配置代码来配置MyService和MyService1类:

<serviceGroup>  
    <service name="myService">  
        <description>  
            Web Service例子   
        </description>  
        <parameter name="ServiceClass">  
            service.MyService     
        </parameter>  
        <messageReceivers>  
            <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"  
                class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
            <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"  
                class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />  
        </messageReceivers>  
    </service>  
    <service name="myService1">  
        <description>  
            Web Service例子   
       </description>  
        <parameter name="ServiceClass">  
            service.MyService1     
        </parameter>  
         <messageReceivers>  
           <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"  
                class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
           <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"  
                class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />  
        </messageReceivers>  
    </service>  
</serviceGroup>  

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/crazystone4/archive/2009/06/20/4285699.aspx

分享到:
评论

相关推荐

    axis2-eclipse-codegen-plugin-1.6.2.zip和axis2-eclipse-service-plugin-1.6.2.zip

    标题中的"axis2-eclipse-codegen-plugin-1.6.2.zip"和"axis2-eclipse-service-plugin-1.6.2.zip"是两个与Apache Axis2相关的Eclipse插件,用于简化Web服务的开发过程。Apache Axis2是Java平台上一个成熟的Web服务...

    Axis2之使用services.xml发布带包的Webservice

    标题中的“Axis2之使用services.xml发布带包的Webservice”指的是在Apache Axis2框架下,通过services.xml配置文件来发布包含多个类或包的Web服务。Apache Axis2是Java平台上的一个开源Web服务框架,它允许开发人员...

    完整的axis2 jar包包含实例.zip

    axis2 webservice 服务端jar包: --&gt;axis2-kernel-1.6.1.jar --&gt;axis2-spring-1.6.1.jar --&gt;axis2-transport-http-1.6.1.jar --&gt;XmlSchema-1.4.7.jar --&gt;wsdl4j-1.6.2.jar --&gt;axiom-api-1.2.12.jar --&gt;axiom...

    axis2-eclipse-service-archiver-wizard.zip

    axis2-eclipse-service-archiver-wizard.zip

    axis2-1.5.1-bin.zip axis2-1.5.1-war.zip axis2部署使用

    `axis2-1.5.1-bin.zip`是Axis2的二进制包,它包含了运行和开发Web服务所需的所有基本组件。这个包通常用于本地开发环境或者在服务器上进行手动安装。其中包含的主要文件和目录有: 1. `bin`目录:包含启动和管理...

    axis2-idea-plugin-1.7.9.zip_axis2_axis2-idea-plugin_idea导入axis2_

    plugin-1.7.9.zip_axis2_axis2-idea-plugin_idea导入axis2_"提到了几个关键元素,分别是"axis2"、"idea-plugin"和"idea导入axis2",这暗示了这个压缩包是用于在IntelliJ IDEA这款集成开发环境(IDE)中支持Axis2服务...

    axis-bin-1_4.zip

    标题中的"axis-bin-1_4.zip"是一个与 Axis1 相关的压缩包,Axis1 是一个开源的 Java 库,主要用于创建、部署和使用 Web Services。这个版本(1.4)是 Axis 的一个稳定版本,包含了 Axis 框架的可执行文件和其他必要...

    axis2相关jar包~eclipse支持插件包

    1、axis2相关jar包如下: axiom-api-1.2.10.jar axiom-dom-1.2.10.jar axiom-impl-1.2.10.jar axis2-adb-1.5.4.jar axis2-adb-codegen-1.5.4.jar axis2-codegen-1.5.4.jar ...axis2-eclipse-service-plugin-1.6.2.zip

    axis2c-bin-1.6.0 axis2c-src-1.6.0

    axis2c-bin-1.6.0-linux.tar.gz axis2c-bin-1.6.0-win32.zip axis2c-src-1.6.0.tar.gz axis2c-src-1.6.0.zip 加md5

    axis2.eclipse.codengen.plugin-SNAPSHOT-axis2-eclipse-codege-plugin.zip

    在 Axis2 的开发环境中,此插件扮演着至关重要的角色,它能帮助开发者自动生成与Web服务相关的客户端和服务器端代码,从而提高开发效率。 描述中提到,这个包是“必不可少”的,而且在开发过程中需要将其安装到...

    axis2-eclipse-codegen-plugin-1.6.2和axis2-eclipse-service-plugin-1.6.2

    总结来说,"axis2-eclipse-codegen-plugin-1.6.2"和"axis2-eclipse-service-plugin-1.6.2"是针对Apache Axis2的Eclipse插件,旨在简化基于Axis2的Web服务开发。通过它们,开发者可以高效地生成和部署服务,同时享受...

    WSDL2Java及axis2-1.5-bin.zip的包

    使用axis2-1.5开发包 从最简单的开始 ,-uri 指定wsdl文件&gt; WSDL2Java -uri currencyConvert.wsdl-d 使用不同的data binding方法&gt; WSDL2Java -uri currencyConvert.wsdl -d xmlbeans-a 生成异步的方法&gt; WSDL2Java -...

    axis2相关的jar包

    axiom-api-1.2.10.jar axiom-dom-1.2.10.jar axiom-impl-1.2.10.jar axis2-adb-1.5.4.jar axis2-adb-codegen-1.5.4.jar axis2-codegen-1.5.4.jar axis2-corba-1.5.4.jar axis2-fastinfoset-1.5.4...XmlSchema-1.4.3.jar

    axis-1.2.1-7.2.el6.noarch.rpm

    axis-1.2.1-7.2.el6.noarch.rpm是centos工具包。

    axis2-1.7.4完整资源包.zip

    Axis2是Apache软件基金会开发的一个开源Web服务引擎,它提供了高度模块化和可扩展的架构,使得开发和部署Web服务变得更加简单。这个“axis2-1.7.4完整资源包.zip”包含了 Axis2 的两个主要版本:axis2-1.7.4-bin 和 ...

    axis2-eclipse-codegen-wizard.zip与Axis2_Service_Archiver.zip

    总结来说,"axis2-eclipse-codegen-wizard.zip"和"Axis2_Service_Archiver.zip"是Apache Axis2 Web服务开发的得力助手,它们分别解决了代码生成和服务打包的问题,使得在Eclipse环境下进行Web服务开发变得更加便捷和...

    axis2所有的jar

    axiom-api-1.2.12.jar, axiom-impl-1.2.12.jar, axis.jar, axis2-adb-1.6.2.jar, ... XmlSchema-1.4.6.jar 好几个jar是花高分下载下来的! 放这里跟大家分享一下。jar很全,客户端跟服务端都可以

    axis2-std-1.0-bin.zip与axis2.war

    Apache Axis2是基于Java的Web服务引擎,它用于创建和部署Web服务以及处理SOAP消息。在给定的信息中,我们关注的是"axis2-std-1.0-bin.zip"和"axis2.war"这两个文件。 1. **axis2-std-1.0-bin.zip**: 这是一个包含了...

    axis.jar,axis-saaj-1.4.jar

    标题中的"axis.jar"和"axis-saaj-1.4.jar"是两个重要的Java库文件,它们在Web服务开发中扮演着核心角色。本文将详细介绍这两个库以及它们与Web服务的关系。 首先,让我们深入了解Axis。Axis是Apache软件基金会的一...

    axis-jaxrpc-1.4.jar

    axis-jaxrpc-1.4.jar jaxrpc.jar webservice java工具类jar包。

Global site tag (gtag.js) - Google Analytics