1、org.apache.axis.transport.http.AxisServlet/servletservlet-mappingurl-pattern/servlet/AxisServlet/servlet-mapping*.jws/services/*第一个是制定AxisServlet的类是必须的,余下的是配置servlet mapping的,可根据需要进行修改,比如不需要对 *.jws做mapping的时候就可以去掉相应的部分。完成了上边的必须配置我们就有两种方式来发布了:1、动态发布,直接把Calculator 的java文件复制到webroot下,把Calculator.java更名
2、为Calculator.jws,然后通过http:/localhost:8080/Calculator.jws访问就可以 ,通过 http:8080/Calculator.jws?wsdl 就可以看到相应的wsdl。这种方式调试起来比较麻烦,而且我再测试的时候也不能带package的信息,而且一些高级的配置无法实施,不建议采用。2、静态发布,就是通过配置文件发布,这时候我们类的编译和普通的web方式没有不同,只是在web-inf下多了一个配置文件,默认的名称为server-config.wsdddeployment name=defaultClientConfig xmlns:java=htt
3、p:/xml.apache.org/axis/wsdd/providers/javahandler=/xml.apache.org/axis/wsdd/providers/handler xmlns=/xml.apache.org/axis/wsdd/globalConfiguration name=requestFlow name=RequestFlow1 type=handler name=Handler1java:org.apache.axis.handlers.JWSHandlerparameter name=scope value=session/handlerHandler2req
4、uestextension.jwr/requestFlow/globalConfigurationURLMapperorg.apache.axis.handlers.http.URLMapperLocalResponderorg.apache.axis.transport.local.LocalResponderAuthenticateorg.apache.axis.handlers.SimpleAuthenticationHandlertransport name=httporg.apache.axis.handlers.http.HTTPAuthHandler/transportlocal
5、responseFlow name=ResponseFlow1/responseFlowservice name=AdminService provider=MSGallowedMethodsenableRemoteAdminfalseclassNameorg.apache.axis.utils.Adminnamespace/xml.apache.org/axis/wsdd/serviceVersionRPCgetVersionorg.apache.axis.VersionCalculator style=rpc use=encodedRequestsamples.userguide.exam
6、ple2.Calculator*/example2.userguide.samples其中要发布的每个service都需要加上一个service的节点描述,其他多余的servie节点可以删除的,这样重启tomcat后,我们就可以以http:8080/services/Calculator来访问这个service了,同样以http:8080/services/Calculator?wsdl 访问到它的wsdl描述文件。二、客户端开发在开发工具中引进lib下的jar包;然后编写客户端程序import org.apache.axis.client.Call;import org.apache.axi
7、s.client.Service;import org.apache.axis.encoding.XMLType;import org.apache.axis.utils.Options;import javax.xml.rpc.ParameterMode;public class CalcClient public static void main(String args) throws Exception try String endpoint = https:8440/services/Calculator; Integer i1 = new Integer(1); Integer i2
8、 = new Integer(2); Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new .URL(endpoint); call.setOperationName(add); call.addParameter(i1, XMLType.XSD_INT, ParameterMode.IN);i2 call.setReturnType(XMLType.XSD_INT); Integer ret = (Integer) call.inv
9、oke(new Object i1, i2); System.out.println(Got result : + ret); catch(Exception e) e.printStackTrace();其中 setOperationName就是指定执行的方法,addParameter就是指定参数运行一下吧用axis发布webservices(二)1, 什么是 Web 服务?Web 是使应用程序可以以与平台和编程语言无关的方式进行相互通信的一项技术。Web 服务是一个软件接口,它描述了一组可以在网络上通过标准化的 XML 消息传递访问的操作。它使用基于 XML 语言的协议来描述要执行的操作或
10、者要与另一个 Web 服务交换的数据。一组以这种方式交互的 Web 服务在面向服务的体系结构(Service-Oriented Architecture,SOA)中定义了特殊的 Web 服务应用程序。2, 什么是SOAP?SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的轻量级协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一种语言相互通信。SOAP包括四个部分:SOAP封装(envelop),封装定义了
11、一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例;SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;SOAP绑定(binding),使用底层协议交换信息。应用中比较关注的是envelop,由一个或多个Header和一个Body组成。3, 什么是Axis?Axis本质上就是一个SOAP引擎(Apache Axis is an implementation of the SOAP),提供创建服务器端、客户端和网关SOAP操作的基本框架
12、。但Axis并不完全是一个SOAP引擎,它还包括:是一个独立的SOAP服务器。是一个嵌入Servlet引擎(例如Tomcat)的服务器。支持WSDL。提供转化WSDL为Java类的工具。提供例子程序。提供TCP/IP数据包监视工具。4, Axis相比Soap v2的优点:Axis是第三代Apache SOAP的实现,从2000年起,SOAP v2开发小组开始讨论如何让Axis更加灵活、可配置,以及能够处理SOAP和来自W3C的各种XML标准。通过不断地讨论和代码编写,Axis目前相比SOAP V2取得了如下成果:速度提高。 Axis通过基于事件的SAX对XML文档进行处理,从而在速度和效率上比
13、Apache SOAP有所提高。灵活性提高。稳定性提高。提供面向组件的部署。提供一个简洁的传输抽象框架。其核心引擎完全于传输方式独立。从而使基于何种协议传输的选择更加灵活。包括WSDL和客户端代码生成等。5, 什么是WSDL?WSDL(Web Service Description Language)Web服务器描述语言是用XML文档来描述Web服务的标准,是Web服务的接口定义语言,由Ariba、Intel、IBM、MS等共同提出,通过WSDL,可描述Web服务的三个基本属性:服务做些什么服务所提供的操作(方法)如何访问服务和服务交互的数据格式以及必要协议服务位于何处协议相关的地址,如URL
14、WSDL文档以端口集合的形式来描述Web服务,WSDL 服务描述包含对一组操作和消息的一个抽象定义,绑定到这些操作和消息的一个具体协议,和这个绑定的一个网络端点规范。6, 什么是WSDD?WSDD就是WEB服务分布描述(Web Service Deployment Descriptor), 它定义了WEB服务的接口,如服务名、提供的方法、方法的参数等信息。7, 什么是UDDI?UDDI就是统一描述、发现和集成(Universal Description, Discovery, and Integration)。UDDI用于集中存放和查找WSDL描述文件,起着目录服务器的作用。Web 服务中的角
15、色、操作和构件:服务提供者。从企业的角度看,这是服务的所有者。从体系结构的角度看,这是托管访问服务的平台。服务请求者。从企业的角度看,这是要求满足特定功能的企业。从体系结构的角度看,这是寻找并调用服务,或启动与服务的交互的应用程序。服务请求者角色可以由浏览器来担当,由人或无用户界面的程序(例如,另外一个 Web 服务)来控制它。服务注册中心。这是可搜索的服务描述注册中心,服务提供者在此发布他们的服务描述。在静态绑定开发或动态绑定执行期间,服务请求者查找服务并获得服务的绑定信息(在服务描述中)。对于静态绑定的服务请求者,服务注册中心是体系结构中的可选角色,因为服务提供者可以把描述直接发送给服务请
16、求者。同样,服务请求者可以从服务注册中心以外的其它来源得到服务描述,例如本地文件、FTP 站点、Web 站点、广告和服务发现(Advertisement and Discovery of Services,ADS)或发现 Web 服务(Discovery of Web Services,DISCO)。8, AXIS的几种服务类型:AXIS有四种service styles,分别是:RPC, Document, Wrapped, 和Message。最常用的就是RPC和Message。RPC:在AXIS中是一个默认选项。当你部署的时候使用下列两种方式: 或则 ,它遵循SOAP RPC和编码规则。每
17、个RPC都包括一个表示名称的外部接点和一些表示参数的内部接点。AXIS会根据规则将一个XML(WSDL文件)文件转化成一个JAVA对象,并对对想赋上在文件中描述的值。也可以根据规则将一个JAVA对象转化成XML文件。Document 适合于老的XML schema。Wrapped 和DOCUMENT一样,适合于老的XML schema。在大多书情况下,你不许要担心是DOCUMENT服务还是WRAPPED服务。Message 以这种方式部署的话,会使AXIS失去意义,它使你的代码真正的用XML形式,而不需要转化成JAVA对象。以这种方式部署的有以下四种服务方法:public Element me
18、thod(Element bodies);public SOAPBodyElement method (SOAPBodyElement bodies);public Document method(Document body);public void method(SOAPEnvelope req, SOAPEnvelope resp);几种服务类型的主要区别:基于RPC(远程过程调用)方式,这也是Web服务最常用的方式。面向消息/文档的的类型跟RPC不同的是它提供了一个更底层的抽象,要求更多的编程工作。客户端可以传入任何的XML文档,得到的响应不一定是SOAPEnvelope,可以返回任何它
19、所需要的东西,甚至不返回。虽然这对开发者来说非常的灵活,但是这种通讯类型在实际的应用中并不常见。面向消息/文档的Web服务主要适合于下面几种情况,比如批量处理,基于表单的数据导入,有需要返回非XML数据时,Web服务器实现中要求直接访问传输层等等9、java类与wsdl相互生成工具:Axis提供了”WSDL2Java”工具,可以利用wsdl描述来产生服务的Java代理和框架(proxy and skeletons)。Axis提供了”Java2WSDL”工具,可以由java类生成wsdl文件。用axis发布webservices(三)一、对象参数的传递首先是我们要传输的变量对象Order,代码如
20、下:package samples.userguide.example5;public class Order private String customerName; private String shippingAddress; public String getCustomerName() return customerName; public void setCustomerName(String name) customerName = name;要发布的services的代码如下:public class BeanService public Order getNewOrder(Order order) order.setCustomerName(liuyujun return order;然后我们只要在配置文件server-config.wsdd里加入下面这段就可以发布了 languageSpecificTyp
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1