技术开发 频道

运用Spring DM和CXF来实现WebService 的动态发布

  【IT168技术文档】

  在JAXWS2.0发布以前,用JAVA发布一个WebService是一件相当复杂的工作,令很多开发高手都望而却步;但随着JAXWS2.0、2.1版本的发布,通过大量使用JAVA annotation特性,以及运用JAXB20规范来统一数据展示,从而大大简化和规范了开发过程,一些新的开源框架也随之诞生。Apache CXF就是其中的佼佼者。它实现了JCP与Web Service2.1中一些重要标准。CXF简化了构造,集成,面向服务架构(SOA)业务组件与技术的灵活复用。在CXF中,Service使用WSDL标准定义并能够使用各种不同的消息格式(或binding)和网络协议(transports)包括SOAP、XML(通过HTTP或JMS)进行访问。

  而OSGI技术更是JAVA社区近来的热点,它将面向contract,插件化,组件化的设计思想上升到一个理论的高度,推出了一系列的规范和参考实现;Spring DM更是在OSGI基础上将Spring的DI能力扩充到OSGI层面,并对OSGI规范中缺少的部分加以补充和完善,使之成为更具有实践应用价值的框架。

  这篇文件将介绍如何运用这两个开源项目来实现WebService的组件化发布。

  环境:

  Eclipse3.4

  JDK1.605

  CXF2.1.1

  Spring DM1.0.3

  第一步:在Eclipse下创建新的工作区;

  第二步:导入Spring DM的Bundle,主要导入以下几个Bundle:

  (1)org.springframework.bundle.osgi.core

  (2)org.springframework.bundle.osgi.extender

  (3)org.springframework.bundle.osgi.io

  (4)org.springframework.bundle.spring.aop

  (5)org.springframework.bundle.spring.beans

  (6)org.springframework.bundle.spring.context

  (7)org.springframework.bundle.spring.core

  (8)org.springframework.osgi.aopalliance.osgi

  第三步:导入其他Eclipse下的Bundle

  (1)org.apache.commons.logging

  (2)org.eclipse.equinox.http.jetty

  (3)org.eclipse.equinox.http.servlet

  (4)org.eclipse.osgi.services

  (5)org.mortbay.jetty

  设计的原则:

  (1) CXF将被独立封装成一个Bundle;

  (2) CXF Bundle对外提供OSGI服务,其他Bundle可以利用这个服务来发布Web Service;

  (3) CXF内部缺省使用了Spring的库,而Spring DM环境也带了Spring 的库,所以在实现CXF Bundle的时候要使CXF运行于None Spring模式;

  (4) 充分考虑系统的封装型和可扩展能力;

  (5) Web Service必须是动态发布;

0
相关文章