快捷搜索:

部署EJB组件的艺术

支配EJB组件的艺术

(神仙掌事情室 )

Sun用“Write once,run anywhere”这一口号来推重Java的跨平台移植能力。然而,对付大年夜多半Java开拓者来说,这个口号与其说反应了真实的Java利用支配,还不如说它代表着一个美好的、在必然程度上可以说弘远年夜的目标。例如,假如要让Java

Applet在Netscape和IE浏览器中运行得完全一样,你得好好试验几回。类似地,在不合的Java兼容平台上,要让Java利用以完全同样的要领运行,你得耐心地进行一番费力的、彻底的测试。

但请不要误解我们的意思。Java是一种优秀的技巧,分外是用来作为办事器端办理规划时,这一点尤其凸起。我们觉得,Java 2平台企业版(J2EE)是首选的Web办事开拓情况。然而,对付Enterprise

JavaBean(EJB),在不合的平台上支配同一EJB组件时也会呈现一些与平台有关的问题。虽然我们完全有可能编写出支配措施统一的EJB代码,这些代码和利用办事器必须服从同一版本的EJB规范。在很多环境下,要精确地安装和支配EJB,EJB的支配者必须针对不合的利用办事器进行不合的处置惩罚。

用初学者的目光来看,本文先容的是:在不合的利用办事器上支配同一EJB组件时,其支配历程的一些细微区别。这些利用办事器包括BEA的WebLogic、IBM的WebSphere和源代码开放组织的JBoss利用办事器。

一、EJB支配历程

在不合的利用办事器之间,EJB组件支配历程的不合由多种缘故原由造成。首先,在描述若何支配EJB组件方面,EJB规范只供给了最小限度的指示。是以,供应商从不合的偏向解释J2EE/EJB规范的这一部分,在为自己的平台定义组件支配步骤时,作出了各自的判断。

第二,组件支配是一个利用办事器供应商可以为其产品增值和增添独特功能的领域,供应商们把该历程标准化的热心不高。别的,这种支配标准的短缺为利用办事器和Java

IDE供应商带来了时机,使得它们能够集成自己的对象集,以便有效地方便EJB开拓和支配??只有当你选择的IDE支持你的目标利用办事器时,这个历程才能得以简化。是以,对付一个给定的EJB,它的支配步骤必须根据详细环境进行阐发,而且平日对付每一个利用办事器来说,支配步骤每每有所不合。

为懂得释这个问题,我们试验了两种EJB实现,一个LDAP(Lightweight Directory Access Protocol,轻量级目录造访协议)无状态会话Bean和一个简单的容器治理的实体(container-managed

persistence,CMP)Bean。在这篇文章中,我们将懂得把同一EJB支配到WebLogic、WebSphere和JBoss利用办事器时的主要不合之处。必须阐明的是,虽然我们承认,假如使用与特定利用办事器亲昵关联的支配对象(例如,对付WebSphere办事器,应用VisualAge

for Java),EJB支配历程将加倍流通;然则,这里我们将尽可能地用手工要领进行处置惩罚(使用vi/Emacs和JDK的jar对象编写代码、编写支配描述器文件、创建jar文件)。

为方便起见,文章着末供给了一个可下载的ZIP文件,它包孕了本文用到的两个EJB示例,即HelloWorldLdap和ProfileTest。

二、HelloWorldLdap: LDAP无状态会话Bean

我们的第一个例子是一个无状态会话Bean,它从一个LDAP目录提守信息。用户(在这里是客户)可以在敕令行指定一个LDAP办事器、email地址和DN(Distinguished

Name)名称,EJB将从指定的目录提取该DN的所有属性。

类的路径问题可醒目扰EJB和客户法度榜样的编译。举例来说,我们选择把Netscape LDAP目录加入到第一个例子。一样平常而言,编译EJB代码的时刻应该在类路径中指定J2EE

JDK附带的j2ee.jar库,或者与它相称的库(对付JBoss,应用jboss.jar;对付WebLogic,应用weblogic.jar)。然而,编译客户法度榜样的时刻,类路径中还必须包孕供应商的客户库,由于客户法度榜样必须用到一个与特定供应商以及编译后的EJB组件有关的初始情况。别的,WebSphere客户法度榜样还要求被支配的EJB

jar文件也在classpath中。

成功地编译EJB之后就可以开始筹备支配EJB。为支配Bean,META-INF目录下必须包孕至少一个支配描述器(Deployment

Descriptor)。本例的支配描述器ejb-jar.xml就位于该例子的META-INF目录下,在支配之前,我们把它和EJB类文件一路用jar打包。我们的第一个例子HelloWorldLdap有两个目录,即HelloWorldLdap和META-INF,这两个目录都属于同一目录层次。怀着以统一的要领支配Bean的盼望,我们让EJB

jar包包孕以下内容:

HelloWorldLdap/

EjbLdapbean.class

EjbLdap.class

EjbLdapHome.class

EjbLdapClient.class

META-INF/

ejb-jar.xml

您可能还会对下面的文章感兴趣: