J2EE连接器开发实践之一: J2EE连接器的开发

本文基于j2ee连接器体系结构,介绍一个典型的资源适配器案例开发的过程和开发技巧,然后开发客户端,并在客户端通过连接器调用资源层。学习完本文,读者将能理解jca的体系结构和开发的各个细节,并且能自主开发新的j2ee连接器。

阅读本文,您需要以下的知识和工具:

至少一种j2ee应用服务器的使用经验;
能够开发、部署ejb,并且能够在客户端调用;
java socket编程、线程的基础知识。

本文的参考资料见 参考资料

引言

j2ee连接器(jca)是一种企业级应用整合的技术。目前,在j2ee平台中,常使用的应用整合的技术有:

java消息服务(jms);
web服务(web services);
j2ee 连接器体系结构(jca)。

java消息服务是一组在java程序中使用企业级消息的api,它为整合j2ee应用和非j2ee应用程序提供了异步整合的方式,在这种方式里,所有的应用都和消息中间件(mom)进行通信,这样就提供了与平台无关、语言无关的整合。web服务是一种新兴发展起来的技术,它使用soap消息作为传输的载体,使用http或者其它基于文本的协议作为数据传输的协议,web服务可以是同步的整合,也可以进行异步的整合。同样,web服务也是一种和平台无关、和开发语言无关的整合技术。

j2ee连接器技术为连接j2ee应用服务器和已有的企业应用系统(erp/crm等)提供了解决方案。通过j2ee连接器,eis(企业信息系统)厂商不需要再为每个应用服务器提供专门的支持接口,同样,应用服务器厂商在连接到新的eis系统时也不需要再重新开发新的代码,jca为整合企业资源提供了标准的解决方案。

在jca1.0规范中,它定义了应用服务器和资源适配器的系统级合同(连接池、事务管理和安全),为资源适配器的客户端定义了通用的客户端接口(common client interface,cci),同样也规范了jca打包和部署等细节。但在jca1.0规范中,只支持outbound的调用,也就是说只能在j2ee应用中通过资源适配器向外调用企业资源层,而企业资源层不能通过适配器调用j2ee里的资源。在即将发布的jca1.5规范中,这个问题得到了解决,也就是说,在j2ee的外部可以通过资源适配器直接调用部署在j2ee中的应用,如ejb。

下面简单看一下jca的体系结构,如图1所示。

图1 jca的体系结构

下面解释一下上图中的一些概念。

资源适配器(resource adapter):为了获得在应用服务器和eis之间的系统标准可插入性,jca定义了应用服务器和eis之间的一系列合约(contract),资源适配器实现了eis端的系统级合约。

系统级合同(system contract):系统级合同定义了一组系统合同,可以让应用服务器和资源适配器连接起来以管理连接、事务和安全性。这样,应用组件的开发者就可以把精力集中与和业务逻辑相关的开发,而没有必要关心系统级的问题。

客户通用接口(cci):定义了j2ee组件连接到eis系统的一组通用的api,这些api在具体的开发中进行实现。

在连接器的开发中,主要任务就是开发资源适配器。如果需要,再开发出一套客户通用接口实现(cci),这样,客户端就可以通过这些通用的接口来连接、使用eis层的资源了。

在使用连接池的情况下,应用程序组件和jca以及eis交互关系如图2所示。

图2 应用程序组件和jca以及eis交互之间的交互关系

我们简要看一下请求传递的顺序:

应用程序组件发出获得连接的请求;
连接工厂调用连接管理器的allocateconnection;
连接管理器向连接池管理器发出获得连接的请求;
连接池管理器试图从managedconnectionfactory进行连接匹配,如果没有匹配到连接,那么返回null;
由于没有匹配到连接,连接池管理器调用managedconnectionfactory的createmanagedconnection方法来创建连接;
managedconnectionfactory接收到连接池管理器的请求后,创建一个managedconnection实例,同时managedconnection打开和eis之间的物理连接,然后把这个managedconnection实例返回给连接池管理器;
连接池管理器调用managedconnection实例的getconnection方法以获得一个connection实例;
managedconnection实例收到连接池管理器的getconnection请求后,创建一个connection实例,然后把这个实例返回给连接池管理器;
这个connection实例通过连接池管理顺次返回给应用程序组件;
应用程序组件通过返回的connection来创建interaction或者调用业务方法;
应用程序组件通过connection调用业务方法时,实际上connection使用了managedconnection的物理连接和eis进行交互。

下面我们介绍一个简单的案例的开发。

回页首

案例介绍

这个案例使用了典型的j2ee多层体系

  • J2EE连接器开发实践之一: J2EE连接器的开发已关闭评论
    A+
发布日期:2019年07月02日  所属分类:参考设计