`
ufopw
  • 浏览: 163017 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

AXIS第一课:最简单的发布AXIS的Web Service

    博客分类:
  • Axis
阅读更多
1,简单介绍

本文并不是想介绍Web服务的原理、系统架构等,我假设您已经了解了关于Web服务的一些基本的概念、原理等知识。本文主要是针对那些已经了解Web服务概念,但是还没有亲身体会Web服务所带来令人欢欣鼓舞的特征的开发人员。在此我认为你已经具备了Java、XML等基础知识。

2,WEB服务介绍

虽然我并不想详细讲述Web服务的体系结构,但是大概的介绍一下还是有必要的。Web服务是一种新型的Web应用程序。不同于其他Web应用程序,它是自适应、自我描述、模块化的应用程序,并可以跨越Web进行发布、定位以及调用。简单的Web服务可以提供例如天气预报或者航班信息的服务。一旦部署了Web服务,其他的应用程序就可以发现和调用所部署的服务。

3,AXIS项目介绍

Axis框架来自 Apache 开放源代码组织,它是基于JAVA语言的最新的 SOAP 规范(SOAP 1.2)和 SOAP with Attachments 规范(来自 Apache Group )的开放源代码实现。有很多流行的开发工具都使用AXIS作为其实现支持Web服务的功能,例如JBuilder以及著名的Eclipse J2EE插件Lomboz。AXIS的最新版本是2.1,但是本文仍然采用成熟的版本1.4,可以从 http://ws.apache.org/axis/index.html下载。下图是AXIS核心引擎的体系结构图:




4,环境的搭建


由于AXIS本身是基于JAVA语言开发的项目,并且是以Web应用形式发布的,因此它运行时需要一个应用服务器作为支撑。为了方便我这里选用的是Tomcat。由于AXIS本身需要用到处理XML信息的包,所以我建议使用最新JDK1.6并安装Tomcat 6.0。下面是环境搭建步骤,读取根据自身情况进行安装。
安装JDK1.6,并配置好JDK的环境变量
安装Tomcat 6.0,启动Tomcat看是否能正常访问。
下载AXIS项目打包文件axis-bin-1_4.zip解压缩后将目录中的webapps目录下的axis子目录拷贝到%TOMCAT_HOME%\webapps下。
配置的所有环境变量如下,用户可以根据自己的电脑的具体情况配置好以下环境变量:
JAVA_HOME    C:\Program Files\Java\jdk1.6.0_05
Path C:\Program Files\Java\jdk1.6.0_05\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Microsoft SQL Server\80\Tools\BINN
CATALINA_HOME   D:\Tomcat 6.0
AXIS_HOME D:\software\Axis\axis-bin-1_4\axis-1_4
AXIS_LIB %AXIS_HOME%\lib
AXISCLASSPATH %AXIS_LIB%\axis.jar;%AXIS_LIB%\axis-ant.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\wsdl4j-1.5.1.jar;%AXIS_LIB%\activation.jar;%AXIS_LIB%\mail.jar;

验证AXIS的安装:重新启动Tomcat服务器后打开浏览器输入网址http://localhost:8080/axis 后应该出现如下图所示页面:





点击链接"Validate"来验证Axis所需的几个JAVA包是否齐全。点击超链接Validate后,AXIS会自动检查所需的每一个JAVA组件,这协组件分为:必需组件以及可选组件,必须保证所有必需组件都存在,如下图所示即为验证成功。如下图:





AXIS发布方式介绍:

Axis支持三种web service的部署和开发,分别为:

  1、Dynamic Invocation Interface (DII)

  2、Dynamic Proxy方式

  3、Stubs方式

这里先介绍其中比较简单的两种,这两种在实际的工程开发中应用并不多见,但容易学习,第三种是在工程中经常用到的,将在下一篇中做介绍:

1,Dynamic Invocation Interface动态调用接口

这个也称之为即时发布,是Axis的特色之一,使用即时发布使用户只需有提供服务的Java类的源代码,即可将其迅速发布成Web服务。每当用户调用这类服务的时候,Axis会自动进行编译,即使服务器重启了也不必对其做任何处理,使用非常简单快捷。

  使用即时发布首先需要一个实现服务功能的Java源文件,将其扩展名改为.jws(Java Web Service的缩写),然后将该文件放到“……\webapps\axis”目录下即可。

第一个程序简单的返回HELLO WORLD!

HelloWorld.java

public class HelloWorld {
public String sayHello()
{
    return "HELLO WORLD!";
}
}

将HelloWorld.java拷贝到%TOMCAT_HOME%\webapps\axis下,然后将其改名为HelloWorld.jws,这样AXIS就自然将其发布了。现在写个客户端程序访问一下:

TestClient.java

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

import javax.xml.rpc.ParameterMode;

public class TestClient
{
   public static void main(String [] args) throws Exception {
      
       String endpoint = "http://localhost:" +"8080"+ "/axis/HelloWorld.jws";//指明服务所在位置

       Service service = new Service(); //创建一个Service实例,注意是必须的!
       Call     call    = (Call) service.createCall();//创建Call实例,也是必须的!

     call.setTargetEndpointAddress( new java.net.URL(endpoint) );//为Call设置服务的位置

        call.setOperationName( "sayHello" );//注意方法名与HelloWorld.java中一样!!

         String res = (String) call.invoke( new Object[] {} );//返回String,没有传入参数

                         System.out.println( res );
   }
}

注意项目中要导入其自带的AXIS包(当然应该把其中JAR文件替换一下),可以看到程序返回了 "HELLO WORLD!"

可以看到在AXIS里发布服务其实是一件很容易的事,这是因为这个服务很简单的原因。

2,Dynamic Proxy动态代理方式

1、将HelloWorld.java编译成HelloWorld.class,放到%TOMCAT_HOME%\webapps\axis\WEB-INF\classes

      下

2、在%TOMCAT_HOME%\webapps\axis\WEB-INF下新建deploy.wsdd文件,即SOAP服务发布描述文件

     deploy.wsdd

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <service name="HelloWorld" provider="java:RPC">
        <parameter name="className" value="HelloWorld"/>
        <parameter name="allowedMethods" value="sayHello"/>
    </service>
</deployment>

在DOS下转换目录到%TOMCAT_HOME%\webapps\axis\WEB-INF,命令:

java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd

你会发现目录下多了一个server-config.wsdd文件,这就是AXIS的配置文件,以后所有的服务发布描述都会在里面找到。(当然,你可以直接修改它,不用再写deploy.wsdd)然后打开浏览器http://localhost:8080/axis/servlet/AxisServlet,你就会看到你的服务已发布

同样用客户端程序访问一下:(注意和上边的差别!!)

HelloClient.java

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class HelloClient
{
   public static void main(String [] args) throws Exception {

       String endpoint = "http://localhost:" +"8080"+ "/axis/services/HelloWorld";//注意!差别仅仅在这里!!

       Service service = new Service();
       Call     call    = (Call) service.createCall();
       call.setTargetEndpointAddress( new java.net.URL(endpoint) );
        call.setOperationName("sayHello" );

         String res = (String) call.invoke( new Object[] {} );

                         System.out.println( res );
   }
}

对于有自定义的参数的客户端调用方式如下:

String endpoint = "http://192.168.0.3/DataManager/services/User";
    Service service= new Service();
    Call call= (Call)service.createCall();
    call.setTargetEndpointAddress(new java.net.URL(endpoint));
    call.setOperationName("addUser"); 

//前面都一样,但是这里加了一段注册参数类型的说明,如果有多个自定义参数只需要要复制这段代码,

//再修改参数就行了。
    QName qn = new QName("urn:beanservice", "User");
    call.registerTypeMapping(User.class, qn,   
      new BeanSerializerFactory(User.class, qn),   
      new BeanDeserializerFactory(User.class, qn));

         User user = new User();
         user.setClass_("U");
         user.setName_("annlee");
         user.setEmail_("1@163.com");
         user.setSeq_(new Integer(65546));
         user.setPassword_("password");
         user.setEnabled_("Y");
         user.setDisplayname_("李飞虎");
  
    String result=(String )call.invoke(new Object[]{user});











分享到:
评论
1 楼 javantsky 2010-09-01  
图呢,咋没有呢?

相关推荐

    Axis开发Web Service实例

    ### Axis开发Web Service实例详解 #### 一、概述 在探讨如何使用Apache Axis来开发Web Service之前,我们首先需要了解一些基本概念。 **Web Service**是一种标准的技术框架,用于实现不同平台之间的应用通信。它...

    Webservice之Axis高级编程

    1. **AXIS第一课:最简单的发布AXIS的Web Service** 在这一课中,我们将学习如何快速发布一个基础的Axis Web服务。首先,你需要对Web服务的基本概念和原理有一定的了解,比如SOAP协议和WSDL(Web Services ...

    web service axis 1.6

    Web服务Axis 1.6是Apache软件基金会开发的一个开源工具,专门用于构建和部署Web服务。它是基于Java的,能够使开发者轻松地将现有业务逻辑转换为Web服务,或者消费其他发布的Web服务。在本文中,我们将深入探讨Axis ...

    axis web Service

    1. **服务发布**:Axis允许开发者通过简单的注解或XML配置将Java类或接口转换为Web服务。它能够自动生成WSDL(Web Services Description Language),这是一种XML格式的规范,用于定义Web服务的接口。 2. **服务消费...

    axis发布webservice教程源代码

    【标题】"Axis发布Web服务教程源代码"指的是使用Apache Axis框架来创建并发布Web服务的教学资源,其中可能包含了详细的步骤、示例代码以及相关的配置文件。Apache Axis是开源的Java库,它允许开发者在Java平台上快速...

    axis web service例子

    总结来说,"axis web service例子"是一个实践性的教学资源,帮助开发者深入理解Java Axis Web服务的工作机制,包括服务的创建、部署和调用。通过实际操作,学习者可以提升自己的Web服务开发技能,为未来的项目开发...

    axis2发布web service

    #### 标题解读:Axis2发布Web Service Axis2 是一个开放源代码的Web服务框架,它实现了 SOAP 1.1 和 SOAP 1.2 协议,并支持 JAX-WS、JAX-RPC 等多种标准。使用 Axis2 可以方便地开发、部署和管理 Web 服务。本篇...

    web service axis项目实例

    在Java世界中,Axis是Apache软件基金会开发的一个开源工具集,它主要用于构建和部署Web服务。本项目实例将带你深入理解Web服务的实现,特别是使用Axis进行开发。 标题中的"web service Axis项目实例"表明我们将探讨...

    axis2 web service完整教学

    【Apache Axis2 Web Service 教程】 Apache Axis2 是一个流行的开源Web服务框架,用于创建、部署和管理高性能的Web服务。本教程将详细介绍如何在Eclipse环境中利用Apache Axis2搭建Web服务及其客户端。 **环境配置...

    MyEclipse下开发Web Service(Axis)

    - **Axis框架运用**:Axis提供了强大的工具集,用于生成客户端存根和服务器端实现,大大简化了Web Service的开发过程。 - **MyEclipse集成优势**:MyEclipse作为一款功能丰富的IDE,不仅提供了WSDL设计和代码生成的...

    jdk tomcat axis 安装配置 web service 发布

    通过以上步骤,你已经成功配置了JDK、Tomcat和Axis,并发布了一个简单的Web服务。在实际开发中,还需要熟悉SOAP、WSDL等Web服务相关协议,以及XML和Java编程知识,以便更有效地创建和维护Web服务。同时,了解和掌握...

    用axis2开发web service

    【用Axis2开发Web Service】是本文的核心主题,轴心技术是Java开发Web服务的一种框架,相较于Axis1,其过程更为简洁。以下是关于使用Axis2开发Web Service的详细步骤和知识点: 1. **实验环境搭建**: - 首先确保...

    web service axis1.4 jar

    总的来说,"web service axis1.4 jar"是一组包含所有必要库文件的压缩包,用于在Java环境中构建和消费Web服务。通过理解和熟练运用这些库,开发者可以创建符合WS-I Basic Profile标准的、具有互操作性的Web服务,...

    使用Axis开发Web Service程序

    Axis作为Apache组织下的一个开源项目,为开发者提供了一种简单而强大的工具来创建和部署Web Service。 #### 二、Axis简介 Axis是一个基于Java的高性能、轻量级的Web Service引擎,它支持SOAP协议,并且兼容各种...

    axis开发web service程序

    **Apache Axis** 是一个用于构建 Web Service 的开源框架,提供了简单易用的方式来创建和部署 Web Service。Axis 支持多种版本,其中 Axis1.x 和 Axis2.x 最为常见,Axis1.x 相较之下更加稳定。 - **下载所需组件**...

    axis2发布webServices的两种方式

    在IT行业中,Axis2是一个广泛使用的开放源代码Web服务框架,它是Apache软件基金会下的一个项目,主要用于构建和部署Web服务。本文将详细讲解利用Axis2发布Web服务的两种主要方式,以及它们各自的优缺点。 首先,...

    AXIS开发Web Service.docx

    AXIS 是 Apache 开源项目提供的一款强大的 Web Service 引擎,用于开发和部署 Web Service。在本文中,我们将深入探讨如何使用 AXIS 在 Tomcat 6.0.26 上进行配置,并详细介绍三种部署和调用 Web Service 的方法:...

Global site tag (gtag.js) - Google Analytics