本文目的在于使用axis快速构建可用于实际项目开发的系统结构,对于SOAP协议理论方面不做赘述。
本文中使用Jetty作为服务器,Jetty是一个免费的开放源码的100%纯Java的Http服务器和Servlet容器, 它具有轻量级、高性能和高可靠性、嵌入式、可扩展等优点。
IDE使用eclipse。
服务端构建
服务端项目Axisserver,中,lib下为服务端用到的jar文件,包括jetty相关jar文件和axis相关jar文件,将这些jar文件全部引入到项目中。server-config.wsdd为soap服务端配置文件,包含soap服务访问入口,相关参数,以及自定义的类等信息。AxisServer.java用来启动jetty服务器并注册axis服务。AxisServerInterface.java是用来为客户端提供服务的接口,客户端通过其可以访问所有开放的web services服务。Player.java是自己定义的对象,需要通过axis将此对象在服务端和客户端之间传递。MyException是自定义的异常,用来封装本项目内部的错误。
AxisServer.java
public class AxisServer {
public void start() {
Server server = new Server();
SocketListener listener = new SocketListener();
listener.setPort(8080);
ServletHttpContext context = (ServletHttpContext) server
.getContext("/");
context.setResourceBase("./web/");
try {
context.addServlet("AxisDefault", "/webservices/*",
"org.apache.axis.transport.http.AxisServlet");
server.addContext(context);
server.addListener(listener);
server.start();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new AxisServer().start();
}
}
AxisServer.java是项目是启动程序,负责启动jetty服务器,注册web services服务。
AxisServerInterface.java
public class AxisServerInterface {
public String ping() throws MyException {
return "do u hear me?";
}
public Player getPlayer(int id) throws MyException {
if (id < 0) {
throw new MyException("invalid student");
}
Player s = new Player();
s.setId(id);
s.setName("Bush" + id);
return s;
}
}
本程序是服务端入口,现在提供了ping和getStudent方法。客户端通过axis可以访问这两个服务。
Player.java
public class Player {
private int id;
private String name;
private String team;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTeam() {
return team;
}
public void setTeam(String team) {
this.team = team;
}
}
Player是一个保存数据的对象,负责在服务端和客户端之间传递数据。
MyException.java
public class MyException extends Exception implements Serializable {
String errorMsg;
public MyException() {
}
public MyException(String message) {
errorMsg = message;
}
public String getErrorMsg() {
return errorMsg;
}
public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
}
MyException用来封装项目内部产生的异常,通过它,可以将服务端的异常传递到客户端。
server-config.wsdd
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<globalConfiguration>
<parameter name="axis.disableServiceList" value="false"/>
<parameter name="axis.enableListQuery" value="true"/>
<parameter name="axis.development.system" value="true"/>
</globalConfiguration>
<handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
<transport name="http">
<requestFlow>
<handler type="URLMapper"/>
</requestFlow>
</transport>
<service name="asi" provider="java:RPC">
<parameter name="className" value="com.mi.axis.server.service.AxisServerInterface"/>
<parameter name="allowedMethods" value="*"/>
<parameter name="scope" value="application"/>
<beanMapping
qname="ns:Player"
xmlns:ns="http://service.server.axis.mi.com"
languageSpecificType="java:com.mi.axis.server.service.Player"/>
<beanMapping
qname="ns:MyException"
xmlns:ns="http://service.server.axis.mi.com"
languageSpecificType="java:com.mi.axis.server.service.MyException"/>
</service>
</deployment>
这个文件进行了axis服务端的相关定义,<service>定义了web services的提供者的相关属性,<beanMapping>定义了要传递的对象。
客户端构建
Axisclient为客户端项目,它引入了服务端项目的所有axis相关jar文件。Client.java用来演示如何访问web services。build.xml 是为使用ant 来编译产生可供Client.java使用的客户端程序。Axis.wsdl为生成的中间文件。
首先由ant 执行build.xml编译产生客户端程序,然后客户端程序Client.java调用产生了客户端程序访问服务端。
build.xml
<?xml version="1.0"?>
<project name="project" default="default">
<property name="client.dir" location="../" />
<property name="server.dir" location="../../Axisserver" />
<path id="axis.classpath">
<pathelement location="${server.dir}/bin" />
<fileset dir="${server.dir}/lib">
<include name="**/*.jar" />
</fileset>
</path>
<taskdef resource="axis-tasks.properties" classpathref="axis.classpath" />
<target name="default" >
<axis-java2wsdl output="${client.dir}/wsdl/axis.wsdl" namespace="http://service.server.axis.mi.com" location="http://localhost:8080/webservices/AxisServerInterfac" classname="com.mi.axis.server.service.AxisServerInterface">
</axis-java2wsdl>
<axis-wsdl2java output="${client.dir}/src" verbose="true" url="${client.dir}/wsdl/axis.wsdl">
<mapping namespace="http://service.server.axis.mi.com" package="com.mi.axis.wsdl" />
</axis-wsdl2java>
</target>
</project>
<axis-java2wsdl>通过服务端提供的web services生常中间文件axis.wsdl,在由<axis-wsdl2java>编译asix.wsdl生成可供调用的客户端程序,程序生成在com.mi.axis.wsdl包下。注意项目一定要引入axis-ant.jar。
Client.java
此程序访问服务端提供的web services,得到相关的结果,执行此程序前,要先启动服务器,即执行AxisSrver.java程序。
public class Client {
public static void main(String[] args) {
AxisServerInterface asi = null;
try {
URL url = new URL("http://localhost:8080/webservices/asi");
AxisServerInterfaceServiceLocator loc = new AxisServerInterfaceServiceLocator();
loc.setMaintainSession(true);
asi = loc.getAxisServerInterfac(url);
System.out.println(asi.ping());
} catch (Exception e) {
}
try {
Player p = asi.getPlayer(12);
System.out.println(p.getName());
p = asi.getPlayer(-12);
} catch (MyException e) {
System.out.println("I've got it");
} catch (RemoteException e) {
System.out.println("sth wrong");
}
}
}
当执行asi.getPlayer(-12);时,catch到系统自定义的异常MyException。
执行:
先启动AxisServer,再执行Client,得到要传递的Player对象,和要catch的MyException异常。
相关程序网址:
jetty:jetty.mortbay.org
Axis:www.apache.org
分享到:
相关推荐
然后,启动Axis2服务器,可以通过Ant工具构建Axis2的Web应用war包,并将其部署到Servlet容器中。 - **Web Service开发步骤**:开发基于Axis2的Web Service通常包括以下几个步骤: 1. 定义服务接口和实现:编写Java...
本教程将引导你快速入门,掌握使用Axis2创建Web服务的基本步骤。 **一、了解Axis2** Axis2是Axis1的下一代产品,它提供了更强大的功能和更高的性能。Axis2基于模块化架构,支持多种传输协议(如HTTP、HTTPS、SMTP...
在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而Axis和Axis2是两种流行的Java SOAP(简单对象访问协议)框架,用于构建和消费Web服务。本文将深入探讨这两个API,以及它们在Web服务开发中的作用。 ...
在Java世界中,Apache ...这不仅可以帮助开发者快速构建服务,还能确保与现有系统和其他Web服务的互操作性。在实际项目中,应根据具体需求选择适合的版本,同时,保持对新技术的跟踪,以便及时升级到更先进的解决方案。
AXIS2是Apache软件基金会开发的一个开放源代码的Web服务框架,主要用于构建高效、灵活且可扩展的Web服务。这个框架基于SOAP(简单对象访问协议)和WSDL(Web服务描述语言),支持多种协议和消息格式,如HTTP、HTTPS...
Apache Axis2是Apache软件基金会的一个开源项目,它是构建高效、灵活且高度可扩展的Web服务的框架。本教程将详细介绍如何利用MyEclipse集成开发环境快速开发基于Axis2的Web服务。 首先,我们需要了解什么是...
Axis是Apache组织开发的一款开源Web服务框架,主要用于构建和部署SOAP(Simple Object Access Protocol)服务。Axis分为两个主要版本:Axis1.x和Axis2.x,它们都是Java平台上的Web服务实现,但在设计和功能上有所...
总的来说,Spring Boot集成Axis2提供了一种简洁的方式,让开发者能够快速构建和部署基于Web服务的应用。这个实例展示了如何在Spring Boot应用中集成和调用Axis2服务,通过理解这些关键步骤,你可以根据需求扩展和...
通过Axis,开发者可以快速地将Java类转换为符合SOAP协议的Web服务。本文将逐步指导你如何设置环境、创建服务端点接口、编写服务实现、配置部署描述符以及发布和测试Web服务。 【详细步骤】 1. **环境准备**: - ...
在实际应用中,开发人员可能需要配置Axis2服务器,创建和部署Web服务,处理服务调用,集成其他框架(如Spring),或者调试和优化服务性能。通过阅读`axis2-1.6.1-docs.zip`中的文档,可以深入了解这些过程和最佳实践...
4. 使用Ant构建Axis2 Web应用。进入AXIS2_HOME/webapp目录,执行ant create.war命令,生成的war文件位于AXIS2_HOME/dist目录。 Axis2的Web Service开发步骤一般包括: 1. 创建Java服务实现类。 2. 编写Services.xml...
通过以上步骤,开发者就可以在Eclipse环境下利用Axis2快速构建和调试Java Web服务。在实际项目中,还需要了解如何处理异常、进行安全配置以及优化性能等方面的知识,这些都是成功开发Web服务的关键。总之,Eclipse ...
它通过自动配置和“起步依赖”使得开发者能够快速构建可独立运行的应用。而Axis1.4是Apache软件基金会的一个开源项目,它提供了一个SOAP(简单对象访问协议)Web服务框架,用于创建和部署Web服务。 当我们需要在...
通过整合SpringBoot与Axis,我们可以快速构建高效且易于维护的Web服务。 首先,让我们了解什么是SpringBoot。SpringBoot是Spring框架的扩展,旨在简化Spring应用的初始搭建以及开发过程。它提供了开箱即用的设置,...
标题 "axis2 jar包" 指的是Apache Axis2的Java Archive(JAR)文件集合,它是Apache软件基金会开发的一个Web服务框架。...通过"axis2-1.6.2-war"文件,我们可以快速在Java应用服务器上部署并运行基于Axis2的Web服务。
### 应用Axis开发Web Services的关键知识点 #### 一、Axis的安装 1. **JDK版本要求**:为了能够顺利地安装与运行Axis,必须确保计算机上已安装了JDK1.4.2或更高版本。这是因为Axis依赖于较新的Java特性,较低版本...
"Axis"是Apache软件基金会开发的一个开源Java库,专门用于构建和使用Web服务。标题提到的"Axis包最完整版包括axis.jar和axis-scheme.jar等",这意味着这个压缩包包含了Axis框架的核心组件和额外的支持库。 1. **...
通过以上步骤,"小白"也能快速上手使用Axis2构建和部署Web服务。实践中,理解Web服务的基本概念和Axis2的工作原理,以及熟悉相关工具的使用,将大大提高开发效率。随着经验的积累,可以进一步探索Axis2的高级特性和...
3. **服务组件**:Axis2支持服务组件(Service Component Architecture, SCA),这是一种用于构建分布式应用程序的模型。服务组件可以通过服务接口、数据绑定和操作来定义,使得服务的创建和组合变得更加简单。 4. ...