基于Java的企业应用集成技术_宁芊
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Java的企业应用集成技术*
宁芊,殷国富,宋翠家
(四川大学制造科学与工程学院,四川成都
610065)
摘要:探讨了基于Java技术的EAI解决方案,包括利用JNI实现EAI,利用分布式企业通信范型解决
EAI问题,以及利用JMS,XML,J2EE连接程序实现EAI等。
关键词:企业应用集成;Java本地接口;Java消息服务;XML;J2EE
中图法分类号:TP311文献标识码:A文章编号:1001-3695(2004)02-0124-03 Technology of Enterprise Application Integration Based on Java
NING Qian,YINGuo-fu,SONG Cui-jia
(College ofManufacturingScience&Engineering,Sichuan University,Chengdu Sichuan610065,China)
Abstract:This paperprobes into the solutions based on Java technology for Enterprise Application Integration(EAI),which includes
applying Java Native Interface(JNI),distributed enterprise communications paradigm,Java Messaging Service(JMS),eXtensible
Markup Language(XML)and J2EEConnectorprogram.
Key words:EAI(Enterprise Application Integration);JNI(Java Native Interface);JMS(JavaMessagingService);XML;J2EE
1引言
目前我国制造领域的企业在计算机集成制造系统
(CIMS)的应用集成中主要有以下问题:信息的多样性和
信息源的异构性;硬件和软件的异构性;不一致的接口;
现存应用之间缺乏通信;缺乏可重用的应用等[1]。
解决这些问题的基础,是要仔细考虑新开发的应用
程序能够与其他或传统(已有)企业应用程序进行很好
的集成。企业应用集成(Enterprise Application Integration,
EAI)就是需要解决如何将传统/辅助系统中的数据与逻
辑集成到当前与未来企业系统框架之中的问题。
在企业内部的管理传统/辅助企业应用程序之后,
得到一个内部EAI问题,对于该问题可以提供更灵活与
可控制性更强的解决方案。如果传统/辅助企业应用程
序位于企业的外部,那么这些外部EAI问题可能会非常
复杂,这是因为必须有多个企业对系统如何集成达成一致,这种问题常常需要使用B2B应用程序,决策如何在
企业间交换数据[2]。
在EAI解决方案中有许多技术、技巧与产品,本文
讨论的重点是如何利用Java及Java企业技术,为Java企业应用程序提供EAI解决方案。
2利用JNI实现EAI
如图1所示,Java本地接口(Java Native Interface,JNI)
已被集成到标准Java平台上,使得Java代码能够直接与特定操作系统和硬件平台上的本地共享二进制库进行
交互。这样JNI就提供了一种方法,可将由其他语言所实现的传统应用程序代码集成到Java企业应用程序中。图1Java本地接口(JNI)体系结构
如果目标本地平台所使用的语言是C或C++ ,由于Java平台已经提供了针对这些语言的代码转换支持,因此,创建基于JNI的代码转换非常方便。实现基于JNI
代码转换功能的步骤简述如下:①定义Java包装程序类,能够将本地代码接口与纯Java代码接口隔离;②定
义加载的系统库,创建一个标准的Java类,用来加载目
标共享库;③定义本地方法;④编译Java包装程序,使用
一个标准的Java编译器对包装程序进行编译;⑤创建本地头文件;⑥创建本地语言实现;⑦编译实现与创建共
享库,对本地语言实现进行编译,并且创建必要的共享库;⑧执行Java应用程序,共享库应放在Java应用程序·124
库路径中,库路径的搜索机制与特定的操作系统
平台相关。
使用JNI的不足之处在于,JNI之中的内存资源与线
程资源以及共享库代码值中的线程资源是按照不同的
方式进行管理的,在使用JNI时必须非常谨慎,必须考虑这些资源不匹配所带来的问题。因此,使用JNI作为
EAI解决方案的方法主要适合于简单的企业应用程序集成工作。
3利用分布式企业通信范型实现EAI
很多企业环境需要对由特定辅助企业应用程序所
提供的服务实现分布式访问,使用上面介绍的JNI进行企业应用程序集成不能实现分布式处理方法,这时可以直接从J2EE EJB组件或从J2EEWeb组件的角度实现其中的某些分布式通信方法。
另外一种重要的技术就是利用分布式企业通信范
型,在辅助企业应用程序或传统企业应用程序与Java企业应用程序之间提供EAI连接方法。例如,在分布式辅助应用程序需要一个简单的接口时,可以利用TCP/IP实现EAI,但需要进行大量的手工编码;对于低成本的EAI
解决方案,可以通过HTTP提供EAI功能;在基于Java应用程序的情况下,RMI可以作为实现分布式EAI的方式。RMI是标准的EJB接口技术,因此,在Java企业应用程序中,RMI能够保证在所有J2EE,EJB环境中实现最大限度的互操作性。如果传统/辅助企业应用程序使用的是基
于Windows的主机平台,那么DCOM是实现应用程序与Java企业应用程序环境连接性的最佳途径。在基于Windows的辅助应用程序端使用DCOM,用来提供一个分布式接口,能够容易地用于创建原始应用程序的任何库
与语言。在分布式通信范型中实现EAI的最重要技术
是利用CORBA实现EAI。CORBA是一种独立于语言与平台的分布式通信解决方案,因此,为传统/辅助应用程
序提供基于CORBA的接口,能够实现与其他应用程序
进行高级的EAI。在传统/辅助企业应用程序端,为应用程序提供本地语言CORBA的包装实现,并且通过COR- BA IDL定义分布式接口,或者使用Java JNI桥接本地辅助应用程序与通过Java IDL所实现的分布式CORBA接口,或者基于Java的商业CORBAORB实现。
4利用消息服务与JMS实现EAI
EAI使用的分布式通信范型都依赖于对将要被集成
的传统/辅助企业应用程序进行同步调用的能力,这种
实现EAI的方法适合于某些特殊的内部EAI工程,但对于外部EAI工程或外部B2B工程,这种方法存在明显的不足。在需要进行外部EAI时,最好能够考虑使用异步
消息通信机制。异步通信能够容易地实现系统之间的
高级耦合,并且能够通过消息服务供应商,实现可靠的
消息队列集中管理。在J2EE与Java企业环境中,Java消息服务(Java Messaging Service,JMS)是一种理想的消息服务技术。
图2给出在EAI解决方案中使用JMS的基本体系结构。由于使用了JMS中基于服务供应商接口(Service ProviderInterface,SPI)的体系结构,因此在J2EE企业应
用程序中可以集成任何特定供应商的消息服务实现,并
且这些消息服务实现能够提供关于JMS的SPI实现。这样,如果辅助应用程序对于本组织是外部的应用程序,
那么由辅助系统所提供的特殊消息服务系统就能够容
易地实现与Java企业应用程序的集成。此外,进行传统/辅助企业应用程序集成所需使用的选项,将仅受限于
辅助应用程序语言与平台提供的消息服务接口所具有
的能力。
图2利用JMS实现EAI
5利用XML实现EAI
XML是Java应用环境中一种进行数据表示的技术,
同时,XML也是大多数其他企业应用环境中正在得到广