快速构建axis应用
2008-04-10 06:54
309 查看
本文目的在于使用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.javapublic 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.javapublic 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.javapublic 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.javapublic 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[align=left][/align][align=left][/align][align=left] [/align][align=left] [/align][align=left] [/align][align=left] [/align][align=left] [/align][align=left] [/align][align=left][/align][align=left] [/align][align=left] [/align][align=left] [/align][align=left] [/align][align=left] [/align][align=left] [/align][align=left] [/align][align=left] [/align][align=left] [/align][align=left] qname="ns:Player"[/align][align=left] xmlns:ns="http://service.server.axis.mi.com"[/align][align=left] languageSpecificType="java:com.mi.axis.server.service.Player"/>[/align][align=left] [/align][align=left] qname="ns:MyException"[/align][align=left] xmlns:ns="http://service.server.axis.mi.com"[/align][align=left] languageSpecificType="java:com.mi.axis.server.service.MyException"/> [/align][align=left] [/align]这个文件进行了axis服务端的相关定义,定义了web services的提供者的相关属性,定义了要传递的对象。 客户端构建
Axisclient为客户端项目,它引入了服务端项目的所有axis相关jar文件。Client.java用来演示如何访问web services。build.xml 是为使用ant 来编译产生可供Client.java使用的客户端程序。Axis.wsdl为生成的中间文件。 首先由ant 执行build.xml编译产生客户端程序,然后客户端程序Client.java调用产生了客户端程序访问服务端。build.xml 通过服务端提供的web services生常中间文件axis.wsdl,在由编译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异常。 相关程序网址:eclipse: www.eclipse.orgjetty: jetty.mortbay.orgAxis: www.apache.org
服务端项目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.javapublic 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.javapublic 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.javapublic 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.javapublic 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[align=left][/align][align=left][/align][align=left] [/align][align=left] [/align][align=left] [/align][align=left] [/align][align=left] [/align][align=left] [/align][align=left]
Axisclient为客户端项目,它引入了服务端项目的所有axis相关jar文件。Client.java用来演示如何访问web services。build.xml 是为使用ant 来编译产生可供Client.java使用的客户端程序。Axis.wsdl为生成的中间文件。 首先由ant 执行build.xml编译产生客户端程序,然后客户端程序Client.java调用产生了客户端程序访问服务端。build.xml 通过服务端提供的web services生常中间文件axis.wsdl,在由编译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异常。 相关程序网址:eclipse: www.eclipse.orgjetty: jetty.mortbay.orgAxis: www.apache.org
相关文章推荐
- 快速构建axis应用
- 快速构建axis应用
- 快速构建axis应用
- 快速构建axis应用
- 快速构建Windows 8风格应用24-App Bar构建
- 快速构建Windows 8风格应用8-贴靠视图
- 快速构建Windows 8风格应用15-ShareContract构建
- 快速构建Windows 8风格应用22-MessageDialog
- 快速构建Windows 8风格应用30-应用生命周期管理
- 快速构建Windows 8风格应用37-常见发布注意事项
- 使用 AppFuse 快速构建 J2EE 应用
- 快速构建Windows 8风格应用23-App Bar概述及使用规范 推荐
- 《快速构建Windows 8风格应用》系列文章汇总
- 利用 OpenScales+MapServer+PostGIS 快速构建 GIS 应用
- 快速构建Windows 8风格应用19-基础控件II
- 快速构建Windows 8风格应用36-商店应用发布流程
- 快速构建Windows 8风格应用20-MediaElement 推荐
- WEB应用 信息管理系统 数据分析展示系统 OA办公工作流 快速构建与开发平台
- 使用Spring Boot快速构建基于SQLite数据源的应用
- 快速构建Windows 8风格应用8-贴靠视图