`

Axis2 web service 开发初学(转)

 
阅读更多

本文介绍了如何使用tomcat和Axis2开发、部署和使用Web Service,并且开发了一个简单的例子,通过例子开发流程来向大家展示如何创建Axis2的服务端和客户端。该例子与其他例子最大的不同是不是用客户端stub存根方式调用web服务,提供了一种统一的客户端调用方式。希望读者读完本文后能够快速上手Axis2的应用开发。

   一、开发环境和软件下载

  开发环境是:Eclipse3.4 + JDK1.6 + Tomcat6.0 + Axis2 1.3。这些软件都是各个软件最新版本,下载方式由于软件网站的更新,地址也会更新,这里就不再贴出来了,就请读者到相应网站下载。
  软件下载和安装:
    (1) JDK1.6环境变量配置:
    JAVA_HOME: C:\Program Files\Java\jdk1.6.0_07,其中C:\Program Files\Java是我的JDK安装目录。
    Path: %JAVA_HOME%\bin
    Classpath: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
  
    (2) tomcat6.0环境变量配置:
    CATALINA_HOME:C:\Program Files\Apache Software Foundation\Tomcat 6.0, 其中C:\Program Files\Apache Software Foundation是我的Tomcat 6.0安装目录。
    其实这里tomcat6.0不需要配置环境变量,因为最新版本不需要配置。

    (3) Axis2 1.3下载:从http://apache.justdn.org/ws/axis2/1_4_1/网站上下载axis2-1.3-war.zip 。将其解压,把其中的axis2.war文件复制到tomcat的webapps目录下即可完成Axis2的安装。
  安装完成后,启动tomcate,在地址栏内输入http://localhost:8080/axis2/,打开如下图界面,表明安装正确:



    (4) Eclipse3.4下载:到www.eclipse.org官方网站下载,直接解压后配置Windows/Preference中的JDK即可。

    (5) 下载Eclipse Axis2插件:axis2-eclipse-codegen-wizard-1.4.zip和axis2-eclipse-codegen-wizard-1.4.zip。下载地址是:[url]http://apache.justdn.org/ws/axis2/tools/1_4_1/      [/url] 这两个插件解压到Eclipse安装目录下plugins中即可。打开Eclipse,选择File/New/Other菜单项,看到如下界面表明安装成功:



    安装这两个插件的目的是:方便生成Axis2服务和生成Axis2客户端,这里我使用了无Stub方式的客户端调用服务,因此就不演示生成Axis2客户端的功能了。

  二、构建服务
   
在开发环境及 Axis2 环境搭建好后,我们便可着手 Web Services 服务的开发:
1.建立要发布的Web Service

    (1)在 Eclispse 中添加一个用户库命名为 axis2 ,将 axis2\lib 下的包均添加进来。这一步操作的目的是为了以后工程添加 axis2 所需的 jar 文件方便。
    (2) 建立一个 JavaProject 命名为 ws ,将 axis2 用户库加入到 build path 中。
    (3) 现在开始编写要发布的 WebSevice ,在 src 中建包 briup ,建立 Hello 类如下:
package briup;

public class Hello {
  public String sayHello(String user) {
    return "Hello, " + user;
  }
}

    2.发布Web Service

    打包要发布的 Service , Eclipse 中 New --> File --> Other --> Axis2 wizards --> Axis2 Services Archiver ,按照向导选择刚建立的类编译后的 class 文件。
    (1)选择 class 文件目录,注意,不是 java 源文件,而是 classes 目录,这里需要注意由于你的类是带包briup的,因此不要选到包这个目录。
(2)连按两次 “Next>” ,选中 “Generate the service xml automatically”
(3)按下一步,输入 service 名称和类名,我这里输入的服务名是:ws;类名是我们刚刚写的类名:briup.Hello,这里需要注意加入完整的包名。
(4) 按下一步,输入 service 文件的保存路径和文件名,完成。
选择生成目录为:C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\axis2\WEB-INF\services,也可以选择其他目录,然后copy到这一目录下。

3.测试Web Service

打开http://localhost:8080/axis2/services/listServices页面,可以看到ws服务,点击进到ws的wsdl页面:http://localhost:8080/axis2/services/ws?wsdl,表明服务部署正确。

三、编写客户端代码调用服务

我的这个例子与其他例子最大的不同就在这里,其他例子一般需要根据刚才的服务wsdl生成客户端stub,然后通过stub来调用服务,这种方式显得比较单一,客户端必须需要stub存根才能够访问服务,很不方面。
本例子的客户端不采用stub方式,而是一种实现通用的调用方式,不需要任何客户端存根即可访问服务。只需要指定对于的web servce地址、操作名、参数和函数返回类型即可。代码如下:

package briup;

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

  private RPCServiceClient serviceClient;
  private Options options;
  private EndpointReference targetEPR;
 
  public WsClient(String endpoint) throws AxisFault {
    serviceClient = new RPCServiceClient();
    options = serviceClient.getOptions();
    targetEPR = new EndpointReference(endpoint);
    options.setTo(targetEPR);
  }
  public Object[] invokeOp(String targetNamespace, String opName,
      Object[] opArgs, Class<?>[] opReturnType) throws AxisFault,
      ClassNotFoundException {
    // 设定操作的名称
    QName opQName = new QName(targetNamespace, opName);
    // 设定返回值
   
    //Class<?>[] opReturn = new Class[] { opReturnType };

    // 操作需要传入的参数已经在参数中给定,这里直接传入方法中调用
    return serviceClient.invokeBlocking(opQName, opArgs, opReturnType);
  }
  /**
    * @param args
    * @throws AxisFault
    * @throws ClassNotFoundException
    */
  public static void main(String[] args) throws AxisFault, ClassNotFoundException {
    // TODO Auto-generated method stub
    final String endPointReference = "http://localhost:8080/axis2/services/ws";
    final String targetNamespace = "http://briup";
    WsClient client = new WsClient(endPointReference);
   
    String opName = "sayHello";
    Object[] opArgs = new Object[]{"Repace中心"};
    Class<?>[] opReturnType = new Class[]{String[].class};
   
    Object[] response = client.invokeOp(targetNamespace, opName, opArgs, opReturnType);
    System.out.println(((String[])response[0])[0]);
  }

}

运行该程序,点击Run As->Java application,可以看到控制台端口的输出是:Hello, Repace中心  表明客户端调用成功。
该例子最大的不同和优势表现在客户端的调用方式,或者说是发起服务调用的方式,虽然比起客户端stub存根的方式,代码稍多,但是这种方式统一,不需要生产stub存根代码,解决了客户端有很多类的问题。如果读者对这些代码进一步封装,我想调用方式很简单,只需要传递相关参数,这更好地说明了服务调用的优势。而且这种方式更加简单明了,一看便知具体含义。而不需要弄得stub类的一些机制。

 

分享到:
评论

相关推荐

    axis2,apache axis2,web service

    标签“axis2, apache axis2, web service”进一步强调了我们讨论的主题是关于使用Apache Axis2框架进行Web服务开发。Web服务是一种通过网络进行通信的应用程序接口,允许不同系统之间的数据交换。Apache Axis2作为...

    axis2开发Web Services入门

    通过以上步骤,我们完成了基于 Axis2 的 Web Services 开发环境的搭建,并成功创建了一个简单的 Web Service 示例。此过程不仅涵盖了软件开发的基础环境配置,还涉及了 Web Services 的具体开发和部署流程。对于初学...

    axis 1.x与axis2.x开发

    Axis是Apache组织开发的一款开源Web服务框架,主要用于构建和部署SOAP(Simple Object Access Protocol)服务。Axis分为两个主要版本:Axis1.x和Axis2.x,它们都是Java平台上的Web服务实现,但在设计和功能上有所...

    基于Tomcat5.0和Axis2开发Web Service应用实例(1)附带实例

    标题 "基于Tomcat5.0和Axis2开发Web Service应用实例(1)附带实例" 指向的是一个关于如何使用Apache Tomcat 5.0版本和Axis2框架创建Web服务的应用教程。Apache Tomcat是一款流行的开源Java Servlet容器,而Axis2则是...

    Web Service开发指南

    2. Web Service的工作流程 Web Service的工作流程通常包括以下步骤: - 服务提供者创建一个Web Service,并使用WSDL描述其接口和功能。 - 服务提供者将WSDL发布到一个可以通过UDDI查找的服务目录。 - 服务消费者...

    XML Web Service开发教程

    在开发XML Web Service时,我们将学习如何使用工具如Apache Axis、Microsoft .NET的ASMX或WCF(Windows Communication Foundation)等,它们简化了服务的创建、部署和调用。例如,ASMX允许开发者使用.NET Framework...

    Apache Web Services Axis2(1.4.1) 详细经典入门实例图文并茂

    Apache Axis2是Apache软件基金会开发的一个用于构建Web服务和实现Service-Oriented Architecture (SOA)的核心框架。本文将深入探讨Axis2 1.4.1版本的经典入门实例,通过Eclipse集成开发环境中的Axis2插件,帮助你...

    axis2的API,axis2 API,axis2帮助文档

    Axis2是Apache软件基金会开发的一个开源Web服务引擎,它提供了基于SOAP(Simple Object Access Protocol)的Web服务实现。本文将详细介绍Axis2的API及其在Web服务开发中的应用,同时也会探讨Axis2的帮助文档如何协助...

    axis2 初学者教程

    本教程将引导初学者了解如何使用Axis2进行Web服务的开发和管理。 ### 1. Axis2的准备工作 #### 1.1 开发环境准备 首先,你需要下载Axis2的JAR包,可以从Apache官方网站获取最新版本。在本文档撰写时,最高版本为...

    Web service --AXIS2 资料(一)

    AXIS2不仅简化了Web服务开发过程,还为开发者提供了丰富的工具集和API,使得Web服务的实现更加灵活和高效。 博文链接:https://sharpspeed.iteye.com/blog/937748 在这个链接中,你可以找到更详细的关于AXIS2的...

    Web_Service开发指南

    本指南将深入探讨AXIS、XFire和CXF这三个流行的Java Web Service框架,为初学者提供入门级的开发指导。 一、Web Service基础 Web Service的核心概念是通过SOAP(Simple Object Access Protocol)消息在互联网上交换...

    AXIS2开发webService

    以下是对AXIS2开发Web Service的详细解释。 1. **Web Service基础** Web服务是一种通过网络进行通信的软件系统,使用标准的XML(eXtensible Markup Language)格式交换数据。它们基于SOAP(Simple Object Access ...

    axis2所用jar包大全下载

    在Java世界中,Apache Axis2是一个著名的Web服务框架,它被广泛用于构建高效、灵活且可扩展的SOAP...对于初学者而言,理解并正确配置这些类库是一项挑战,但一旦设置完成,Axis2就能提供强大且灵活的Web服务解决方案。

    AXIS2生成客户端代码教程.zip

    AXIS2与MyEclipse的结合使得Web服务客户端的开发变得简单和高效。通过理解AXIS2的基本概念和MyEclipse的工具支持,开发者可以快速地与Web服务进行交互,大大提高了开发效率。务必参考提供的文档教程,以更好地掌握...

Global site tag (gtag.js) - Google Analytics