摘 要:Web服务是SOA的核心,使用J2EE来实现Web服务能让系统具有更高的可重用性。因此,本文对如何在J2EE平台下实现Web服务进行了研究,特别是对如何在Axis2平台下实现Web服务的原理和方法进行了详细的介绍。
关键词:J2EE;Web服务;Axis2平台
随着信息技术的发展,SOA的相关内容已经成为了跨语言、跨平台的标准。因此,使用SOA架构的系统都具有极高的可重用性。虽然SOA可以在绝大多数的平台上进行开发,但是,由于Java语言“一次编写,多次运行”的特点,使得用Java语言编写的程序可以轻松的实现跨平台运行,这与SOA解决异构系统消息交互问题的初衷一直,因此,使用J2EE架构来实现SOA架构是一种理想的解决方案。并且在SOA的实现技术中,最常用也是最核心的技术就是Web服务。使用Java语言实现的Web服务同样可以“一次编写,多次运行”。因此,使用J2EE平台来实现Web服务,可以提高整个系统的可重用性和互操作性。
1 J2EE API对Web服务的支持
J2EE架构XML语言提供了对Web服务实现的支持,其中包括SAAJ(SOAP with Attachments API for Java)、JAXB(Java Architecture for XML Binding)、JAX-WS(Java API for XML Web Services)。利用这些J2EE中的API可以极大的简化Web服务的实现。
SAAJ(SOAP with Attachments API for Java)是实现JAXR和JAX-WS的底层接口。在SAAJ中传递的消息必须符合SOAP1.1的标准,并且运行SOAP消息携带附件。虽然,多数开发人员并不会直接使用SAAJ,而是使用更高层、更加方便的JAX-WS API,但是SAAJ 是JAX-WS API实现的底层机制,有所了解有助于JAX-WS API的使用。
JAXB(Java Architecture for XML Binding)是一种Java技术,可以非常方便的将XML Schema 转化成相应的Java对象。JAXB既可以单独使用,也可以和JAX-WS相结合来作为Web服务中的数据绑定标准。目前,所有的J2EE容器、EJB容器以及Web容器都支持JAXB API。JAXB不仅可以非常方便的将 XML Schema映射成相应的Java Class,还提供了对Java对象的验证、更新和访问的功能。
2 J2EE开源项目对Web服务的支持
除了J2EE自带的API以外,一些开源的项目也开发了相应的Java包来简化Web服务的实现。目前,广泛用来实现Web服务的平台有Axis2和XFire两种。由于在实际应用中Axis2平台的应用更为广泛,因此,在本文主要对Axis中的相关原理、Axiom模型对象以及创建Web服务的步骤进行介绍。
(1)Axis2的工作原理
Axis2平台从本质上来说就是一个SOAP引擎,为系统提供网关SOAP操作、客户端和服务器端的基本框架。不管任何类型的服务器只要包含了Axis2,那么使用Axis2开发的Web服务可以不受服务器种类的限制运行。同时Axis2也可以看成是一个实现了JAX-RPC的Servlet,只要运行的服务器支持Servlet,那么就可以使用Axis2来轻松的实现Web服务的开发和部署。
Axis2作为一个支持Web服务的平台,其主要的功能就是对SOAP消息的封装以及处理。在Axis2中,在成功发布Web服务之后,会自动生成该Web服务的WSDL文件。客户端可以根据这个WSDL编写请求程序来调用相应的服务。当服务器端和客户端进行消息交互时,进行交互的消息被封装成SOAP格式。服务器在接收到这个封装的消息之后,对着对象进行解析,从而获取真正的信息。经过对这些信息的处理,将返回的消息也封装起来传输给客户端。因此整个Axis2的性能直接取决于Axis2对XML对象和Java对象进行转化的性能。
(2)Axiom对象模型
Axiom是Axis2的XML对象处理模型,包括了最初的XML信息模式。XML信息模式主要包括了其本身的模式以及可编程的处理模式。使用具体的编程语言就可以很方便的来实现XML信息模式。JDOM和DOM是支持XML到Java对象的转换模式。从功能上看Axiom和这两种语言类似,但是在底层实现的方式上却有很大的区别。Axiom通过Stax获的强大的构建能力。Stax使用Pull方式来解析XML文件。Axiom使用Stax Pull解析器来对整个解析过程进行控制。例如在下面的Items.xml文件中,如果需要整个文件中的第一个
3 结束语
Web服务是一种进行异构系统通信的技术,可以使用不同的语言来实现,将J2EE与Web服务相结合,更有利于异构系统的集成。在本文中主要对J2EE中Web服务的具体实现方法进行了研究,其中包括使用J2EE中的API以及J2EE的开源项目来实现Web服务。并重点对在J2EE开源项目中的Axis2平台下实现Web服务进行了深入的分析。
参考文献:
[1]毛新生.SOA原理.方法.实践[M].电子工业出版社.2007
[2]单建洪.SOA整合之道[M].电子工业出版社.2008
[3]Sun Microsystems.Java 2 Platform,Enterprise Edition(J2EE) Specifieation v1.4IEB/OL].2003