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});
好了,相信你对AXIS已有了大致的了解。接下来将会涉及到Stub方式调用,及AXIS的安全问题,AOP编程方面的知识。
相关推荐
1.1 AXIS第一课:最简单的发布AXIS的Web Service 1.2 AXIS第二课:工程应用中的AXIS的发布方法Stub 1.3 AXIS第三课:AXIS高级应用,使用Handler来增强Web服务的功能 1.4 AXIS第四课:AXIS高级应用,建立安全的AXIS...
axis发布webservice教程axis发布webservice教程axis发布webservice教程axis发布webservice教程
webService—Axis实例webService—Axis实例webService—Axis实例webService—Axis实例webService—Axis实例webService—Axis实例webService—Axis实例
借鉴网上的资源,弄了一个SpringBoot开发WebService之Axis示例。
axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例
本案例实现使用Axis2生成.arr包发布WebService服务,并使用Axis2生成客户端代码方式调用WebService
简单例子:axis2整合spring发布webservice,以及session的管理
基于axis2实现的webservice简单实现(客户端+服务端)。
Axis1发布webservice服务,demo项目,已包含所需的jar包等各种文件,下载导入即可启动运行,有问题的欢迎咨询哈
webservice的框架有很多种axis1 axis2 cfx......。 其中axis1.4是比较稳定和成熟的一种。。。 axis的下载 http://ws.apache.org/axis/
eclipse axis webservice 开发 eclipse下使用axis2 开发webservice系统
使用axis发布webservice服务,客户端 服务端均有 本地测试通过。
资源包含了:axis2-1.7.4-bin.zip、axis2-1.7.4-war.zip、axis2-eclipse-...备注:资源超过了70M 分成了3部分 见axis2方式开发webservice(一)和 axis2方式开发webservice(二)、 axis2方式开发webservice(三)
在开发之前, 先了解一下AXIS,axis目前出现的2版本以其灵活性,快速开发工具的集成高于xfire而使用者居其上.用Eclipse开发,一开始就会想到xfire,它是集成与Eclipse的.所以 开发起来非常方便,现在我们来看看axis的开发...
Axis的jws发布WebService Axis的wsdd模式发布WebService Axis中传递复杂对象和内部类 Axis中的handler、chain的特性 Axis中处理异常信息 Axis中传递文件信息 Axis常用命令介绍 Axis 提供的工具和调试 Axis 的wsdl...
axis webservice简单示例。没别的了。
一个基于axis的webservice接口例子
Eclipse + Axis2发布WebService
Axis WebService。Axis WebService。Axis WebService。Axis WebService。
Web Service WebService Axis一个完整的客户端代码