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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

day walker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值