SOA技术概况以及其EJB技术实现

来源:互联网 发布:天猫超市满99减50知乎 编辑:程序博客网 时间:2024/06/05 14:36

1  SOA起源:

随着信息化建设的不断发展,许多企业已经建立众多用于企业管理或生产使用的信息系统,由于各个信息系统都是独立开发的,并且大多数是从单项业务系统开始的,所采用的开发方式和平台各不相同。因此,系统之间独立性很强而沟通性严重缺乏,而以此系统为基础的企业职能部门,相互之间无法进行有效的通信,从而形成一个一个孤立的信息系统,俗称“信息孤岛”。

而基于SOA( 面向服务的架构) 的应用集成开发方案可以很好地解决“信息孤岛”的问题,尤其是针对多个不同技术开发,运行在不同平台的应用程序的相互通信。面向服务的体系结构(SOA) 的概念提出的较早,但由于当时的技术水平限制,SOA只是停留在概念阶段。但随着技术的发展,特别是XML语言的出现及发展,以及Web Service等技术的发展,SOA才慢慢走人人们的视野,从概念逐渐转向于应用。W3C将SOA定义为:“一套可以被调用的组件,用户可以发布并发现其接口[1]。”

2 SOA架构的实现

SOA(Service-oriented Architecture)是一种企业架构,SOA遵循以服务为中心的原则,各服务之间通过消息的形式进行耦合。SOA通常存在三种基本角色,它们是服务提供者、服务使用者、服务注册目录,关系如下图1所示:


图1 SOA原理图

Web服务(Web Services)技术是开发SOA应用最常用的实现技术,Web Service 的核心技术为XML 。他的具体协议为SOAP(Simple Object Access Protocol) ,WSDL(Web Service Description Language ) 和 UDDI(Universal Description, Discovery and Integration) 。Web Services通过HTTP协议并使用SOAP(simple Object Access Protocol)在服务提供者和使用者之间进行通信。服务通过WSDL(Web Service Definition Language)来进行描述并公开,WSDL的语义用XML定义。而使用UDDI(Universal Description,Discovery and Integration)协议与注册中心进行交互以及查找服务。

3 EJB构件的Web服务实现

使用EJB组件进行开发,通过使用基于XML的语言WSDL(Web Services Definition Language)Web服务描述语言来描述接口,将服务转到更动态且更灵活的接口系统中,也就是将EJB构件通过Web Service技术封装为Web服务构件,从而实现SOA

JAX-WS规范(Java API for XML Web Services)是Java EE 5平台的重要组成部分,以此实现Java面向XML的Web服务。Sun最开始的Web Services的实现是JAX-RPC 1.1 (JSR 101),而JAX-WS作为后续发行版本,提供了更强的功能支持[2]。JAX-WS 通过对注解的支持,JAX-WS 简化了Web服务开发。 JAX-WS为Web 服务提供了两种不同的编程模型EJB(Enterprise Java Bean)容器模型及Web容器模型。对于EJB构件一般选用EJB容器模型进行Web Services的开发,示例代码如下:

@Stateless                     //注解指明该类是Session EJB@WebService                  // 注解指明该EJB 将作为Web Service对外发布@Remote({StandPorcessDAO.class})public class StandPorcessDAOBean implements StandPorcessDAO{@PersistenceContext(unitName = "hdty")…@WebMethod                 //注解指明该方法将作为Web服务方法对外发布public Integer insertDB(Integer flowid, String standerid,String standername, String standerurl, String standertype,String attribute1, String attribute2, String attribute3){……}……}
以上代码为对标准进行处理的会话Bean的方法的Web服务实现,使用@WebService注解配置此会话Bean将要作为Web服务对外发布,并使用注解@WebMethod对需要发布的方法进行配置。代码编写后,需要提供WSDL文件和WebService.xml,放在EJB-jar的META-INF文件夹下。也可使用容器自动生成WSDL描述文件,内容如下:

<definitions>- <types>- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">……<xs:element name="insertDB" /><xs:element name="insertDBResponse" />……- <operation><soap:operation soapAction="" />- <input><soap:body use="literal" />  </input>- <output><soap:body use="literal" /></output></operation>……<service name="StandPorcessDAOBeanService"><port binding="tns:StandPorcessDAOBeanBinding" name="StandPorcessDAOBeanPort"><soap:address location="http://10.123.2.40:8080/workejb/StandPorcessDAOBean" /></port></service></definitions>
在WSDL描述文件中指明方法的输入输出消息结构与类型,以及绑定名称和绑定地址等,最后将EJB构件发布在Java EE服务器中。

总结:

使用EJB技术来实现SOA方法较为简单,可行性强,且性能较好,适合于企业级应用。

参考文献:

[1]   凌晓东.SOA综述[J].计算机应用与软件,2007,24(010): 122-124.

[2]   M. Juric, I. Rozman, et al. Comparison of performance of Web services, WS-Seurity, RMI, and RMI-SSL[J]. Journal of Systems and Software,2006,79(5): 689-700

原创粉丝点击