在开发之前,先了解一下AXIS,axis目前出现的2版本以其灵活性,快速开发工具的集成高于xfire而使用者居其上。用Eclipse开发,一开始就会想到xfire,它是集成与Eclipse的。所以开发起来非常方便,现在我们来看看axis的开发是怎么样的? 看完本文后,你可以相互比较一下xfire与它的差别。
首先,创建axis环境 .(注:我事先说明。这是对此版本的基本功能与简单实例的描术)
本人的开发环境eclipse3.7,tomcat5.5.31,jdk1.5 axis_1.4.6目前最新版
这里主要讲一下webservice的一个开发过程,
1. 下载axis1.4最新版本http://apache.mirror.phpchina.com/ws/axis/1_4/
2. 将解压后的axis-1_4文件下的webapps目录下的axis目录拷到%TOMCAT_HOME%Webapps/目录下
3. 启动tomcat的。输入路径http://localhost:8080/axis
- 打开axis主界面
4. 点击页面上的Validation ->查看一下你的axis 是否添加了完整的jar文件,注意,这里要仔细看一下,自已少了什么 样的 jar文件,有时缺少了文件axis将无法正常工作。补充一下:这里的xmlsec.jar文件如果缺少的话。可以到这里下载
http://xml.apache.org/security/dist/java-library/ c++的与java两个目录。
5. 下载后把xmlsec-1。4。6。jar考到axis的lib目录下。
上面的步骤如果进行正常将会在Validation页面中就看不到有Error与Warning的信息。好了,接下来我们开始编写代码
Axis支持三种web service的部署和开发,分别为:
1、 Dynamic Invocation
Interface (DII)
2、 Stubs方式
3、 Dynamic Proxy方式
这里主要讲一下我的开发过程,通过这样过程,你也将初步的掌握axis 开发Webservice的整体过程.
我再这里只讲第2种方式的
第二种:Stubs 开发方式(stubs 故名思意,存根的方式)
Stubs 方式相对要复杂一点.不过如果学会了这种方式,嘿嘿,那你开发的时候就会明显比第一种方式快了,接下来,跟我一起学吧。
步骤1:
创建环境变量,设置AXIS的环境变量。
这种方式的编码,先要设置一下命令行的环境。右键我的电脑 ? 属性 ? 选择高级选项卡 ? 新建用户变量 ? 输入用户变量如下:
变量名:AXIS_HOME
变量值: D:\tomcat-5.5.31\webapps\axis\WEB-INF
变量名:AXIS_LIB
变量值:
%AXIS_HOME%\lib (这是本人的)
变量名: AXISCLASSPATH
%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\wsdl4j-1.5.1.jar;%AXIS_LIB%\activation.jar;%AXIS_LIB%\xmlsec-1.4.6.jar;%AXIS_LIB%\axis-ant.jar;%AXIS_LIB%\mail.jar;
CLASSPATH:
追加:%AXISCLASSPATH%
新建好上述的三个变量后.确定退出.
步骤2:
编码开始!这里要稍讲得详细并复杂一点了,我们上面看到了,只设置了一个普通
的参数,这里我就写一下自定义数据类型参数的传递.网上很多文章只讲到了普通数据类型做参数传递。
服务器端的编写,代码与注释如下:
首先定义自定义参数类(第一个类)
package com.web.test;
publicclass UserBean {//自定义数据类型.
//很简单,只有一个String
与int
型
private String name="";
private int age;
publicint getAge() {
return age;
}
publicvoid setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
publicvoid setName(String name) {
this.name = name;
}
}
其次编写第二个类Webservice服务器端类
package com.web.test;
publicclass Server {//服务器端
//服务端,传递的是一个自定义的数据类型.UserBean
public String getBeanStr(UserBean bean){
return "You Name:"+bean.getName()
+ ",You Age:" + bean.getAge();
}
}
最后编写一个deploy.wsdd文件如下:
<deployment
xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<!-- 这里的stubs为wsdd描述符中的ServiceNamespace -->
<service name="stubs" provider="java:RPC">
<!-- 这里的ClassName就是我的服务类了,这个服务主要功能就是传递
一个自定义的对象
-->
<parameter name="className" value="com.web.test.Server"/>
<!-- 这里描术的意思是,此服务类中的方法全部享出来.value值为*号
如果你只想让你的客户端只能调用其中一个方法时,value值改为方
法名就可以了。-->
<parameter name="allowedMethods" value="*"/>
<!-- 这个typeMapping 是类型映射,使传递的参数序列化用反序列化,
一个自定义类型在要网络上传递,那就一定得让他序列化. -->
<!-- 下面是反序列化类配置-->
<typeMapping
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle=http://schemas.xmlsoap.org/soap/encoding/
<!-- 这是Qname名称的定义 -->
qname="ns1:user"
<!-- 序列化类配置 -->
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
<!-- 我的数据参数类型类路径-->
type="java:com.web.test.UserBean"
<!-- Qname对映的key -->
xmlns:ns1="urn:BeanService"/>
</service>
</deployment>
到这一步,我们的服务端配置完成,整理一下思路,stubs方式调用需要
(这里主要是为了讲述自定义类的对像传递)
1. 一个自定义类。
2. 一个服务端类。
3.一个wsdd文件服务描术符。
OK接着看。
将上面写好的两个类的class文件复制到/axis/web-inf/class目录下,只要把整个包复制过来就行了,然后在把deploy.wsdd文件复制到/axis/web-inf/目录下。
打开控制台进入你的axis目录:
>cd D:\tomcat-5.5.31\webapps\axis\WEB-INF (我的目录)
>java
org.apache.axis.client.AdminClient -l
http://localhost:8080/axis/services/AdminService
deploy.wsdd
(说明:
stubs就是刚才我们在deploy。wsdd文件里配置的<service
name="stubs")
这里是关键.这个命令就是发布这个服务。你只需这样理解它。发布成功后,你在看下你的Axis/web-inf/目录下,多了一个server-config.wsdd文件,你可打开它看下里成的描述符是不是跟我们写的deploy。wsdd相类似呢?
如果发布失败,那么在控制台下你将会看到一些错误信息,并仔细的解决它.
(注:一般错误的原因有这么几点,
我个人在开发学习时,可能是类路径没有写对,也可能是你的<service name="stubs" 这个名称有点错误,你要么改成别的名称试试。
也有可能是你的wsdd文件里面写得不规范。
最后可能就是你的命令无效,ClassNotFoundException错误,这个错误是因为你没有配置好axis的环境造成的。)
发布成功后在控制台下会有提示:
Processing file deploy.wsdd
<Admin>Done processing</Admin>
OK当您发布成功后.可以开始往下写了.
步骤3:
嘿。完成了上面两个步骤,接下来的工作就是很轻松的了,我们来生成一个客户端
>cd D:\tomcat-5.5.31\webapps\axis\WEB-INF (我的目录)
打开生成的wsdl地址http://localhost:8080/axis/services/stubs?wsdl将打开的xml文档保存为stubs.wsdl文件,放在上面的目录下。
控制台命令
>java -cp %AXISCLASSPATH% org.apache.axis.wsdl.WSDL2Java stubs.wsdl
打开axis/web-inf/目录下可以看到生成了localhost目录和BeanService目录,OK,复制这2个目录,到你的项目中。
localhost目录生成了:
Server.java
ServerService.java
ServerServiceLocator.java
StubsSoapBindingStub.java
User.java
java文件;
接下来的工作就是编写一个调用类测试。代码与注释如下
package myclient;
import java.net.URL;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import org.apache.axis.encoding.ser.BeanSerializerFactory;
public class Test {
public static void main(String []args) throws Exception {
QName qname = new QName("urn:BeanService","user");
Service s = new Service();
Call call = (Call) s.createCall();
//注册这个bean为可序列化的.传递参数
call.registerTypeMapping(User.class,qname,
new BeanSerializerFactory(User.class,qname),
new BeanDeserializerFactory(User.class,qname));
//设置一下调用方法名.不设置肯定会报错的哦
call.setOperationName("getBeanStr");
//设置一下这个服务的绝对路径.
call.setTargetEndpointAddress(
new URL("http://localhost:8080/axis/services/stubs?wsdl"));
//实例化一个User,这个User是生成出来的User哦,不是原先那个。
User u = new User();
u.setAge(23);
u.setName("do WebService!");
//通知方法,并返回结果
String str = (String)call.invoke(new Object[]{u});
System.out.println(str);
//out.print ==> You Name:do WebService!,You Age:23
}
}
好了,这下完成了stubs的方式.
我也是刚学习的,有疑问可以留言大家互相交流学习
分享到:
相关推荐
在这个"WebService Axis1.4接口服务序列/反序列复杂项目实例"中,我们将深入探讨如何在 Axis1.4 中处理复杂的参数、自定义实体对象的序列化与反序列化,以及客户端的复杂调用。 首先,让我们理解序列化和反序列化的...
Axis1.4是Apache软件基金会提供的一个开源Web服务框架,主要用于构建和部署SOAP(Simple Object Access Protocol)服务。在本文中,我们将详细探讨Axis1.4在Web服务开发中的关键知识点。 1. **Axis1.4框架**:Axis...
Axis1.4是Apache Axis的一个版本,它是一个流行的开源工具,用于实现和部署Java Web服务。Apache Axis1.4支持SOAP(Simple Object Access Protocol)和WSDL(Web Services Description Language),这两种技术是构建...
3. **创建WebService**:在Spring Boot应用中,你可以通过Axis1.4创建一个WebService。首先,定义一个Java类,包含你想要公开的方法。然后,使用Axis的工具生成服务端点接口和服务类。 4. **配置Spring Boot**:...
Web服务Axis1.4是Apache组织开发的一个开源框架,专门用于构建和部署Web服务。它基于Java技术,允许开发者在Java应用程序中实现Service-Oriented Architecture (SOA)。Axis1.4版本是该框架的一个稳定发行版,包含了...
在这个"AXIS1.4 WebService服务端和客户端例子"中,我们将深入探讨如何使用AXIS1.4搭建服务端和客户端,以及如何进行远程调用。 首先,让我们从服务端开始。服务端是提供Web服务的系统,它可以接收客户端的请求并...
Axis1.4是Apache软件基金会提供的一个开源工具,专门用于开发和部署Web服务。本教程将详细讲解如何使用Axis1.4进行Web服务的开发,包括创建服务端和客户端。 首先,我们需要了解Web服务的基本概念。Web服务是通过...
在本文中,我们将深入探讨如何在Spring Boot项目中集成并使用Axis1.4来发布Web服务。Spring Boot以其简化配置和快速开发能力而受到广泛欢迎,而Axis1.4是Apache软件基金会的一个开源项目,主要用于生成和消费SOAP ...
本方法是用axis1.4技术,实现java客户端调用webservice。已经可实现过可行的,如果不行可加我QQ号302633进行详细解析。
当我们需要在Spring Boot项目中集成旧版的 Axis1.4 来发布Web服务时,这通常涉及到对传统SOAP(简单对象访问协议)服务的支持。以下将详细讲解如何在Spring Boot应用中集成Axis1.4以及使用wsdd文件发布Web服务。 ...
java org.apache.axis.wsdl.WSDL2Java -u http://xxxxxx?wsdl -p com.webservice.wsdl -t -u 要访问的webservice的地址标准的wsdl文件 -p 生成java文件的包名 -t 生成的java文件中包含junit的测试代码。 详见...
在Java开发中,Axis1.4是一个常用的开源工具,用于构建和部署Web服务。本实例主要探讨如何将Axis1.4与Java项目整合,搭建Web服务的服务端。下面我们将详细阐述Axis1.4、Web服务以及如何在服务端进行设置。 一、 ...
在Java开发中, Axis1.4 是一个广泛使用的开源框架,用于构建和部署Web服务。本文将深入探讨如何使用Axis1.4与Java项目整合,搭建Web服务客户端,并通过具体的客户端代码实例进行详解。 首先,我们需要理解Web服务...
Axis1.4 使用 JAX-RPC(Java API for XML-based RPC)进行数据绑定,可以通过使用 `@WebService` 和 `@WebMethod` 注解来标记服务类和方法。对于复杂类型数组,需要定义对应的 Java 类,并使用 `@XmlType` 和 `@...
Axis1.4是Apache软件基金会开发的一个开源Java框架,用于创建和部署Web服务。这个框架在Web服务领域中扮演着重要角色,特别是在早期的Web服务实现中。标题和描述提到的知识点主要集中在如何使用Axis1.4来部署Web服务...
### WebService技术应用:Spring 3 + CXF 3.4与Axis 1.4的交互 在现代软件开发中,Web服务作为一种重要的技术手段,被广泛应用于不同系统之间的通信。其中,Spring框架与Apache CXF是实现RESTful或SOAP风格的Web...
标题 "axis1.4带lib包java开发webservice客户端和服务端" 涉及到的是一个基于Java的Web服务开发工具包,Axis1.4,它包含必要的库文件(lib)来支持创建和消费Web服务。这个压缩包是为MyEclipse集成开发环境设计的,...
标题中的“手把手教你用axis1.4搭建webservice”是指一篇教程,旨在指导读者如何使用Axis1.4这个开源工具来创建和部署Web服务。Axis是Apache软件基金会的一个项目,它提供了一种简单的方式来实现Java到SOAP(Simple ...
标题中的“手写Axis1.4发布WebService以及客户端调用”指的是使用Apache Axis1.4框架来创建和消费Web服务的过程。Apache Axis是用于构建Web服务的一个开源工具,它允许开发者将Java类转换为Web服务,并且提供客户端...
在本文中,我们将深入探讨如何使用Axis1.4版本来开发Web服务,这是一个基于Java的开源工具,专门用于创建和部署Web服务。我们将通过一个详细实例来阐述整个过程,包括Web服务的发布和客户端调用。 一、 Axis1.4简介...