使用J2EE技术设计面向服务的体系结构框架(一)

日期: 2008-08-19 作者:Naveen Balani 来源:TechTarget中国 英文

  面向服务的体系结构(service-oriented architecture,SOA)因其固有的松散耦合与互操作性,成为许多企业应用的自然选择。在本文中您将看到,使用J2EE 1.4提供的Web服务功能可以很容易地构建能够访问现有业务流程的SOA系统。


  在本文中,您将学习如何利用Java 2 Platform, Enterprise Edition(J2EE)设计和开发面向服务的体系结构(SOA)框架。通过采用SOA框架,企业可以最大程度地减少系统间的耦合,从而提高可重用性。本文从一个较高的层面概述了在SOA框架上进行的几次迭代过程,这个框架将满足一家虚构企业的需求。这里开发的示例框架可以很容易地进行修改以适合您的商业需求。


  SOA和Web服务:简介


  SOA是一种分布式的软件模型。SOA的主要组件包括 服务、动态发现和 消息。


  ·服务是能够通过网络访问的可调用例程。服务公开了一个接口契约,它定义了服务的行为以及接受和返回的消息。术语服务常与术语 提供者互换使用,后者专门用于表示提供服务的实体。


  ·接口通常在公共注册中心或者目录中发布,并在那里按照所提供的不同服务进行分类,就像电话簿黄页中列出的企业和电话号码一样。客户(服务消费者)能够根据不同的分类特征通过动态查询服务来查找特定的服务。这个过程被称为服务的 动态发现。


  ·服务消费者或者客户通过 消息来消费服务。因为接口契约是独立于平台和语言的,消息通常用符合XML模式的XML文档来构造。


  下面的图1说明了SOA中的不同角色。



 


  Web服务作为SOA


  Web服务建立在开放标准和独立于平台的协议的基础之上。Web服务通过HTTP使用SOAP(一种基于XML的协议),以便在服务提供者和消费者之间进行通信。服务通过WSDL(Web Service Definition Language)定义的接口来公开,WSDL的语义用XML定义。UDDI是一种语言无关的协议,用于和注册中心进行交互以及查找服务。所有这些特性都使得Web服务成为开发SOA应用程序的优秀选择。


  使用J2EE 1.4平台开发SOA/Web服务框架


  1.4版的J2EE平台通过新的JAX-RPC 1.1 API提供了完整的Web服务支持,这种API支持基于servlet和企业bean的服务端点。JAX-RPC 1.1基于WSDL和SOAP协议提供了与Web服务的互操作性。J2EE 1.4平台也支持Web Services for J2EE规范(JSR 921),后者定义了Web服务的部署需求并利用了JAX-RPC编程模型。除了几种Web服务API之外,J2EE 1.4平台还声称支持WS-I Basic Profile 1.0。WS-I Basic Profile标准让Web服务克服了不同编程语言、操作系统和供应商平台之间的障碍,从而使多种应用程序之间能够交互这意味着除了平台独立性和完整的Web服务支持之外,J2EE 1.4还提供了跨平台的Web服务互操作性。


  在J2EE 1.4下,Web服务客户可以通过两种方式访问J2EE应用程序。客户可以访问用 JAX-RPC API创建的Web服务;在幕后JAX-RPC使用servlet来实现Web服务。Web服务客户也可以通过bean的服务端点接口访问无状态会话 bean。Web服务客户不能访问其他类型的企业beans。第二种选择——公开无状态EJB组件作为Web服务——有很多优势:


  ·利用现有的业务逻辑和流程:在许多企业中,现有的业务逻辑可能已经使用EJB组件编写,通过Web服务公开它可能是实现从外界访问这些服务的最佳选择。EJB端点是一种很好的选择,因为它使业务逻辑和端点位于同一层上。


  ·并发支持:作为无状态会话bean实现的EJB服务端点不必担心多线程访问,因为EJB容器必须串行化对无状态会话bean任何特定实例的请求。


  ·对服务的安全访问:企业beans允许在部署描述符中声明不同方法级别的安全特性。方法级别角色被映射到实际的主体域(principal domain)。使用EJB组件作为Web服务端点,把这种方法级别的安全性也带给了Web服务客户。


  ·事务问题:EJB服务端点在部署描述符规定的事务上下文中运行。容器处理事务,因此bean开发人员不需要编写事务处理代码。


  ·可伸缩性:几乎所有EJB容器都提供了对无状态会话bean群集的支持。因此当负载增加时,可以向群集中增加机器,Web服务请求可以定向到这些不同的服务器。通过把Web服务模型化为EJB端点,可以使服务具有可伸缩性,并增强了可靠性。


  ·池与资源管理:EJB容器提供了无状态会话bean池。这改进了资源利用和内存管理。通过把Web服务模型化为EJB端点,这种特性很容易扩展,使Web服务能够有效地响应多个客户请求。


  记住所有这些优点,下一节将展示如何在体系结构中将无状态EJB组件公开为Web服务。


  设计SOA/Web服务框架


  比方说有一家公司,它的各种系统(比如支付、财务和发票系统)需要彼此交互。此外,其中一些应用程序还需要对外界公开,以便不同的业务合作伙伴与它们进行交互。您还需要为各种应用程序(如输入发票的各种数据输入操作或者查看支付的状态)设计基于 Web 的解决方案。最佳选择就是设计一种松散耦合的基于服务的系统。这些服务应该得到开放标准的支持,这样任何业务合作伙伴都可以调用它们。


  这些方面的考虑将使您转向Web服务/SOA框架,通过无状态EJB组件把各种服务和业务流程公开为Web服务。下面的图2说明了企业内部应用的SOA框架。


我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐