摘要:
文章整理:西部数码--专业提供域名注册、虚拟主机服务
EJB与CORBA的集成能力对于集成基于Java或非JAVA的应用来说是很重要的。本文描述了如何实现一个EJB与一个CORBA的C 应用相集成。它阐述了几个重要的集成问题,尤其是那些EJB采用JAVA固有的或是用户定义的对象作为参数或返回值的方法时涉及的问题。
EJB对于用JAVA来开发关键业务应用程序是非常重要的。但是,业务应用不是孤立存在的,当今,企业需要集成各种应用。从而,把基于EJB的解决方案与现有的应用系统集成起来就变得越来越重要了。
在本文中,我将说明如何从一个非JAVA语言编写的应用中访问EJB。更加特别地是,我将讨论从一个CORBA的C 客户端访问会话和实体Bean(它使用同步的IIOP协议进行通信)。我没有提到消息驱动Bean,尽管你可能想从其它语言编写的应用中使用MOM产品来访问它们。
1. RMI-IIOP
会话Bean和实体Bean使用远程方法调用(RMI)来进行同步通信。J2EE1.3要求JAVA客户端使用RMI-IIOP。RMI-IIOP采用CORBA的IIOP协议,这使得RMI-IIOP与CORBA相兼容。换句话说,不是基于JAVA开发的客户端可以通过CORBA与EJB进行通信。
要实现这点,你必须使用符合J2EE1.3的应用服务器。以前的EJB规范没有要求你去用RMI-IIOP协议。而是,应用服务器采用了RMI-JRMP或是其它私有协议。另外,你必须使用符合CORBA2.3.1或更高版本的ORB。以前的CORBA版本没有实现与RMI-IIOP协议进行互操作所必需的规范,尤其是后来集成中CORBA规范和JAVA到IDL的语言映射规范中的用值传递对象的规范(可以参看CORBA/IIOP规范2.6版,在“值类型语义”一章)。
值类型语言增加了用值来传递对象的概念,是由RMI引来,加入到CORBA中的。CORBA最初并不支持这项功能;但是,这个概念对于实现JAVA与CORBA之间的互操作是至关重要的。
JAVA到IDL语言映射规范定义了如何把JAVA接口映射到CORBA的IDL语言。这个定义使CORBA分布对象可以访问本来不具有CORBA的IDL的EJB(还有那些RMI-IIOP分布对象)。特别的是,这个规范定义了一个JAVA的RMI子集,叫RMI/IDL,它可以让你
映射到IDL,用IIOP(或是更通用,是GIOP协议)作为通信的底层协议。
2. RMI/IDL
许多RMI/IDL数据类型遵循一定的约束;我们来看一下那些最重要的类型。更详细的信息,请参看JAVA到IDL的语言映射规范。
表1显示了JAVA基本类型到IDL的映射。
表1:JAVA到IDL的映射
Java
OMG IDL
void
void
boolean
boolean
char
wchar
byte
octet
short
short
int
long
long
long long
float
float
double
double
JAVA包映射为IDL的模块。RMI/IDL中的远程接口映射为IDL的接口并具有相对应的名字。但是,那些用JavaBean命名方式用来只读或读写属性的方法被映射为IDL的属性。后面我将提到这个。
JAVA中可序列化的对象映射为CORBA的值类型。值类型为CORBA提供了用值来进行传递的语义。值类型是属于本地的,不能被远程调用。它们不注册到ORB中,也不需要标识符,因为它们的值就是它们的标识符。更详细的信息,请参阅《Professional J2EE EAI》和CORBA/IIOP规范2.6版。
就象我已经提到过的,所有的JAVA或序列化的对象,包括JAVA固有的和用户定义的,都将映射为值类型。但是,这个规则也有一些例外----例如,当你想把java.lang.String映射到IDL时。如果把它定义为常量(final static),这个对象将被映射为IDL的wstring。在其它情况下,包括作为方法的参数或返回值,该对象都被映射为值类型CORBA::WStringValue。这个值类型是CORBA模块的一部分,它的IDL定义如下:
valuetype WStringValue wstring;
这等同于下面的IDL定义:
valuetype WStringValue {
public wstring data;
};
但是,要记住,第一种定义能够更干净地映射到JAVA。表2列出其它特殊的映射情况。
表2:其它重要的特殊映射情况
Java
OMG IDL
java.lang.Object
::java::lang::_Object
java.lang.String
::CORBA::WStringValue or wstring
java.lang.Class
::javax::rmi::CORBA::ClassDesc
java.io.Serializable
::java::io::Serializable
java.io.Externalizable
::java::io::Externalizable
java.rmi.Remote
::java::rmi::Remote
org.omg.CORBA.Object
Object
3. 实现集成
后面我将返回来讨论值类型,先讨论用户定义的类,再讨论内嵌的类,如Vectors、Collections和Enumerations。现在,让我们看一下CORBA和EJB集成的基本方式。首先,我们需要一个EJB。在第一个例子中,我们使用一个简单的会话Bean,它只使用简单的数据类型作为方法的参数和返回值。我们没有强行去用值类型。(注意:从CORBA客户端访问实体Bean跟访问会话Bean的过程一样。)
这个方式是最简单的;但是,你不能把它用在复杂的接口上。它的好处是:你可以使用不支持值类型的ORB。许多CORBA产品都是这样(不支持值类型),尤其是那些不是用C 实现的产品。
这个例子中,我将使用C 版本的ORBacus4.1.0作为CORBA的ORB,使用VC 6.0作为编译客户端代码的编译器。为部署这个例子中的EJB,我将使用JBoss3.0.0。你可以从网上下载ORBacus4.1.0(也可以从IONA网站上下载)和JBoss3.0.0。
你可以使用任何支持CORBA2.3.1或更高版本的ORB产品(只要它支持到C 的映射)、一个相对应的C 编译器和一个支持J2EE1.3规范的应用服务器。理论上讲不需要修改代码;但是,如果你使用其它产品,小的改动可能是必要的。
4. EJB会话Bean
让我们简单地看一下这个名叫CorbaEai的会话Bean。在我们的第一个例子中,这个简单的远程接口包含一个计算两个整数之和的简单方法。
package eai;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
public interface CorbaEai extends EJBObject {
public int sum(int a, int b) throws RemoteException;
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
集成EJB和CORBA/CORBA客户端访问EJB
来源:互联网
作者:west263.com
时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
热点关注
- JBoss jBPM2.0工作流引擎
- 在java体系结构中集成Macr
- 对代理模式与Java动态代理
- Java 实现连接sql server
- 基于Tcp/IP的JAVA简单聊天
- JAVA正则表达式和特殊字符
- Visual Studio:针对 Java
- 在Java中如何确定浮点数的
- jBPM-JPDL v3.2环境部署—
- JSTL 入门:表达式语言
- Textarea标签封装为Web在
- jsp页面显示数据导出到exc
- JBossIDE Eclispe 开发EJB
- java.util.Collections.so
- 目前最好的JSP分页技术
- [Boss Connector笔记]第3
- JSP SmartUpload上传文件
- javascript 动态添加表格
- JS代码做的导航栏菜单.帮
- Java容器类学习心得,欢迎
- 经过百般努力,终于用JSP写
- ANTLR中文手册之三(ANTLR
- Java入门笔记5_异常
- 关于Oracle9i中BLOB类型的
- 一个在JSP下实现将动态页
- java.lang.ArrayIndexOutO
- web.xml和struts-config.x
- JSP XML构架网站的实例
- 我在Spring中解决中文乱码
- javascript里的document.a
- javax.naming.NameNotFoun
- Tomcat中DataSource的配置
- 一个简单的用JAVA实现的屏
- Hibernate配置文件中映射
- java(Web)中相对路径,绝
IDC资讯
虚拟主机
域名注册
托管租用
vps主机
智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD



