WebService开发:JavaWebServiceAuthor:Jin.LiuCreationDate:September9,2009LastUpdated:October25,2009DocumentRef:Version:1.0WebService开发:JavaWebServiceFileRef:WebService开发:JavaWebService.doc(v.1)CompanyConfidential-ForinternaluseonlyDocRef:September10,2009文档控制ii文档控制更改记录3日期作者版本更改参考9-Sep-09Jin.Liu1.0无前版本WebService开发:JavaWebServiceFileRef:WebService开发:JavaWebService.doc(v.1)CompanyConfidential-ForinternaluseonlyDocRef:September10,2009文档控制iii内容目录文档控制...................................................................................................................................ii1.WebService的认识...................................................................................................22.JavaWebService开发...............................................................................................32.1.从WSDL开始创建JavaWebService................................................................32.2.从Java类开始创建JavaWebService..............................................................133.JavaWebService测试与部署.................................................................................223.1.JavaWebService的测试..................................................................................223.2.JavaWebService的部署..................................................................................274.JDeveloper11g开发JavaWebService过程中碰到的问题及解决方法..............315.未结与已结问题.......................................................................................................33未结问题..........................................................................................................................33已结问题..........................................................................................................................33WebService开发:JavaWebServiceFileRef:WebService开发:JavaWebService.doc(v.1)CompanyConfidential-ForinternaluseonlyDocRef:September10,2009WebService的认识2of351.WebService的认识WebService是基于XML的接口技术;WebService是不可执行的,它没有执行环境,需要依赖其他技术来创建执行环境。你只有根据WebService的特点、功能和能力来重新考虑你的IT方案,才会获得应有的优点。成功的应用WebService技术,需要一个对待技术的思想转变,而不是学了新原理却用旧方法来构建和部署系统。WebService总是需要进行技术融合的;因此,不仅要知道WebService取代了什么,还需要了解WebService增添了什么。下面是我对WebService的运行过程的一个理解:首先把WebService定位为一种服务,不是具体的技术,属于概念性的东西。或许把它理解成一个具有某种功能的系统比较贴切。系统也只是一个概念性的东西,比如:登录验证系统,从名称上可以知道它的功能,但是它的实现是什么(是基于Java还是.Net或者更多的其他的编程语言),如何才能用这个系统(是只用输入用户名就可以登录系统还是即需要输入用户名还需要密码才能登录)。WebService其实也是一样,也会依赖于一个具体的实现和一个告诉用户如何去使用的使用说明,而这个具体的实现就是服务的服务内容和如何用具体技术来做成这样一个服务,使用说明就是服务的描述,由这个描述告诉大家如何才能使用服务。很显然,光有描述,没有服务的具体实现,这个服务肯定是不能使用的,就跟系统只有使用说明,但是没有拿计算机技术去做好这个系统之前,这个使用说明是不能表明系统是可以使用的。WebService中的这个使用说明就是WebService的WSDL,具体实现就是如何用编程语言来做成能满足服务的程序。WebService的执行跟我们常写的Web应用程序的执行一样,首先客户端提交HTTP请求,服务器接收请求,服务器处理请求,服务器将处理结果返回给客户端;传输的数据都是名称/值对,数据的传输都是基于HTTP协议。而WebService也会有这么一个调用的过程,传输的数据都是SOAP消息,数据的传输都是基于SOAP协议。SOAP的出现是为了简化网页服务器(WebServer)在从XML数据库中提取数据时,无需花时间去格式化页面,并能够让不同应用程序之间透过HTTP通讯协议,以XML格式互相交换彼此的数据,使其与编程语言、平台和硬件无关。SOAP协议使用因特网应用层协议作为其传输协议。SMTP以及HTTP协议都可以用来传输SOAP消息,但是由于HTTP在如今的因特网结构中工作得很好,特别是在网络防火墙下仍然工作流畅,所以其更为广泛地被采纳。SOAP亦可以在HTTPS上进行传输。WebService开发:JavaWebServiceFileRef:WebService开发:JavaWebService.doc(v.1)CompanyConfidential-ForinternaluseonlyDocRef:September10,2009JavaWebService开发3of352.JavaWebService开发开发环境:JDeveloperStudio11.1.1.1.0应用服务器:WebLogic10.3.12.1.从WSDL开始创建JavaWebServiceWSDL全称:WebServicesDescriptionLanguage,是一个用来描述Web服务和说明如何与Web服务通信的XML语言。注:学习WSDL之前需要学习XML、XMLNamespace、XMLSchema三个基础。WSDL文件的主要组成元素:元素定义portTypeWebService执行的操作messageWebService使用的消息typesWebService使用的数据类型bindingWebService使用的通信协议描述于W3C工作草案的完整WSDL1.2语法已列在下面:其中:?表示出现0..1次*表示出现0..任意次数+表示出现1..任意次数WebService开发:JavaWebServiceFileRef:WebService开发:JavaWebService.doc(v.1)CompanyConfidential-ForinternaluseonlyDocRef:September10,2009JavaWebService开发4of35WebService开发:JavaWebServiceFileRef:WebService开发:JavaWebService.doc(v.1)CompanyConfidential-ForinternaluseonlyDocRef:September10,2009JavaWebService开发5of35有了上面的一点基础,下面就从WSDL开始,建一个简单的JavaWebService。WSDL文件内容如下:?xmlversion=1.0encoding=UTF-8?definitionsxmlns=:tns=:xsd=:mime=:soap=:soap12===SimpleImplServicetypesschemaxmlns==:xsd=:tns=:complexTypename=sayHelloxsd:sequencexsd:elementname=arg0type=xsd:string//xsd:sequence/xsd:complexTypexsd:elementname=sayHellotype=tns:sayHello/xsd:complexTypename=sayHelloResponsexsd:sequencexsd:elementname=returntype=xsd:string//xsd:sequence/xsd:complexTypexsd:elementname=sayHelloResponsetype=tns:sayHelloResponse//schema/typesmessagename=sayHelloInputpartname=parameterselement=tns:sayHello//messagemessagename=sayHelloOutputpartname=parameterselement=tns:sayHelloResponse//message