《Java网络编程技术-14.ppt》由会员分享,可在线阅读,更多相关《Java网络编程技术-14.ppt(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第14章WebService应用基于SOAP协议的订单查询214.1Soap简介Soap(SimpleObjectAccessProtocol),是一种基于XML的协议。利用Soap协议,有助于实现跨平台、与特定接口无关的分布式系统。Soap是实现Webservice的一种技术,Soap是一种简单的、灵活的第二代XML协议规范,是一种基于XML普遍使用的分布式计算基础结构规范,是一种利用XML解决数据交换问题、适合构建分布式结构系统的技术。Soap建立在XML之上,利用XML实现Web服务。3Soap机制 n通信单元封装机制:Soap中,所有信息都会封装在一个可确认的Soap消息包,包中可以有
2、任意数目的消息头和一个消息体,消息体中可以存放任何格式的XML文档,消息头用来存放除消息体之外的信息。n错误处理机制:Soap可以诊断错误源和错误原因,并且允许将错误信息在交互这之间共享。n扩展机制:借助于XML模式和名字空间,Soap的演进也将无障碍、无约束。目前,Soap典型的扩展是通过Soap的消息头实现,利用这个特性,可以再Soap上构建一个更为复杂的系统。4 n数据表示机制:Soap提供了以XML格式表示基本数据类型这样的抽象的数据结构的规则,也提供了允许数据对象以某种形式序列化后进行交换的规则。n远程过程调用(RPC)和Soap消息响应机制。RPC是最常用的分布式计算远程调用,So
3、ap支持RPC的远程调用方式,并以Soap消息作为RPC调用的响应,在编程方式上提供了灵活性。n以文档为中心的机制:以文档为中心的XML更加符合商务交互中的数据模型,Soap提供了以文档为中心的方法,有利于商务间的数据交换,弥补了RPC在某些个面的不足。n基于HTTP协议的机制:HTTP是应用最为广泛的协议之一。Soap提供了对HTTP非常好的支持。但并不是说Soap只能应用于HTTP之上,Soap支持任何开放的通信协议。在HTTP协议上的应用非常广泛。514.2WebService:WebService是一种接口,它对外提供一组操作,利用网络,通过使用标准的XML传递技术来访问这个接口。We
4、bService并不是必须存在于WWW之上,同样可以架设在任何开放的互联网协议(如HTTP、SMTP、FTP等)和专网(EDI)上。WebService的实现与调用该服务的客户端无关。调用WebService的客户端完全不需要知道WebService的实现细节和平台特性,只要知道WebService对外声明的接口。614.3XML XML(eXtensiibleMarkupLanguage)是一种具有数据描述功能,高度结构性及可验证行的语言。XMLstandsforEXtensibleMarkupLanguageXMLisamarkup languagemuchlikeHTMLXMLwasde
5、signedtodescribe dataXMLtagsarenotpredefined.Youmustdefine your own tagsXMLusesaDocument Type Definition(DTD)oranXML SchematodescribethedataXMLwithaDTDorXMLSchemaisdesignedtobeself-descriptiveXMLisaW3CRecommendation714.4搭建SOAP开发环境 ApacheAxis:ApacheAxis是基于Java的最好的Web引擎之一。大多数情况下,AxisAPI以RPC方式发出请求,部署在A
6、xis应用的WebService也通过AxisWeb应用,以RPC方式回应请求。不管是客户端还是服务器端都是通过Axis进行通信的。Web Service请求者Axis APIAxis Web应用Web ServiceRPC 请求RPC 响应8 Axis体系结构 9 (1)下载安装包:1)Axis安装包2)XML分析器软件包3)JavaMailAPI4)JavaBeansActivationFramework软件包Tomcat中安装Axis10 (2)在Tomcat中部署Asxis解压下载的Axis软件包,把webapps文件夹下的axis文件夹复制到Tomcat的webapps文件夹下,完成
7、Axis部署。(3)设置系统classpath环境变量:axis文件夹下有8个jar包,全部添加到系统classpath环境变量中。11 (4)在axis中药添加的jar包:将Xerces的软件包xercesImpl.jar、xercesSamples.jar、xmlapis.jar和xmlAPIs.jar拷贝到axis/WEBINF/lib文件夹下。通过这些包,Axis可以解析XML。若要使用JWS,还要添加tools.jar。JWS是Axis中的JavaWebService工具,可以自动寻找和编译axis下webapps目录中的Java文件,并部署它。1213 (5)在JDK中加入的jar
8、包:将JavaMaiAPI中的mail.jar和JavaBeansActivationFramework软件包中的activation.jar复制到JAVA_HOME/jre/ext文件夹中。Tomcat 在启动时会加载这两个jar包。Mail.jara实现JavaMailAPI,在处理带附件的Soap消息时发挥作用,activation.jar包实现激活JavaBeans的功 能,在处理数据对象时发挥作用。测试:如在浏览器中键入地址:http:/localhoast:8080/axis/出现下面的页面即告Axis配置成功。14 15 14.5AxiswebService程序例:HelloWo
9、rldWebServicesayHelloWorld(Stringname)twoAdd(intx,inty)Client16 编写WebService:HelloWolrd.JavapublicclassHelloWorldpublicStringsayHelloWorld(Stringname)returnname+”Hello,world!”;punlicinttwoAdd(intx,inty)return(x+y);17部署Web Service:HelloWolrd.Java更名为HelloWorld.jws,并复制到Tomcat./webapps/axis文件夹下。在浏览器中键入地
10、址:http:/localhost:8080/axis/HelloWorld.jws1819 点击ClicktoseetheWSDL(WebServicesDescriptionLanguage)20 WSDL文件21容器自动编译:在jwsClasses路径下。22 (2)编写客户端代码:启动myEclipse,建立一个Java项目,引入Java包:axis.jar、common-discovery-0.2.jar、common-logging-1.-.4.jar、jaxrpc.jar.建立一个类TestClient.java23importorg.apache.axis.client.Cal
11、l;importorg.apache.axis.client.Service;publicclassTestClientpublicvoiddoTest(Stringname)throwsException/服务所在位置Stringurl=http:/localhost:8080/axis/HelloWorld.jws;Serviceservice=newService();/创建一个Service实例 Callcall=(Call)service.createCall();/创建Call实例/为Call设置服务的位置call.setTargetEndpointAddress(.URL(url
12、);/设置提供服务的方法call.setOperationName(sayHelloWorld);/调用服务并获得结果,这里返回StringStringres=(String)call.invoke(newObjectname);System.out.println(res);24publicvoiddoAdd(intx,inty)throwsExceptionStringurl=http:/localhost:8080/axis/HelloWorld.jws;Serviceservice=newService();Callcall=(Call)service.createCall();cal
13、l.setTargetEndpointAddress(.URL(url);call.setOperationName(twoAdd);intres=(Integer)call.invoke(newIntegerx,y);System.out.println(res);25 publicstaticvoidmain(Stringargs)throwsExceptionTestClienttest=newTestClient();test.doTest(邹立杰t);test.doAdd(100,200);26 基于基于SOAP协议协议WEB Service应用的订单查询应用的订单查询n(1)系统架构Index.jspServletDatabaseSOAP WebServiceDisplay.jsp(2)业务流程:1.客户端Index.jsp发出请求和订单号参数;2.Servlet收到请求和参数后,向SOAPWebservice发出服务请求,同时将参数传给SOAP文本service;3.SOAOWebservice收到Servlet请求后查询数据库;4.SOAOWebservice将结果传给Servlet;5.Servlet将结果以Display.jsp呈现给客户。
限制150内