`
kungstriving
  • 浏览: 131426 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

基于Axis2的web服务的开发、部署和客户端调用

阅读更多
通过Axis2(版本1.4.1)与Tomcat(5.5.27)的结合,Axis2在Tomcat的webapps目录下,只要将满足一定目录结构的web服务的相关文件拷贝到axis2\WEB-INF\services目录下,便可以完成该服务的部署。
  要部署的服务的目录结构必须满足下面的结构
  - MyService
   - META-INF
     - services.xml
   - lib
     - log4j.jar 
   - edu
     - nwpu
       - service
         - test
           - AddService.class
   其中最重要的是META-INF目录下的services.xml文件,axis2通过该文件来获知该服务的名称、服务类型以及服务类。下面是一个简单的services.xml
   <service name="AddService" scope="application">
    <description>
        Addition POJO 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>
    <parameter name="ServiceClass">
        edu.nwpu.hpc.cssp.wsmaker.service.AddService
    </parameter>
 </service>
 
 其首先定义了name,该名称就是Axis2唯一标识该服务的名字。还定义了服务接口类型,是in-only还是in-out,不同类型对应了不同的class再就是定义了ServiceClass,也就是具体该服务的提供类,要该类的全路径名称来标识。
通过上面的对于Axis2部署service的方法,可以知道,部署一个服务只需要将该服务的所有相关Java文件,包括class文件、jar文件按照axis2所要求的方式组织,然后再就是修改servicex.xml文件,让其与该服务的实际情况相吻合,然后再将这个文件夹拷贝到tomcat的axis2的相关目录下就可以了。
编写web服务的客户端调用程序
使用RPC的方式来进行客户端程序编写需要导入的包有:
     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;
主要功能代码如下:
 RPCServiceClient serviceClient = new RPCServiceClient();
        Options options = serviceClient.getOptions();
//这一步指定了该服务的提供地址
        EndpointReference targetEPR = new EndpointReference(
                "http://localhost:8080/axis2/services/AddService");
//将option绑定到该服务地址               
        options.setTo(targetEPR);
        // 添加具体要调用的方法,这个可以从该服务的wsdl文件中得知
        // 第一个参数是该服务的targetNamespace,第二个为你所要调用
        // 的operation名称
       
        QName opAdd =
            new QName("http://service.wsmaker.cssp.hpc.nwpu.edu", "add");
       
        //设置返回值类型
        Class[] returnTypes = new Class[] {Integer.class};
        //设置调用的参数
        Object[] opAddArgs = new Object[] {2, 3};
        //调用服务,获得返回值
        Object[] response = serviceClient.invokeBlocking(opAdd, opAddArgs, returnTypes);
       
       
        Integer res = (Integer)response[0];
        if (res == null) {
         System.out.println("wrong");
         return;
        }
        System.out.println(res);
  注意:应该包含所有axis2_home\lib下的jar文件
 
这样便可以完成一个简单的加法服务的开发,部署和调用。在这里我使用的是Axis2的POJO的方式来部署,Axis2的官方网站上提供了多种创建服务的方式(参考 http://ws.apache.org/axis2/1_4_1/quickstartguide.html),POJO方式的局限就是无法支持初始化配置,也就是你部署的服务的初始值无法在部署一开始就设定,必须通过客户端调用的方式来设定,但是在一般情况下,这种方式可以满足大部分需求的。
分享到:
评论
8 楼 danni505 2009-08-12  
综上可得:没有入职懂得比在职的多!
7 楼 kungstriving 2009-08-12  
luck_dream 写道
如在要在MyEclipse7.0上新建一项目,并使用axis2,这一切该如何解决呢?望能有详细点的步骤,感谢。


你说的使用axis2主要指做什么啊,生成客户端调用还是做一个soap容器?
首先,新建项目后需要导入axis2所需要的所有包,如果要生成客户端,那么可以根据axis2官方网站上的说法使用wsdl2java工具生成。如果要做一个soap消息的接收容器,则需要在你的程序中通过servlet容器的方式启动axis2server。要做第二步需要对axis2的源码有一定的了解
6 楼 luck_dream 2009-08-10  
如在要在MyEclipse7.0上新建一项目,并使用axis2,这一切该如何解决呢?望能有详细点的步骤,感谢。
5 楼 michael.softtech 2009-07-31  
现在这种例子已经很多了....
楼主看能不能把安全验证部分一同贴出来吧哈哈
4 楼 kungstriving 2009-07-29  
jun_fx 写道
你好! 我现在要将<soapenv:Envelope>转成 <soap:Body>(.net写的) 。 目的是为了兼容以前的系统。
我现在的问题是:
  1. 能不能转,如何转?
   2. 我是才入职的员工,在这样的公司是否可以发展?(公司无文档。。。。)
 


我们做的也没有涉及到你的第一个问题,所以无法回答你的问题。但随后,我们项目肯定会做截获SOAP消息的工作,具体怎么做以后再讨论
我还没有入职,呵呵,所以第二个问题我也无法回答你的
3 楼 jun_fx 2009-07-28  
你好! 我现在要将<soapenv:Envelope>转成 <soap:Body>(.net写的) 。 目的是为了兼容以前的系统。
我现在的问题是:
  1. 能不能转,如何转?
   2. 我是才入职的员工,在这样的公司是否可以发展?(公司无文档。。。。)
 
2 楼 kungstriving 2009-07-05  
wgs7909 写道
AXIS2的学习有了很大的进步,刚才碰到了一个问题,解决不了了。
问题:把CLASS部署到POJO下,如果此类中引用了别的类,就找不到了。应该把被引用的类放在哪儿?可以加我的QQ:87356667,也可以MSN:WGS7909@HOTMAIL。COM

如果是引用类文件,直接按照正确的包结构放置在AXIS2_HOME下的services目录下即可;
如果是引用jar文件,我的做法是放到AXIS2_HOME下的/lib文件夹下
1 楼 wgs7909 2009-07-04  
AXIS2的学习有了很大的进步,刚才碰到了一个问题,解决不了了。
问题:把CLASS部署到POJO下,如果此类中引用了别的类,就找不到了。应该把被引用的类放在哪儿?可以加我的QQ:87356667,也可以MSN:WGS7909@HOTMAIL。COM

相关推荐

    基于Axis的Web Service客户端调用

    【标题】基于Axis的Web Service客户端调用 在IT领域,Web Service是一种通过网络进行通信的标准协议,它允许不同系统间的应用程序互相交换数据。而Apache Axis是Java平台上的一个开源工具,专门用于创建和部署Web ...

    基于axis2实现的webservice简单实现(客户端+服务端)。

    总的来说,这个压缩包提供了一个完整的基于Axis2的Web服务实现示例,包括服务端创建服务和客户端调用服务的所有必要组件。通过学习和理解这些文件,开发者可以更好地掌握如何在实际项目中利用Apache Axis2构建和使用...

    axis2客户端调用webService接口,精简jar包

    在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而Axis2是Apache软件基金会开发的一个Web服务框架,专门用于创建和消费Web服务。本文将深入探讨如何使用Axis2客户端调用WebService接口,并且会特别关注...

    Axis客户端调用代码

    在IT行业中,尤其是在Web服务开发领域,Axis是一个广泛使用的开源工具,它允许开发者创建、部署和使用基于SOAP(简单对象访问协议)的Web服务。本文将深入探讨如何使用Axis客户端进行调用,以及如何利用WSDL2JAVA...

    axis2客户端调用服务端,带用户身份认证

    总的来说,实现“axis2客户端调用服务端,带用户身份认证”涉及理解Web服务安全概念,配置服务和客户端,以及编写适当的安全上下文代码。这不仅增加了服务的安全性,也为客户端和服务端之间的通信提供了可靠的信任...

    cxf客户端调用axis服务端流程

    **Axis**,全称Apache Axis,是一个用于创建Web服务的工具集,它基于SOAP协议,允许开发者创建、部署和使用Web服务。Axis1.x版本是较老的实现,而Axis2是其后续版本,提供了更好的性能和模块化设计。 ### 二、CXF...

    基于Axis开发Web服务

    本文将深入探讨基于Axis开发Web服务的过程,包括Axis的工作原理、关键技术WSDL以及如何在实际环境中配置、开发与部署Web服务。 #### Axis的工作原理 Axis是一个开源项目,由Apache软件基金会维护,用于支持基于...

    axis2的webService服务器端和客户端开发项目

    - **WSDL生成**: Axis2会自动生成WSDL(Web服务描述语言),这是服务的接口规范,用于客户端调用。 3. **客户端开发** - **WSDL第一**: 客户端通常基于服务的WSDL来生成客户端代码,轴心提供wsdl2java工具,可以...

    axis2发布webservice和调用axis2服务接口

    在IT行业中,Axis2是Apache软件基金会开发的一个用于构建Web服务和Web服务客户端的框架,主要基于Java语言。本文将详细讲解如何使用Axis2来发布Web服务以及如何生成客户端代码来调用这些服务。 首先,让我们了解...

    AXIS2客户端调用实例

    AXIS2是一个开源的Web服务框架,用于构建和部署SOAP(简单对象访问协议)和RESTful服务。在本文中,我们将深入探讨如何使用AXIS2客户端进行服务调用,包括AXIS2的基本概念、配置、服务引用以及调用流程。 **AXIS2...

    在自己的项目中利用axis2+spring发布webservice与客户端调用包括session

    标题中的“在自己的项目中利用axis2+spring发布webservice与客户端调用包括session”指出的是一个关于在实际项目开发中如何使用Axis2和Spring框架来发布Web服务,并且涉及了Web服务客户端调用以及会话(session)...

    axis2学习——客户端的开发

    这篇博客"axis2学习——客户端的开发"主要探讨了如何使用Axis2来创建和操作Web服务的客户端。 首先,让我们了解什么是Apache Axis2。Axis2是Axis1的下一代版本,它提供了更高效、更灵活的服务框架。它是基于模块化...

    axis2服务发布与客户端代码示例

    总的来说,这篇博客应该深入浅出地介绍了Axis2服务发布和客户端调用的整个过程,对于学习和理解Web服务的开发和交互非常有帮助。如果你是初学者,跟随这个示例可以快速上手;如果你是开发者,它可能为你提供了解决...

    AXIS1.4客户端调用

    AXIS1.4客户端调用是关于Web服务客户端开发的一个主题,主要涉及到使用Apache Axis1.4库来创建和调用SOAP(Simple Object Access Protocol)服务。Apache Axis1.4是一个开源工具,它允许开发者在Java环境中轻松地...

    Axis2教程和java调用webservice的各种方法总结

    描述中的“Axis2教程”暗示了会详细讲解Axis2,这是一个流行的开放源代码SOAP Web服务引擎,它为开发人员提供了创建和部署Web服务的平台。而“java调用webservice的各种方法总结”则意味着文档将深入探讨Java如何与...

    使用Apache Axis 生成Web服务客户端开发天气预报的功能

    Apache Axis是Apache软件基金会开发的一个开源工具,专门用于构建和部署Web服务。这篇博客文章将引导我们如何利用Apache Axis来生成Web服务客户端,从而实现天气预报功能的开发。下面,我们将深入探讨这个过程中的...

    axis2客户端调用带Ntlm认证例子

    Axis2是一个流行的Java Web服务框架,它允许开发人员创建、部署和消费Web服务。本篇将详细介绍如何在Axis2客户端中调用需要NTLM认证的Web服务,并提供相关代码示例和所需库。 首先,NTLM是一种由Microsoft开发的...

    java基于Axis2调用C#开发的web service获取xml结果

    Axis2是Apache软件基金会开发的一个Web服务框架,用于在Java环境中创建和部署Web服务。它基于SOAP,提供了高效的处理和强大的功能,包括WS-ReliableMessaging、WS-Security等高级Web服务标准支持。 3. **C#开发的...

Global site tag (gtag.js) - Google Analytics