了解下JAVA的Java Web服务: Metro简介
在ruby里才是一切皆对象。当然我不并不是很了解ruby,但是ruby确实是将语法简化得很好。MetroWeb服务栈是由SunMicrosystems开辟的一个开源工具。它将JAXB2.x数据绑定和JAX-WS2.xWeb服务尺度的参考完成与其他与XML相干的Java尺度相分离。Metro还包含一些附加组件,以撑持基础JAX-WS服务的界说和利用和SOAP动静互换的各类WS-*扩大。
Metro既能够用作自力的Web服务栈,也能够用作开源Glassfish使用服务器中的集成组件。假如利用Glassfish,特别是在具有设置基础Web服务和WS-*扩大的GUI工具的开源NetBeansIDE长进行开辟时,Web服务设置会变得加倍简单。本系列持续存眷Web服务。之前的文章会商ApacheAxis2的自力利用,而不是包括Axis2并撑持GUI工具的ApacheAxis2使用服务器。本文也一样,只会商以自力于IDE的体例独自利用Metro。
Metro基本与Axis2
本系列之前的文章已深切会商了Axis2,以是本文起首会商Metro与Axis2之间的类似点和分歧点。二者的类似点对照无限,次要环绕于利用Web服务开辟代码的罕见需求。这两个框架都同意要末从已有的Java代码入手下手构建Web服务(可是,除非利用Jibx2Wsdl之类的独自的工具,不然Axis2对这类办法的撑持无限),要末从WSDLWeb服务形貌入手下手,天生利用或完成服务的Java代码。这两个框架都是将服务操纵建模为办法挪用,而将服务端口范例建模为接口。
Metro与Axis2之间的分歧点比类似点要光显很多。从基本上讲,Metro是环绕JAXB2.x和JAX-WS2.x计划的,偶然撑持这两种手艺之外的任何替换手艺(除遗留的JAX-RPC的利用)。而Axis2则被计划为撑持无穷种手艺,特别是在XML数据绑定范畴。固然它包含对JAXB2.x和JAX-WS2.x的撑持,可是两者并没有特别位置。(假如说有的话,也仅限于JAX-WS某种意义上是Axis2中的第二类方案,缘故原由正如“Axis2中的JAXB和JAX-WS”中所述,没法为JAX-WS服务设置WS-Security或其他特征)。
从布局上讲,两种栈在处置哀求和呼应时都利用处置器。Axis2以这类处置器办法为基本完成模块:基础SOAP动静互换的可插拔扩大,用于以高度可设置的体例完成WS-*手艺。Metro撑持多种完成处置器的WS-*手艺,可是这些手艺都被集成到Metro引擎,而不是作为可分别组件。Metro利用的集成方法不如Axis2模块天真,可是在设置和利用WS-*扩大方面有一些上风。
在客户端代码怎样利用WSDL服务界说方面,这两种栈之间也有分歧。Axis2次要将WSDL服务界说用于客户端代码天生,从WSDL中提取服务界说信息,并天生代码,以在运转时机关婚配的Axis2客户端设置(不外也能够在运转时剖析WSDL界说)。JAX-WS2.x,固然另有Metro,在运转时都必要WSDL服务界说,以便构建服务界说。在运转时利用WSDL会增添启动开支—不外仅限于第一次服务挪用—没有任何分明的长处。
在服务器端也有分歧的地方。关于罕见的HTTP传输,Axis2一般作为独自的Web使用程序(一个WAR程序),别的另有恣意数目的服务被部署到该Axis2Web使用程序(不外也能够将它打包到使用程序WAR中)。能够经由过程Web页面上传部署服务,也能够经由过程间接将Axis2服务AAR文件拖放到扩大的Axis2Web使用程序的得当目次中来部署服务。一般,在构建时,Axis2从WSDL服务界说天生各个服务的设置信息,然后将其包含在服务AAR文件中。尺度的Axis2Web使用程序还经由过程Web页面供应多种监督和把持工具。
相反,Metro请求为每一个Web服务使用程序构建独自的WAR文件,而Metro库JAR文件要末包含在WAR中,要末包括在类中(作为HTTP服务器的一部分),WAR中另有一个WEB-INF/web.xml文件,该文件援用服务和Metroservlet。当独自利用Metro时,还必要创立一个sun-jaxws.xml设置文件,该文件供应关于服务设置的附加信息。这些设置文件中的信息与实践Web服务类中的JAX-WS正文相结合,一同为服务设置Metro。因为Metro被计划为以这类嵌进式的体例利用,以是不供应任何间接监督或把持的工具。
Axis2和Metro都供应集成的HTTP服务器撑持。关于Metro,这是经由过程JAX-WS特征javax.xml.ws.Endpoint类供应的。Axis2和Metro/JAX-WS的集成HTTP服务器都合适在测试中利用,大概作为异步呼应端口,可是不克不及包容临盆Web服务,关于临盆Web服务,可使用撑持ServletAPI的Java使用服务器。
示例使用程序
代码下载部分供应了本系列之前文章中利用的复杂的书库办理服务的一个版本,该版本经由了修正,以演示Metro的利用。和之前的版本一样,WSDL服务界说一共界说4个操纵:
getBook,用于猎取国际尺度书号(InternationalStandardBookNumber,ISBN)标识的特定图书的具体信息
getBooksByType,用于猎取某品种型的一切图书的具体信息
getTypes,用于发明现有的图书范例
addBook,用于将新的图书增加到书库
在“Axis2中的JAXB和JAX-WS”中,您看到了这个使用程序在Axis2中怎样事情:起首利用JAXB2.x数据绑定天生代码,然落后行JAX-WS2.x服务设置。该文章的年夜部份内容也合用于利用Metro的情形。除服务称号和端点地点分歧外,WSDL是不异的,天生的JAXB数据模子是不异的,甚至天生的服务类也是不异的,只是Java包和JAX-WS正文中利用的服务称号分歧。
<p>
但是对于JAVA技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听, Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
页:
[1]