axis2急速入门
Axis2从入门到精通--Webservice在eclipse下开发教程
Axis2 教程文章分类:Java编程Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物。
Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持Spring、JSON等技术。
这些都将在后面的系列教程中讲解。
在本文中主要介绍了如何使用Axis2开发一个不需要任何配置文件的WebService,并在客户端使用Java和C#调用这个WebService。
一、Axis2的下载和安装读者可以从如下的网址下载Axis2的最新版本:/axis2/在本文使用了目前Axis2的最新版本1.4.1。
读者可以下载如下两个zip包:axis2-1.4.1-bin.zipaxis2-1.4.1-war.zip其中axis2-1.4.1-bin.zip文件中包含了Axis2中所有的jar文件,axis2-1.4.1-war.zip文件用于将WebService发布到Web容器中。
将axis2-1.4.1-war.zip文件解压到相应的目录,将目录中的axis2.war文件放到<Tomcat安装目录>\webapps目录中(本文使用的Tomcat的版本是6.x),并启动Tomcat。
在浏览器地址栏中输入如下的URL:http://localhost:8080/axis2/如果在浏览器中显示出如图1所示的页面,则表示Axis2安装成功。
图1二、编写和发布WebService对于用Java实现的服务程序给人的印象就是需要进行大量的配置,不过这一点在Axis2中将被终结。
在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。
其中POJO中所有的public方法将被发布成WebService方法。
下面我们来实现一个简单的POJO,代码如下:public class SimpleService{public String getGreeting(String name){return "你好 " + name;}public int getPrice(){return new java.util.Random().nextInt(1000);}}在SimpleService类中有两个方法,由于这两个方法都是public方法,因此,它们都将作为WebService方法被发布。
axis2 webservice入门手册(JS,Java,PHP调用实例源码)思途科技出品
思途科技,网络营销专家
思途科技 让有需求的客户找到你
<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/> </operation> </service> 二、项目打包并发布 1.可使用你熟悉的 IDE 进行打包成 HelloWorld.aar 参考直接打包方式: 在命令符行境下,将当前目录切换到该项目包下。如博主的例子就需要切换到 sample 所在 的文件夹,注意并非切换进 sample。使用如下命令:jar cvf HelloWorld.aar . 完成在当前 目录生成 HelloWorld.aar 。请注意命令末尾的点“.”。 2.发布,使用前面提到的登录 axis2 后看到的 Upload Service 工具 将 HelloWorld.arr 部署到 Tomc 上。 3.发布测试,如博主例子访问 http://localhost:8088/axis2/services/HelloWorld?wsdl 查看第 2 步骤中部署的 HelloWrold 的描述文件。 如果有报错,则需根据错误信息检查上述步骤。如果没有错误信息,那么 HelloWorld 的 service 端就算完成了。 三、简单客户端调用 1.一个简单的 Java 调用客户端。 参考代码: package example.client; import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMFactory; import org.apache.axiom.om.OMNamespace; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.client.ServiceClient; public class TestClient {
学习CXF WebService入门实例一
最近开发开始学习Web Service,如果你是大神,请路过!谢谢!遵循前辈大神们的教导~~~,内事不决问度娘,外事不决问谷歌(现在谷歌已经不能用了),只能问度娘了!上网一百度,套用周董的一句歌词,霍,霍,霍,霍,这么多的套路(axis,axis2,XFire,CXF等),我到底选择哪一个?因为要和Spring进行对接,看了一下,CXF与Spring的耦合度最好,于是就选择了CXF。
上官网下jar包,下了最新的apache-cxf-3.1.4.zip包。
解压出来,看看里面的最简单的实例,apache-cxf-3.1.4\samples\java_first_jaxws,本着你快乐所以我快乐加上不要脸的原则,我抄抄抄,改了一下名字,开发环境jdk1.6, jdk1.5没试过,上眼呐!新建工程mywbs,导入jar包cxf-core-3.1.4.jarjetty-continuation-9.2.11.v20150529.jarjetty-http-9.2.11.v20150529.jarjetty-io-9.2.11.v20150529.jarjetty-server-9.2.11.v20150529.jarjetty-util-9.2.11.v20150529.jarwsdl4j-1.6.3.jarxmlschema-core-2.2.1.jar一、接口类IHelloWorld.javapackage com.ws.hello;import java.util.List;import javax.jws.WebService;import ers;@WebServicepublic interface IHelloWorld {public String sayHello(String name);public String getUserName(Users user);public List<Users> getListUser();}二、实现类(说明endpointInterface = "com.ws.hello.IHelloWorld",IHelloWorld 类加上路径,此处注意)HelloWorldImpl.javapackage com.ws.hello;import java.util.ArrayList;import java.util.List;import javax.jws.WebService;import ers;@WebService(endpointInterface = "com.ws.hello.IHelloWorld",serviceName = "IHelloWorld", portName="IHelloWorldPort")public class HelloWorldImpl implements IHelloWorld {@Overridepublic String sayHello(String name) {return name + ": 您好啊!";}@Overridepublic String getUserName(Users user) {return user.getName();}@Overridepublic List<Users> getListUser() {System.out.println("getListUser called~~~");List<Users> list = new ArrayList<Users>();list.add(new Users(2,"张三"));list.add(new Users(3, "十八罗汉"));list.add(new Users(4,"五王"));return list;}}三、实体类Userspackage com.ws.entity;import java.io.Serializable;public class Users implements Serializable{private static final long serialVersionUID= -5031894017095689998L;private Integer id;private String name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public Users(Integer id, String name) {super();this.id = id; = name;}public Users() {super();}}Users类如果不写默认构造方法,将报如下异常:Exception in thread "main" javax.xml.ws.WebServiceException: Unable to create JAXBContextatcom.sun.xml.internal.ws.model.AbstractSEIModelImpl.createJAXBContext( Unknown Source)atcom.sun.xml.internal.ws.model.AbstractSEIModelImpl.postProcess(Unknow n Source)atcom.sun.xml.internal.ws.model.RuntimeModeler.buildRuntimeModel(Unknow n Source)atcom.sun.xml.internal.ws.server.EndpointFactory.createSEIModel(Unknown Source)atcom.sun.xml.internal.ws.server.EndpointFactory.createEndpoint(Unknown Source)at com.sun.xml.internal.ws.api.server.WSEndpoint.create(Unknown Source)at com.sun.xml.internal.ws.api.server.WSEndpoint.create(Unknown Source)atcom.sun.xml.internal.ws.transport.http.server.EndpointImpl.createEndp oint(Unknown Source)atcom.sun.xml.internal.ws.transport.http.server.EndpointImpl.publish(Un known Source)atcom.sun.xml.internal.ws.spi.ProviderImpl.createAndPublishEndpoint(Unk nown Source)at javax.xml.ws.Endpoint.publish(Endpoint.java:220)atcom.ws.deploy.DeployHelloWorldService.<init>(DeployHelloWorldService. java:14)atcom.ws.deploy.DeployHelloWorldService.main(DeployHelloWorldService.ja va:23)Caused by: java.security.PrivilegedActionException:com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptionsers does not have a no-arg default constructor.this problem is related to the following location:at ersat public java.util.Listcom.ws.hello.jaxws.GetListUserResponse._returnat com.ws.hello.jaxws.GetListUserResponseat java.security.AccessController.doPrivileged(Native Method)... 13 moreCaused by:com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptionsers does not have a no-arg default constructor.this problem is related to the following location:at ersat public java.util.Listcom.ws.hello.jaxws.GetListUserResponse._returnat com.ws.hello.jaxws.GetListUserResponseatcom.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Buil der.check(Unknown Source)atcom.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(U nknown Source)atcom.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(Unknown Source)atcom.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuild er.build(Unknown Source)atcom.sun.xml.internal.bind.v2.ContextFactory.createContext(Unknown Source)at com.sun.xml.internal.bind.api.JAXBRIContext.newInstance(Unknown Source)atcom.sun.xml.internal.ws.developer.JAXBContextFactory$1.createJAXBCont ext(Unknown Source)atcom.sun.xml.internal.ws.model.AbstractSEIModelImpl$1.run(UnknownSource)atcom.sun.xml.internal.ws.model.AbstractSEIModelImpl$1.run(Unknown Source)... 14 more晕了,真是崩溃了,就写了这么几句话!错误代码比正常代码还要多!真是婶婶能忍叔叔不能忍,虽然英语很烂,连猜带蒙吧,看黑色的一句话,大概似乎是告诉我们Users类中没有默认的构造方法,果断加上,错误消失!此处应有掌声!鼓掌!!!四、DeployHelloWorldService.javapackage com.ws.deploy;import javax.xml.ws.Endpoint;import com.ws.hello.HelloWorldImpl;public class DeployHelloWorldService {protected DeployHelloWorldService() throws Exception {System.out.println("Starting Server");HelloWorldImpl implementor = new HelloWorldImpl();//工程名String address = "http://localhost:8080/mywbs";Endpoint.publish(address, implementor);}/*** @param args* @throws Exception*/public static void main(String[] args) throws Exception { new DeployHelloWorldService();System.out.println("Server ready...");Thread.sleep(5 * 60 * 1000);System.out.println("Server exiting");System.exit(0);}}点击运行,正常的话会有Starting ServerServer ready...在IE地址栏中输入:http://localhost:8080/mywbs?wsdl什么你不知道IE地址栏在哪里,对不起,大哥,地球是危险的,你回火星去吧!如果正常的话呢,大约在网页上会出现下面的信息,只截取一部分,注意画粗红线的地方,下面我们用的到。
Synapse入门
一.Synapse介绍Synapse 是一个简单的XML 和Web 服务管理与集成代理,可用于构成SOA 和企业服务总线(ESB)的基础。
Synapse是Web 服务项目中一项成熟的Apache 活动,并且是非常成功的Apache Axis2 项目的一个分支。
它提供了中介、管理、以及在各种不同的应用程序之间转换XML 消息的能力。
1.1 Synapse体系结构(构建Synapse 的原则)1.1.1 SOA模型Synapse 构建于XML 和Web 服务标准之上。
从最基础的角度而言,Synapse 建立在通过网络传送消息的思想之上。
消息可以采用任何格式,但是Synapse 将它们放到一个逻辑信息集中,并采用包含Header 和正文的信封的SOAP 方法对其进行建模。
通过使用Web 服务标准,如WS-ReliableMessaging 和WS-Security,可以使用Synapse 以确保应用程序之间安全的、可靠的连接。
Synapse 可以负责这些类型的服务质量功能,而无需修改现有的应用程序。
例如,通过在现有的XML/HTTP 服务前面直接放置一个Synapse 实例,您就可以添加对WS-Security 的支持。
这样可以添加对数字签名的支持,在B2B 环境中是很重要的。
1.1.2 通用的交互模型:HTTP和SOAP随着Web 的出现,HTTP 已经成为通用的信息传输方法。
由于它具有防火墙友好性、广泛的可用性、得到广泛的承认、以及HTTP 在全球范围内受到广泛支持,大多数企业已经使用HTTP 公开他们的服务。
可以以两种不同的方式来看待HTTP,将其视为实际的交互协议,或视为传输协议。
那些将HTTP 视为交互协议的人将遵循REST模型,并且倾向于严格遵守HTTP 动词(GET、PUT、POST、DELE)语义。
还可以将HTTP 作为防火墙友好的传输方式,在这种情况下,通常的模型是发送XML 文档,然后再从响应中获取XML 文档。
axis2配置手册
用Axis2实现Web Service,虽然可以将POJO类放在axis2\WEB-INF\pojo目录中直接发布成Web Service,这样做不需要进行任何配置,但这些POJO类不能在任何包中。
这似乎有些不方便,为此,Axis2也允许将带包的POJO类发布成Web Service。
先实现一个POJO类,代码如下:package service;public class MyService{public String get Greeting(String name){return "您好 " + name;}public void update(String data){System.out.println("<" + data + ">已经更新");}}这个类有两个方法,这两个方法都需要发布成Web Service方法。
这种方式和直接放在pojo目录中的POJO类不同。
要想将MyService类发布成Web Service,需要一个services.xml文件,这个文件需要放在META-INF目录中,该文件的内容如下:<service nam e="myService"><description>Web Service例子</description><parameter name="ServiceClass">service.MyService</parameter><messageReceivers><m essageReceiver m ep="/2004/08/wsdl/in-out"class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> <m essageReceiver m ep="/2004/08/wsdl/in-only"class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/> </messageReceivers></service>其中<service>元素用于发布Web Service,一个<service>元素只能发布一个WebService类,name属性表示WebService名,如下面的URL可以获得这个WebService 的WSDL内容:http://localhost:8080/axis2/services/m yService?wsdl其中name属性名就是上面URL中"?"和"/"之间的部分。
CXF教程
CXF旨在为服务创建必要的基础设施,它的整体架构主要由以下几个部分组成:1.Bus它是C X F架构的主干,为共享资源提供了一个可配置的场所,作用非常类似于S p r i n g的ApplicationContext。
这些共享资源包括WSDL管理器、绑定工厂等。
通过对Bus进行扩展,可以方便地容纳自己的资源,或替换现有的资源。
默认Bus实现是基于Spring的,通过依赖注入,将运行时组件串起来。
Bus的创建由BusFactory负责,默认是 SpringBusFactory,对应于默认Bus实现。
在构造过程中,SpringBusFactory会搜索META-INF/cxf(就包含在 CXF的Jar中)下的所有Bean配置文件,根据它们构建一个ApplicationContext。
开发者也可提供自己的配置文件来定制Bus。
2.消息传递和拦截器(Interceptor)CXF建立于一个通用的消息层之上,主要由消息、拦截器和拦截器链(InterceptorChain)组成。
CXF是以消息处理为中心的,熟悉 JSP/Servlet的开发者可以将拦截器视为CXF架构中的“Filter”,拦截器链也与“FilterChain”类似。
通过拦截器,开发者可以方便地在消息传递、处理的整个过程中对CXF进行扩展。
拦截器的方法主要有两个:handleMessage和handleFault,分别对应消息处理和错误处理。
在开发拦截器的时候需要注意两点:拦截器不是线程安全的,不建议在拦截器中定义实例变量并使用它。
这一点跟JSP/Servlet中对于Filter的处理是一样的;不要调用下一个拦截器的handleMessage或handleFault,这个工作由InterceptorChain来完成。
3.前端(Front End)它为CXF提供了创建服务的编程模型,当前主要的前端就是JAX-WS。
4.服务模型CXF中的服务通过服务模型来表示。
Axis2中文手册
中文原文英文原文概述这个说明文档涉及以下内容:⌝如何使用 axis2 创建 web service 和客户端程序⌝如何定制一个模块 (Module) 并在 web service 中使用它⌝ Samples discussion⌝ Advanced Topics第一部分:简介Axis2 是重新设计的一个架构,它没有基于 Axis1.* 的结构,这种新的架构 much more flexible, efficient and configurable 。
Axis2 的特性有:Speed:采用自己的对象模型,利用 StAX 解析Low memory foot print:Axis2 在设计过程中一直遵循 low memory cost 的理念AXIOM:采用自己的轻量级的对象模型,使得消息处理过程可扩展、性能高,对开发者来说更加简单。
Hot Deployment:Axis2 装备了在系统运行时部署服务和处理器的能力。
也就是说,新的服务新服务的添加不再需要重启服务器。
将服务的发布包放在服务部属文件夹中,部署模型将自动部署该服务。
Asynchronous Web Services:Axis2 现在可以通过 non-blocking clients and transports 支持异步的服务和异步的服务调用。
(?什么是异步的服务 ? )MEP Support:Axis2 具备良好的伸缩性来支持 MEPs ,因为它内置了对 WSDL2.0 中 MEPs 的支持。
Flexibility:Axis2 的架构使得程序员能自由的对 Axis 添加扩展,这些扩展包括对自定义 Header 的处理,系统管理,甚至是任何一件你可以想象的到的事情Stability:Axis2 定义了一套公共接口,这些接口相对于其他代码而言改动很小Component-oriented Deployment:你可以自定义一些在处理过程中常用的可重用的处理器,并可以将这些处理器发布出来供其它人使用Transport Framework:定义了一个干净、简单的抽象作品来集成任意的传输协议,引擎的核心部分的实现是与传输协议无关的Add-ons:一些 web service 相关的协议也合并了进来。
axis2创建webservice操作手册范本
搭建WebService操作手册2010-10-25修订记录1.引言 (4)1.1 目的 (4)1.2 为什么要使用WebService (4)1.3 什么是WebService (4)1.4 WebService WSDL SOAP关系 (5)1.5 Web Service服务器工作流程 (5)1.6 Web Service客户端工作流程 (6)2.系统所需环境 (6)3.构建WebService服务器 (6)3.1 使用AXIS2构建WebService服务器 (6)3.1.1 POJO方式 (6)3.1.2 使用框架构建webservice (11)3.1.3 使用独立安装模式 (20)4. 构建WebService客户端 (21)4.1.1 使用插件创建WebService客户端 (21)1.引言1.1 目的本操作手册具体介绍了WebService的工作原理并详细描述了使用axis2构建WebService的流程,主要面向刚刚接触WebService的开发人员。
1.2 为什么要使用WebServiceWebService是一个新的概念,它并不是微软首先提出的,但是微软的dotnet战略让它最广泛的发挥它的潜能。
也许它流行的根本原因并不是微软,也许是因为带宽与存储量的飞速发展,但是dotnet战略确实起到了很大的作用,令它能够在更加广泛的开发平台上施展。
dotnet战略领导着微软前进,微软为了dotnet计划也花费了近300亿美元。
为什么?因为微软要它的理念、方式不但在单机软件,甚至在Internet上也被最广泛的认同。
WebService 最早被应用在Sun等对网络先知先觉的平台上,并且在苦苦的期待发展。
而J2EE是最早的成功开发WebService的平台,它的理念就是在网上最广泛的传播、使用,成为一种真正的服务。
当微软的dotnet计划即将实施的时候,微软也开始发掘WebService的潜力。
TC3运动控制入门指南
运动控制介绍(手动配置界面)(一)扫描电机1.选择好目标控制控制器后开始扫描设备,右键Devices,选择Scan2. 弹出对话框点击确定3. 选择EtherCAT后点击确定4. 点击确认开始扫描模块5. 点击是自动识别电机类型,注意:如果是旋转变压器反馈的电机是无法自动被识别的,编码器反馈的电机可以自动被识别。
6. 点击是,自动在NC配置中添加轴7. 如果电机没有被自动识别,那就需要我们手动添加电机类型,点击下图中的Select Mode8. 选择好对应的电机后OK弹出窗口点OK弹出窗口点否,我们先不配置NC参数9. 此时在MOTION中已经自动添加了两个轴点一下每个轴应该是呈灰色的。
在twincat下找到Activate Configuration弹出对话框这是twincat的激活配置,和twincat2中的激活效果一样。
这里点击确定。
询问是否要将twincat重新切换到run模式。
点确定即可等系统重新被切换到run模式时,之前的灰色会变成黑色并且有些按钮变成可以改变的样子。
对一些参数做一下介绍首先是这是一个当前距离,显示了轴当前的位置第二个要介绍的是,这是twincat系统通过检测获得的当前速度。
最后介绍一下,这是一个错误代码,一旦驱动器报错便会显示在这个Error里。
工程师可以通过查询相关的代码知道是什么问题。
3.接下来到了让电机运行的一步,电机需要运行必须使能,beckhoff的电机也同样如此,首先在这个页面中找到这个点击set后弹出对话框三个需要打勾的从上到下分别是,控制,正转,反转。
右下角的all是全选,相当于选择所有三个。
回到之前画面注意到如此便算完成了使能的一步。
按下F4便能让它动起来了。
下方这些F1,F2,F3,F4分别表示,快退,慢退,慢进,快进。
F5,F6表示启动和暂停。
F8为reset,用来解除报错状态的。
同样的测试对轴2也同样适用。
(二)轴的运动接下来是轴的运动,轴的运动有很多种,有绝对运动,相对运动,来回运动,寸动等。
Axis2快速入门指南
Axis2快速入门指南Apache Axis2 中文文档(04) -- Axis2 快速入门指南/doc/715290551.html,/axis2/1_4_1/qu ickstartguide.h tmlAxis2快速入门指南本指南的目的是为了让您尽快掌握使用Axis2建立服务端和客户端的技术。
下文将以一个简单的股票询价(StockQuote)服务为例演示创建和部署服务的不同方法,并快速浏览一下几个Axis2附带的工具。
然后,再看看如何创建客户端来访问这些服务。
目录导言准备Axis2服务创建服务部署POJOs使用AXIOM构建服务使用ADB生成服务使用XMLBeans生成服务使用JiBX生成的服务生成客户端使用AXIOM创建一个客户端使用ADB生成客户端使用XMLBeans生成客户端使用JiBX生成客户端总结参考资源安装要点本文中的代码均包含在标准二进制分发包中,它们位于Axis2_HOME/samples内的quickstart、quickstartadb、quickstartaxiom、quickstartjibx和quickstartxmlbeans目录中。
(为便于接下来的学习,建议您现在就找到它们)。
代码中同时还提供了所有示例程序的Ant构建文件(build.xml),这将简化例程的编译过程。
导言让我们先从服务本身开始。
作为例子的服务应该足够简单以便让你能够看到在建立和部署服务的时候究竟发生了什么。
股票报价服务(Stock Quote Service)似乎是一个不错的例子。
让我们看看代码1的例子。
Code Listing 1: The StockQuoteService classpackage samples.quickstart.service.pojo;import java.util.HashMap;public class StockQuoteService {private HashMap map = new HashMap();public double getPrice(String symbol) {Double price = (Double) map.get(symbol);if(price != null){return price.doubleValue();}return 42.00;}public void update(String symbol, double price){map.put(symbol, new Double(price));}}这个简单的服务程序仅提供了两个调用接口。
AXIS2部署应用及两个常用插件使用
AXIS2部署应用及两个常用插件使用1 部署AXIS2应用1.1 普通部署本文档以axis2-1.3版本为例,TOMCA T为应用服务器讲解从开源网站下载AXIS2.1.4版本相关包,主要下载axis2-1.3-bin.zip和axis2-1.3-war.zip。
把axis2-1.3-war.zip解压到当前目录,把解压出来的axis2.war文件拷贝到TOMCAT的webapp下。
启动TOMCA T,启动完成后在TOMCAT的WEBAPP下会自动生成一个目录aix2,这就是AXIS2应用目录。
打开浏览器,输入http://ip:端口/axis2打开AXIS2的管理页面,如下图:点开validate链接,页面里没有大红色的字就表示当前AXIS2应用部署成功了。
Service链接里列着当前应用所有服务Administration链接是服务管理,需要登录才能进去操作。
默认登录口令是admin/axis2。
这个是在axis2\WEB-INF\conf\axis2.jsp里配置的,可以修改。
在管理页面,“upload service”项是用来上传服务的。
AXIS2的一个服务就是一个AAR包,将打好的AAR包发从这里上传就完成了服务发布。
AAR包怎么打,后面详细说。
需要说明一点,AXIS2里,重新上传AAR包就会替换原来的服务,但服务在管理页面里不能删除,要删除服务需要从物理目录里删除AAR包。
1.2 在已有的应用里部署上面服务发布方式非常方便,而且AXIS2的设计原则是组件化思想,一个服务就是一个独立的单元,跟别的东西不扯任何关系,包括接口用到的JAR包都会打到服务包里。
但这样也有个问题,就是对于大型的WEB应用里,发布一个牵扯文件比较多的接口时,打成AAR包的话一来包比较庞大,二来如果代码更新频繁,每修改一次代码就需要重新打包服务包。
再有就是如果工程持久层用IBA TIS或者HIBERNET封装的话,可能也会有问题。
axis2_WebService_开发手册
Axis2 WebServiceAxis的简单准备Axis的入门实例Axis复杂对象类型的WebServiceAxis的辅助工具发布、调用WebServiceAxis WebService会话Session的管理Axis用控制台Dos命令发布WebServiceAxis跨多个WebService管理SessionAxis用Spring的JavaBean发布WebServiceAxis异步调用WebServiceAxis 的Module模块Axis使用SoapMonitar监视WebService的请求和响应信息一、准备工作1、开发准备首先需要下载axis2的相关jar包,到axis的官方网站即可获得开发的依赖包。
下载地址:/axis2/java/core/download.cgi现在最高的版本是1.5.4的然后你需要下载官方提供的axis的eclipse插件工具,可以帮助我们打包(aar)及其生产客户端调用代码。
下载页面:/axis2/java/core/tools/index.htmlService Archive Wizard - Eclipse Plug-inCode Generator Wizard - Eclipse Plug-in2、安装eclipse插件如果你的eclipse插件安装成功后,会看到如下效果:3、分析axis2-bin文件目录结构下载下来的axis2的依赖库,其中有一个axis2-1.5.3-bin.zip的库文件,目录结构如下:bin文件夹是axis2的常用工具,其中有将wsdl文件转换成客户端调用的wsdl2java工具及将java转换成wsdl文件的工具conf是axis2的配置文件lib运行所要的依赖库repository是发布过的axis服务和文件sample是示例webapp是web文件和jsp页面等4、我们需要将下载下来的axis2-1.5.3-war.zip中的axis2.war这个文件放在我们的tomcat目录下,启动tomcat就会把war文件转成一个可以跑起来的axis2的项目。
java开发webservice的几种方式
java开发webservice的⼏种⽅式webservice的应⽤已经越来越⼴泛了,下⾯介绍⼏种在Java体系中开发webservice的⽅式,相当于做个记录。
1.Axis2⽅式Axis是apache下⼀个开源的webservice开发组件,出现的算是⽐较早了,也⽐较成熟。
这⾥主要介绍Axis+eclipse开发webservice,当然不⽤eclipse也可以开发和发布webservice,只是⽤eclipse会⽐较⽅便。
(1)下载eclipse的Java EE版本(2)下载axis2(3)下载eclipse的axis2插件Axis2_Codegen_WizardAxis2_Service_Archiver推荐使⽤1.3的版本(4)eclipse安装axis2插件1)在任意⽬录下新建⼀个Axis2⽂件夹,在该⽂件夹下新建eclipse⽬录,在eclipse⽬录中新建plugins⽬录和features⽬录,例如:D:\programSoftware\eclipse-SVN\Axis2\eclipse;2)把下载的axis2插件解压,并把解压的⽂件放到新建的eclipse的plugins⽬录下;3)在%eclipse_home%的⽬录下新建links⽬录,并在links⽬录下新建axis2.link⽂件,内容为:path=D:\programSoftware\eclipse-SVN\Axis2; 4)重启eclipse,点击·file-new-other,如果看到Axis2 Wizards,则表明插件安装成功。
(5)安装axis2(6)使⽤eclipse新建web⼯程,创建⼀个普通java类,⾄少包含⼀个⽅法。
(7)发布webservice1)点击eclipse的File-New-other,打开Axis2 Wizards,选择Axis2 Service Archiver,然后Next;2)选择Class File Location,也就是类⽂件存放路径,注意:只选到classes⽬录,不要包括包⽂件夹,然后Next;3)选择Skip WSDL,然后Next4)⼀路Next到Select the Service XML file to be included in the Service archive,勾选Generate theservice xml automatically;5)Service Name-填写你的service名称,Class Name-填写类名称,要包括包名,然后点击load,然后点击Finish,这时webservice就发布成功了;6)然后到%TOMCAT_HOME%/webapps/axis2/WEB-INF/services 看看是否多了⼀个.aar的⽂件;注意:以上的⽅式是发布到axis2.war包中,你也可以把⽣成.aar⽂件copy到你的实际应⽤中,同时,你也可以使⽤eclipse的create webservice 功能发布你的webservice,选择axis2⽣成你的webservice,这样webservice就会部署到你的应⽤中了。
Axis2对于不同开发环境应用详解
Apache Axis2 插件安装以及实现WebService接口一、Eclipse安装Axis2插件及应用1、环境准备:Eclipse – j2ee需要的Axis2压缩包文件解压后的文件名为axis2-1.4.1目录解压后的文件结构如图:2、配置EclipseEclipse自带了开发WebService的工具第一步:打开Eclipse-->点击菜单windows-->Preferences-->WebServices-->Axis2Preferences-->设置Axis2 runtime location为Axis2下载后并解压的核心包的位置:选择后Eclipse会自动检测包是否正确。
如果successfully提示表示设置正确第二步:在Eclipse创建一个WebProject时,点击Configuration的Modify会出现下图界面:勾选Axis2 Web Services按OK。
回到新建WebProject界面,完成项目创建。
创建成功后会发现在WEB-INF文件夹下会多出一个axis2-web的文件夹,这个是Axis2的项目文件夹。
现在启动服务器会抛出异常,这是因为Eclipse在自动加载生成该项目时有几个问题需要手动修复,下面分别列出:问题一:会抛出异常:ng.ClassNotFoundException:org.apache.axis2.transport.http.AxisAdminServlet是因为生动生成的web.xml文件中所指定的AxisAdminServlet包路径有错。
自动生成的源码如下:注意红色字体部分,我们可以去看一下所下载的Axis2的源包。
AxisAdminServlet类所在的包路径并不在下列这个路径中org.apache.axis2.transport.http,该类是属于包org.apache.axis2.webapp下。
总结Axis2分析报告.ppt
最新.课件
9
需求分析 – 扩展性支持
• 不管是服务器端还是客户端,整个SOAP消息处理流程(也 就是消息的接收与处理,和构建与发送)都必须支持可扩 展性,所有流程可以改变,并且支持用户自定义的处理模 块。
最新.课件
10
需求分析 – 性能要求
• 框架需提供专有的XML解析器来最大化得优化SOAP中 XML的处理性能。
最新.课件
6
需求分析 – 网络服务支持
• 支持广泛使用的基于HTTP的SOAP协议,包括SOAP 1.1 和SOAP 1.2。
• 同时支持REST样式的网络服务模型。
• 支持Spring框架
最新.课件
7
需求分析 – 传输协议支持
• 在SOAP发送方和接收方中支持多种协议比如SMTP、FTP 和消息导向性中间件。
getName, setName…
Phase本身名称操作
最新.课件
32
Axis2第二层管道过滤器 – Phase
• Axis引擎在运行时是以Phase为执行单位的,Axis2引擎只 会调用Phase的Invoke函数,而Phase类型的Invoke函数会 调用背后包含的Handler的所有Invoke函数。如下图:
最新.课件
1
AXIS2分析报告
最新.课件
2
第一部分:需求分析
最新.课件
3
背景
• “网络服务”(Web Services),是指一些在网络上运行 的、面向服务的、基于分布式程序的软件模块,网络服务 采用HTTP和XML等互联网通用标准,使人们可以在不同的 地方通过不同的终端设备访问WEB上的数据,如网上订票, 查看订座情况。网络服务在电子商务、电子政务、公司业 务流程电子化等应用领域有广泛的应用,被业内人士奉为 互联网的下一个重点。
Axis教程
第二步:进行打包
首先编写build.xml文件,目的只是将 project/bin目录下的内容进行JAR打包,文件 名为SDES_Enhance.aar,*.aar为AXIS2的 应用的后缀名。
build.xml
<projectname="SDES_Enhance"default="deploy"basedir="."> <description> Deploy SDES_Enhance Services </description> <propertyname="dist"value="${basedir}/dist"/> <propertyname="service"value="C:/Tomcat5.5/webapps/axis2/WEB-INF/services"/> <targetname="init"> <echo>Initializing the environment!</echo> <deletedir="${dist}"/> <deletedir="${basedir}/data"/> <mkdirdir="${dist}"/> <mkdirdir="${basedir}/data"/> </target> <targetname="jar"depends="init"> <echo>Compressing files to .aar file!</echo> <jarbasedir="${basedir}/bin"destfile="${dist}/SDES_Enhance.aar"/> </target> <targetname="deploy"depends="jar"> <echo>Deploying service!</echo> <copytodir="${service}"> <filesetdir="${dist}"> <includename="SDES_Enhance.aar"/> </fileset> </copy> </target> </project>
axis2整体介绍
Web Service-AXIS2Web Service是现在最适合实现SOA的技术SOAPSOAP 的结构与同时代的其它远程结构—DCOM、CORBA 和RMISOAP请求分文本方式和远程调用(RPC)两种方式SOAP即简单对象访问协议(Simple Object Access Protocol)说到Web Services你就很难把它与SOAP分开,SOAP是用于交换XML编码信息的轻量级协议。
它有三个主要方面:--------------------------------------------------------------------------------XML-envelope为描述信息内容和如何处理内容定义了框架;将程序对象编码成为XML对象的规则;执行远程过程调用(RPC)的约定。
--------------------------------------------------------------------------------SOAP 可以运行在任何其它传输协议上。
例如,SMTP,在传输层之间的头是不同的,但XML有效负载保持相同。
表面看来,基于XML 的模式本应比基于二进制的慢,但它并不像表面那么简单。
首先,当SOAP被用于通过因特网发送消息时,在每个端点给消息编码/解码的时间与在端点间传输字节的时间相比较是微不足道的,所以这种情况下使用XML 没太大问题。
WSDL(Web Service Definition Language)WSDL 是一种XML Application,他将Web服务描述定义为一组服务访问点,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问(类似远程过程调用)。
WSDL首先对访问的操作和访问时使用的请求/响应消息进行抽象描述,然后将其绑定到具体的传输协议和消息格式上以最终定义具体部署的服务访问点。
相关的具体部署的服务访问点通过组合就成为抽象的Web服务。
Axis2的介绍
Axis2的介绍
• Axis2是支 持Web 服 务调用的核 心引擎。
Axis2的大概工作流程
• 客户端支持。向用户提供一组一致的API 支持, 使得用户能够像编写对本地函数调用一样编写对 Web 服务的请求代码。从实现上看,主要包括如 何将内存形式的对象序列化为XML 格式的请求数 据。 • 服务端支持。接受用户的服务调用请求,将XML 形式的请求数据反序列化为对象形式,调用对应 的服务,并将调用结果(内存对象形式)序列化 为XML 形式调用结果,向客户端返回。
axis2 安装开发教程
1.软件准备:一下软件版本为本人使用版本Myeclipse 9.0Tomcat 6.0Jdk 6以下两项为myeclipse插件axis2-eclipse-codegen-plugin-1.6.0.zipaxis2-eclipse-service-plugin-1.6.0.zip以下zip包为tomcat插件axis2-1.6.0-war.zipaxis2中的jar,在客户端开发中需要用到这些jar包axis2-1.6.0-bin.zip2. myeclipse插件安装将axis2-eclipse-codegen-plugin-1.6.0.zip和axis2-eclipse-service-plugin-1.6.0.zip解压D:\Users\Administrator\AppData\Local\MyEclipse为我的myeclipse安装的根目录将解压后的plugins中的jar包复制到myeclipse的安装目录下的common中的plugins中(只需jar包即可)如:D:\Users\Administrator\AppData\Local\MyEclipse\Common\plugins进入到myeclipse安装目录中的org.eclipse.equinox.simpleconfigurator中,如下:D:\Users\Administrator\AppData\Local\MyEclipse\MyEclipse9\configuration\org.eclipse.equinox.simpleconfigurator用记事本打开org.eclipse.equinox.simpleconfigurator 中的文件项文件中添加下面内容org.apache.axis2.eclipse.codegen.plugin,1.6.0,file:/d:/Users/Administrator/AppData/Local/MyEcli pse/Common/plugins/org.apache.axis2.eclipse.codegen.plugin_1.6.0.jar,4,falseorg.apache.axis2.eclipse.service.plugin,1.6.0,file:/d:/Users/Administrator/AppData/Local/MyEclip se/Common/plugins/org.apache.axis2.eclipse.service.plugin_1.6.0.jar,4,false启动myeclipse后点击新建 other后如果能看到Axis2 Wizards文件夹下有两个内容表示安装成功。
AXIS入门指南
目录1 文档说明 (1)1.1 背景 (1)1.2 范围 (2)1.3 词汇和缩略语 (2)1.4 参考 (2)1.5 概述 (2)2 简单介绍 (2)2.1 WebService介绍 (2)2.2 AXIS介绍 (2)3 建立开发环境 (2)3.1 基本环境 (2)3.2 配置WEB开发包, 建立基本的测试环境 (2)4 用JA V A应用程序和WebService集成 (5)4.1 基础WEB Service应用程序结构 (5)4.2 得到WSDL描述 (5)4.3 生成stub (6)4.4 开发应用程序 (7)4.5 小结 (8)5 实战:开发重庆联通公司的web service接口 (9)5.1 背景 (9)5.2 准备 (9)5.3 生成stub (9)5.4 分析接口实现的功能和参数规格 (10)5.5 编写一个测试程序对其进行测试 (11)6 总结 (11)1文档说明1.1背景2007年11月的时候,小组收到开发WAP PUSH的接口,鉴于现在很多公司都提供了WebService作为系统之间的接口,并且行业内都把这个接口视为下代应用程序的基础设施,所以把该过程记录下来作为AXIS的入门资料。
1.2范围该文档适合刚开始使用webservice的开发人员使用。
阅读本文的前提是你已经知道WebService, 并且具备了一些分布式应用程序的基本概念。
1.3词汇和缩略语1.4参考百度百科: /view/67105.htm1.5概述2简单介绍2.1WebService介绍Web Service平台是一套标准W3C,它定义了应用程序如何在Web上实现互操作性。
你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。
2.2AXIS介绍Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
一、AXIS2创建WS服务准备工作 (1)
二、创建WS服务 (2)
三、创建客户端代码 (4)
Axis2实现WebService总结
一、AXIS2创建WS服务准备工作
(一)到apach官网下载相应该的包:
1、第一个包为axis2的相关工具,今天介绍的方法基本上只有
相应的jar包就行了。
2、第二个包里的有些东东我们要直接copy过来用。
3、第三个是客户端代码生成插件。
4、第四个是服务器端面打包插件,本文不单独打包发布,用不
上。
(二)安装插件到eclipse:
把上面最后两个包解压后,放到eclipse安装目录下dropins文件夹里。
安装后出出现下图表示安装成功:
二、创建WS服务
1、创建工程,组织结构如下:
其中,lib里引入axis2相应的包,把包里lib下的jar包copy过来即可。
conf下的axis2.xml和modules下的文件,把包下对应文件夹内
的文件copy过来。
服务类Axis2Test类代码如下:
services.xml文件配置如下:
<service name="AxisService">
<description>AxisService</description>
<parameter name="ServiceClass">axis2Sv.Axis2Test</parameter>
<messageReceivers>
<messageReceiver mep="/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
<messageReceiver mep="/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
</messageReceivers>
</service>
到目前为至,WS服务就配发了。
现下来测试一下。
在浏览器地址栏输以下地址:http://localhost:8080/WebServiceStudy/services/AxisService?wsdl,如果再显示如下(部分截图):
出现以上显示说明服务创建成功。
三、创建客户端代码
1、创建工程AxisClientStudy。
2、用插件生成客户端代码:
下面开始测试,看是否能调用成功:
import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;
import axis2sv.AxisServiceStub;
import axis2sv.GetNameResponse;
import axis2sv.ShowInput;
import axis2sv.ShowInputResponse;
public class Main {
p ublic static void main(String[] args) throws AxisFault {
AxisServiceStub stub=new AxisServiceStub();
GetNameResponse res1=null;
ShowInputResponse res2 = null;
try {
res1 = stub.getName();
ShowInput si = new ShowInput();
si.setStr("Liu Mingzhi");
res2 = stub.showInput(si);
} catch (RemoteException e) {
e.printStackTrace();
}
System.out.println(res1.get_return());
System.out.println(res2.get_return()); }
}。