晚上顺便学习了下axis1 和 axis2,发现两者的API相差很大,不知道现在更流行的是哪个,就晚上简单的入门后觉得,axis2还是比axis1开发起来容易上手的多,axis1就单单对服务器发布.wsdd文件就相当麻烦。下面分别就axis1和axis2说下如何集成到自己的项目里:
一、集成axis1
1、从官网下载项目
http://ws.apache.org/axis/,最新的是1.4
2、解压下载的axis压缩包,假设AXIS_HOME为解压后的根目录,demo为自己项目的名称
3、将AXIS_HOME/lib目录下的所有jar包都复制到自己项目的WEB-INF/lib下
4、将AXIS_HOME/webapps/axis/WEB-INF/web.xml中与axis相关的配置都复制粘贴到自己项目的web.xml中去。
5、编写需要发布SOAP服务的java类,注意要发布的方法需是public的。以下以Foo.java为例:
public class Foo {
public String sayHello(String name) {
return "hello: " + name;
}
}
6、接下来就是发布soap服务了,在axis1中有两种发布方式,即时发布和定制发布,下面分别介绍两种发布方式:
6.1 即时发布:这样方式非常简单,将Foo.java的后缀名改成jws,即java.jws,然后把该文件放在项目里可以在客户端直接访问到的目录下(如WEB-INF就不可以),比如直接放在项目demo的根目录下,通过http://主机名/demo/Foo.jws访问,如果看到Click to see the WSDL就说明发布成功了,点击进去就能看WSDL的描述文件了。接下来就可以写客户端测试代码了:
String path = "http://localhost:8080/demo/Foo.jws";;
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new URL(path));
call.setOperationName(new QName(path ,"sayHello"));
Object obj = call.invoke(new Object[]{"lady gaga"});
System.out.println(obj.toString());
测试代码就不说明了,相信大家能看明白。即时发布方式非常简单、快速,但前提是必须有需要发布soap服务的JAVA类的源文件,如果只有.class或者jar包,那显然就不适用了。
6.2 定制发布:定制发布相对于即时发布要发杂一些,需要手写wsdd文件来描述web service,但是在牺牲了简单、快速之后,带来的却是灵活性和适用性的大大提高。
首先在WEB-INF/目录下创建deploy.wsdd文件,文件内容如下:
<deployment name="test" xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="foo" provider="java:RPC">
<parameter name="className" value="Foo"/>
<parameter name="allowedMethods" value="sayHello" />
</service>
</deployment>
<deployment>是wsdd文件的根元素。<service>代表一个soap服务,name属性唯一标识这个soap服务,provider表示提供服务的语言和方式,这里是用java语言和RPC方式。
<paramter>提供<service>更多参数信息,当name值为className时,value值为提供soap服务的JAVA类,当name值为allowedMethods时,value值为允许调用的方法。
创建完了deploy.wsdd文件后,我们需要想服务器发布这个soap服务,这需要用到axis提供的一个工具类,打开cmd,进入到WEB-INF/下,执行如下命令:
- set AXIS_HOME=D:\axis
- set AXIS_LIB=%AXIS_HOME%\lib
- set AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar;
%AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;
%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar
- java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient
-lhttp://localhost:8080/demo/services/AdminService deploy.wsdd
以上的三个set命令,设置变量值AXISCLASSPATH为axis相关jar包路径集,java命令就是通过axis提供的工具类AdminClient来发布deploy.wsdd所描述的工具类,执行上面的命令之后(保持服务器是启动状态),会在同一目录下生成server-config.wsdd文件,说明发布成功。可以用6.1即时发布中的客户端测试代码来测试刚发布的soap服务,修改下path的值即可。
String path = "http://localhost:8080/demo/Foo";;
二、集成axis2
之前的准备工作和集成axis1相同,就是axis2所带的jar包非常之多,挑选必须的jar就可以了。
仍然以Foo类为例,在项目的WEB-INF/目录下建立名为pojo的目录,然后将Foo.
class文件放入pojo目录中,这样就发布完成了,可以通过在浏览器输入http://主机名/demo/services/listServices来查看刚才发布的服务。简单吧,这就是axis2带来的无需任何配置,同样适合.class文件的发布方式。下面就是在客户端进行测试:
//调用web service 的 url
String path = "http://localhost:8080/demo/services/Foo";
//使用RPC的方式调用web service
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOption();
EndpointReference target = new EndpointReference(path);
options.setTo(target);
Object[] params = new Object[]{"lady gaga"};
Class[] classes = new Class[]{String.class};
QName q = new QName(path,"sayHello");
Object obj = serverClient.invokeBlocking(q,params,classes)[0];
System.out.println(obj.toString());
从上面可以看出来,axis2和axis1API相差还是很大的。
分享到:
相关推荐
总的来说,了解和掌握Axis1.x与Axis2.x的区别和使用方法,对于Java Web服务开发者来说至关重要。这不仅涉及到选择合适的框架,也关系到如何有效地部署、管理和优化Web服务。在实际工作中,应根据项目需求和团队的...
其中,Axis1(以下简称Axis)是早期版本,而Axis2则是对Axis进行了大量改进后的版本。尽管两者都提供了类似的功能,但在实际应用中还是存在一些重要的区别。 #### Axis与Axis2 WSDL2Java工具的基本用法 1. **Axis ...
Axis1, Axis2, Xfire, CXF 是四种常用的WebService框架,它们之间有着不同的特点和应用场景。本文将对这四种框架进行详细的比较和分析,以帮助开发者选择合适的框架。 XFire 是一种新一代的 WebService 平台,它...
Axis1和Axis2是两个非常重要的Java Web服务框架,它们主要用于构建和部署SOAP(Simple Object Access Protocol)服务。...了解和掌握Axis1和Axis2的使用,将有助于开发者构建高质量、高性能的Web服务应用程序。
Axis分为两个主要版本:Axis1和Axis2,这两个版本在功能、性能和设计上都有所不同。 **Axis1** 是最初的版本,发布于2003年,它基于SOAP 1.1规范,提供了一个快速开发Web服务的框架。Axis1使用JavaBeans Activation...
Axis1和Axis2是两个流行的Java SOAP(简单对象访问协议)Web服务框架,它们由Apache软件基金会开发,用于构建和部署Web服务。这两个框架在不同的版本中提供了对Web服务的不同特性和功能支持。 **Axis1** 是较早的...
在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而Axis和Axis2是两种流行的Java SOAP(简单对象访问协议)框架,用于构建和消费Web服务。本文将深入探讨这两个API,以及它们在Web服务开发中的作用。 ...
axis2客户端调用axis1服务接口 调用方式 使用RPC方式调用WebService,为了防止冲突可以增加 // 与weblogic的lib冲突配置 System.setProperty("javax.xml.stream.XMLInputFactory", ...
这个框架是基于Axis1的升级版,提供了许多改进和新特性,包括更好的性能、模块化架构和增强的MIME支持。标题提到的“axis2-1.5.1-bin.zip”和“axis2-1.5.1-war.zip”是Apache Axis2的两个不同版本的发行包,分别...
【标题】中的“基于axis2实现的webservice简单实现(客户端+服务端)”表明了本文将探讨如何使用Apache Axis2框架来创建和消费Web服务。Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了高效且灵活的...
1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web服务接口。这个类通常会遵循SOAP协议,定义服务操作。例如,你可以创建一个名为`HelloWorldService`的类,包含一个`sayHello`...
标题中的"axis2-idea-plugin-1.7.9.zip_axis2_axis2-idea-plugin_idea导入axis2_"提到了几个关键元素,分别是"axis2"、"idea-plugin"和"idea导入axis2",这暗示了这个压缩包是用于在IntelliJ IDEA这款集成开发环境...
1、axis2客户端下载地址:http://mirror.esocc.com/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip; 2、下载解压在D:\Work_Program_Files目录;在D:\Work_Program_Files\axis2-1.6.2\bin目录有一个wsdl2...
axis2-java2wsdl-1.5.4.jar axis2-jaxbri-1.5.4.jar axis2-jaxws-1.5.4.jar axis2-jibx-1.5.4.jar axis2-json-1.5.4.jar axis2-kernel-1.5.4.jar axis2-metadata-1.5.4.jar axis2-mtompolicy-1.5.4.jar axis2-saaj-...
本文将深入探讨两种流行的Java Web服务框架——Axis2和CXF,并提供一个简单的实例来帮助理解它们的工作原理和使用方法。 首先,让我们了解一下`Axis2`。Axis2是Apache软件基金会开发的一个高性能、灵活且可扩展的...
本文将详细介绍Axis2的API及其在Web服务开发中的应用,同时也会探讨Axis2的帮助文档如何协助开发者更好地理解和使用这个框架。 ### Axis2简介 Axis2是Apache Axis的第二代版本,它在第一代的基础上进行了许多改进和...
AXIS2使用Java Archive (JAR) 文件来打包服务。创建一个Java类,比如`HelloWorld.java`,实现`sayHello`方法: ```java import org.apache.axis2.AxisFault; import org.apache.axis2.context.MessageContext; ...
Axis2是由Axis1.x系列演化而来,而Apache CXF则是由Celtix和XFire项目整合而生。在本文中,我们将探讨CXF和Axis2框架的区别,以帮助开发者更好地选择适合自己的框架。 架构设计 Axis2是一个对Axis进行了彻底的重写...
AXIS1是早期版本,但至今仍被一些遗留系统或对兼容性有特定需求的项目所使用。 在Java世界中,Web服务是通过SOAP(简单对象访问协议)进行通信的一种方式,允许不同平台和语言的应用程序之间进行数据交换。AXIS1...
axis2-1.5.1-bin.zip 是1.5.1版本的Axis2二进制发行包,类似于1.8.2版本的bin文件,适合已经具备Java开发环境的用户安装和使用。 axis2.eclipse.codegen.plugin-1.8.2-dist.zip 文件包含了1.8.2版本的Axis2 Eclipse...