`

使用Eclipse+Axis2构建Web Service应用(转)

    博客分类:
  • ws
 
阅读更多

 本文介绍了如何使用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下载:从[url]http://apache.justdn.org/ws/axis2/1_4_1/[/url]网站上下载axis2-1.3-war.zip 。将其解压,把其中的axis2.war文件复制到tomcat的webapps目录下即可完成Axis2的安装。
  安装完成后,启动tomcate,在地址栏内输入[url]http://localhost:8080/axis2/[/url],打开如下图界面,表明安装正确:

    (4) Eclipse3.4下载:到[url]www.eclipse.org[/url]官方网站下载,直接解压后配置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)

<!-- [endif]-->

建立一个 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) <!-- [endif]-->按下一步,输入 service 文件的保存路径和文件名,完成。
选择生成目录为:C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\axis2\WEB-INF\services,也可以选择其他目录,然后copy到这一目录下。

3.测试Web Service

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

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

我的这个例子与其他例子最大的不同就在这里,其他例子一般需要根据刚才的服务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类的一些机制。
分享到:
评论

相关推荐

    Eclipse + Axis2发布WebService

    Apache Axis2是用于构建Web服务和Web服务客户端的高性能、灵活且可扩展的开源框架。以下是详细的步骤: ### 1. 搭建环境 首先,你需要准备以下软件: - Eclipse Juno IDE - JDK 1.7 - Tomcat 7应用服务器 - Axis2 ...

    Eclipse+Axis1.4

    Eclipse 是一个著名的开源集成开发环境(IDE),广泛用于Java应用程序的开发,而Axis1.4是Apache软件基金会开发的一款Web服务工具包,主要用于创建和部署Web服务。这两个工具的结合,使得开发者可以在Eclipse环境中...

    eclipse+tomcat+axis2创建webservice

    Apache Axis2是用于构建Web服务的下一代框架,它支持SOAP 1.1、1.2和RESTful服务。它提供了模块化的架构,使得扩展和定制更加方便。Axis2允许开发者快速地开发和部署Web服务,同时提供了丰富的功能,如消息传递、...

    Axis2与Eclipse整合开发的Web Service的服务端

    【标题】:Axis2与Eclipse整合开发的Web Service服务端详解 【描述】:本文将详细介绍如何在Eclipse环境中利用Axis2框架开发一个Web Service服务端,包括计算器服务CalculateService的实现步骤。 【标签】:Axis2,...

    Spring + axis2 开发 webservice

    1. **Spring框架**:Spring是一个全面的Java应用开发框架,它提供了依赖注入(Dependency Injection,DI)、面向切面编程(Aspect-Oriented Programming,AOP)以及用于构建Web应用程序的MVC(Model-View-Controller...

    使用Eclipse + MyEclipse开发Web Service的示例

    在IT行业中,Web服务是一种基于开放标准(如XML、SOAP、WSDL和UDDI)的应用程序接口(API)...结合JSP技术,可以构建完整的Web服务应用程序,实现不同系统间的交互。而Apache Axis等工具则提供了更多的灵活性和扩展性。

    eclipse 生成 Axis2 Web Service 客户端

    ### Eclipse 生成 Axis2 Web Service 客户端 #### 一、概述 本文将详细介绍如何在Eclipse开发环境中创建基于Axis2的Web Service客户端。Axis2是Apache组织下的一个开源项目,它提供了一种用于构建服务端和服务...

    (修正版)用Eclipse3.2+MyEclipse5.5M1+axis2_1.1.1+tomcat5.5 开发Web Services

    近一段时间在学习Web Service,呼必斯哈拉图--写的"Apache AXIS 开发 Web Services Step By Step"非常的详细,网上也存在很多不通的转载版本...构建Web Service。 生成WSDL。 生成客户端和服务器端,还有简单测试。

    使用Axis+Eclipse开发webservice

    Axis 提供了一种方便快捷的方式来创建和使用 Web Service,使得开发者无需深入了解底层细节,就能快速构建 Web Service 应用。 总结一下,Web Service 是一种基于标准(如 SOAP、WSDL)的,用于不同系统间通信的...

    Eclipse3.2+MyEclipse5.5M1+axis2_1.1.1+tomcat5.5 开发Web Services

    本文以Eclipse3.2、MyEclipse5.5M1、axis2_1.1.1和tomcat5.5为例,详细讲解如何构建Web服务的开发环境,并快速创建和部署服务。 首先,我们需要准备以下软件: 1. **Tomcat 5.5**:这是一个流行的Java Servlet和...

    MyEclipse+Axis2插件开发Web服务

    Axis2不仅提供了强大的功能,如消息路由、事务处理、安全性和可靠性等,还提供了一整套开发工具,使得开发者能够轻松地构建复杂的Web服务。 #### MyEclipse简介 MyEclipse是一款面向Java EE的集成开发环境,它在...

    Eclipse中使用Axis服务器搭建Web Service

    ### Eclipse中使用Axis服务器搭建Web Service 的详细过程与知识点 #### 一、环境准备与配置 **1.1 软件下载准备** 为了在Eclipse中使用Axis服务器搭建Web Service,首先需要准备好一系列必要的软件资源。具体包括...

    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代码生成插件和Axis2服务插件,它们是版本1.6.2的。Apache Axis2是一个流行的...

    在Eclipse中创建基于Axis2的web services

    在Eclipse中创建基于Axis2的Web服务是一个常见的任务,特别是在开发分布式应用程序时。Axis2是Apache的一个项目,它提供了一种高效的Web服务实现框架,支持SOAP和RESTful风格的服务。以下是如何在Eclipse环境中利用...

    用Axis2创建Web Service

    Apache Axis2 是一个强大的 Web Service 框架,由 Apache 软件基金会开发,主要用于构建和部署高性能、高效率的 Web Services。它基于 Java 语言,提供了全面的 Web Service 功能,包括支持 SOAP、WSDL、WS-* 规范等...

    Axis2与Eclipse整合开发Web Service

    Apache Axis2是用于构建Web服务的高效且灵活的框架,而Eclipse作为流行的Java IDE,提供了方便的工具集来支持Web服务的开发。 在开始开发之前,你需要确保已安装了Eclipse的Java EE版本,并下载了Apache Axis2的...

Global site tag (gtag.js) - Google Analytics