级别: 初级 Kulvir Singh Bhogal (kbhogal@us.ibm.com), IBM 电子商务顾问, Fort Worth, Texas
2004 年 10 月 01 日 WebSphere Application Server 的 Pluggable Application Client 允许使用 Sun 的 Java 运行时环境(Java Runtime Environment,JRE) 与应用服务器资源和代码构件(例如 EJB)进行交互。本文将会引导用户如何使用 Pluggable Application Client。
引言
我前面的文章
在 WebSphere® Application Server J2EE 瘦应用程序客户端中使用 JNDI 说明了怎样使用瘦应用程序客户端与 J2EE 资源(例如 WebSphere Application Server 提供的 EJB)交互。
本文描述了 WebSphere Application Server Pluggable Application Client。
它让您可以使用与轻量级、可下载的应用程序运行时配合使用的 Sun Java™ Run-time Environment (JRE),JRE 可以与应用服务器的资源(例如 enterprise bean)进行交互。Pluggable Application Client 的插件能力是它与瘦应用程序客户端的主要区别。当您不想使用与瘦应用程序客户端捆绑的 JRE 时,可以自己提供 JRE。本文从向用户介绍 Pluggable Application Client 的安装过程开始,然后向您说明如何使用它来与无状态会话 EJB 交互。
Sun JRE
由于您将使用 Sun JRE 与 WebSphere Application Server 进行交互,因此首先需要安装 Sun JRE。Sun 维护
Sun JRE 以前版本的文档,并且只有唯一确定的版本与 Pluggable Application Client 相匹配的。请查阅
WebSphere Application Server 信息中心以获取兼容性信息。使用 Sun JRE 缺省安装,它包括使用两个安装目录,比如
C:\j2sdk1.4.2_05 和
C:\Program Files\Java\j2re1.4.2_05。
在 Sun JRE 中安装 Pluggable Application Client
由于要使用 WebSphere Application Server 来配置与 Pluggable Application Client 进行交互的无状态会话 EJB,因此您需要有 WebSphere Application Server V5.1 运行时的实例。为了进行演示,我们将实际使用 WebSphere Studio Application Developer V5.1.2(以下简称 Application Developer) 与其内置的 WebSphere Test Environment (WTE)。Application Developer 向您提供了集成开发环境(IDE)用于开发和测试 EJB,并且 WTE 是 WebSphere Application Server 的一个单服务器沙箱(sandbox)实例。
您需要在客户端工作站上安装 WebSphere Application Server Pluggable Application Client。我在运行 Application Developer 和 WTE 的同一台计算机上安装了 Pluggable Application Client。典型设置如下所示:
图 1. WebSphere Application Server Pluggable Application Client 使用 Sun JRE 与 WebSphere Application Server 的实例进行交互
如上面的图表所示,客户端应用程序使用 Internet Inter-Orb Protocol(IIOP)上的远程方法调用(Remote Method Invocation,RMI)来与应用服务器进行交互。
您必须安装 Pluggable Application Client 客户端和应用程序服务器的相同版本。在我们的范例中,Application Developer 中的 WTE 是 WebSphere Application Server V5.1 的一个实例。Application Client 与 CD 上标有 “Application Clients”的 WebSphere Application Server Enterprise Edition 捆绑。它只可以用于 Windows ®。
为了安装 Pluggable Application Client,要启动 Application Clients CD 上的安装程序并且选择自定义安装。当被要求选择所要安装的功能部件时,选择 Pluggable Application Client,如下所示:
图 2. 选择 Pluggable Application Client 作为要安装的功能部件
在安装过程中,为了组装位于客户端程序安装目录的 bin 目录下的批处理文件
setupclient.bat,用户需要输入目标 WebSphere Application Server 的主机名。如果目标服务器改变,您可以进行修改。由于测试服务器和 Pluggable Application Client 在同一台机器上,那么可以输入主机名 localhost 和端口号 2809(WebSphere Application Server V5 的缺省监听端口号):
图 3. 指定目标 WebSphere Application Server 的信息
在进行下一步前需要对 setupclient.bat 文件进行一点改动。目录名中的空格会引发一些问题,所以把这行:
set JAVA_JRE=C:\Program Files\Java\j2re1.4.2_05 改为:
set JAVA_JRE=C:\Progra~1\Java\j2re1.4.2_05
关于 EJB 的介绍
为了演示 WebSphere Application Server Pluggable Application Client 与 WebSphere Application Server 资源的交互能力,我们需要有可用来交互的资源。如果您使用 J2EE 技术和 Sun JRE 客户端,那么就需要与 EJB 进行交互,所以我们将用 Pluggable Application Client 与名为 Converter 的无状态会话 EJB 进行交互。
您可以下载与本文相关的范例代码,它包含了两个通过 EJB 远程接口公开的业务方法。这两个方法名为 celsiusToFahrenheit 和 fahrenheitToCelsius,它们严格按照其名称的含义并利用下面的公式进行工作:
Celsius = (Fahrenheit - 32) * 5/9
Fahrenheit = Celsius * 9/5 + 32
下面的代码展示了以上两个公式被整合为 EJB 的两个方法:
public float fahrenheitToCelsius(float fahrenheit)
{
float celsius = (fahrenheit - 32) * 5/9;
return celsius;
}
public float celsiusToFahrenheit(float celsius)
{
float fahrenheit = celsius * 9/5 + 32;
return fahrenheit;
}
|
如果您正在使用 Application Developer,那么您也许想用 IBM Universal Test Client 来确保 Converter EJB 运行正常,如下所示:
图 4. 使用 IBM Universal Test Client 来检验 Converter EJB
如果您使用的是 WebSphere Application Server,而不是 Application Developer WTE ,那么继续进行并将 EAR 部署到应用服务器。
定位 EJB
Converter bean 有一个 JNDI 名称叫
ejb/com/ibm/ConverterHome。如果用户不熟悉这里的部署,那么想弄清楚目标服务器的 JNDI 树是很困难的。为避免这种问题,Application Client 捆绑了一个名为 dumpnamespace 的实用程序(在 Application Client 的 bin 目录下),我们可以用它来观测使用 JNDI 服务器注册的资源。如下所示,可以看到我们的 EJB 在命名空间中有它的 ConverterHome:
图 5. 使用 dumpnamespace 实用程序来定位 Converter EJB 的 JNDI 名称
由于我们在与 EJB 进行交互时要用到 JNDI,那么就应该注意 EJB home 的全限定 JNDI 名称。使用 Pluggable Application Client,用户就必须使用 EJB home 的全限名(参阅下面一节
Life is a bit harder with the Pluggable Application Client)。
准备与 EJB 进行交互的客户端
既然 Pluggable Application Client 已经安装好了,运行
setupclient.bat 准备与 WebSphere Application Server 进行交互。用于与 EJB 进行交互的 Java 类范例可以在
下载代码范例 中找到,并且包含了一个
main 方法。如下文所述,与任何 EJB 客户端一样,我们通过从调用字符串中收集关于目标 WebSphere Application Server 实例的配置信息,从而创建初始上下文。在建立初始上下文后,用 JNDI 查询字符串从上下文中查找 EJB home :
cell/nodes/localhost/servers/server1/ejb/com/ibm/ConverterHome
我们得到的对象可转换为 EJB home 对象,并且可以从这个对象创建一个 Converter bean 实例。在 Converter bean 上可以调用我们公开的远程方法。范例代码演示了
fahrenheitToCelsius 方法的使用。
%JAVA_HOME%/bin/java -Xbootclasspath/p:%WAS_BOOTCLASSPATH%
-classpath <classpath JARs>
-Djava.ext.dirs=%WAS_EXT_DIRS% -Djava.naming.provider.url=iiop://localhost
-Djava.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory
%SERVER_ROOT% %CLIENTSAS% <class containing main method>
|
以上指令必须在同一行中。参数输入后,将会执行范例代码:
%JAVA_HOME%/bin/java -Xbootclasspath/p:%WAS_BOOTCLASSPATH%
-classpath c:\client\clientstubs.jar;c:\client\client.jar
-Djava.ext.dirs=%WAS_EXT_DIRS% -Djava.naming.provider.url=iiop://localhost
-Djava.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory
%SERVER_ROOT% %CLIENTSAS% Client
|
JAR 文件
clientstubs.jar 包含了需要与存储在应用服务器中的远程 EJB 框架交互的客户端代理存根。文件
client.jar 包含了
Client 类,该类用来调用公开的 EJB 方法。用户应该了解如下所示的由 Pluggable Application Client 公开的 EJB 远程方法的调用:
图 6. 使用 Pluggable Application Client 代码调用 WebSphere Application Server 上的 EJB 远程方法
使用 Pluggable Application Client 会有一些难度
在使用 J2EE 应用程序客户端时(与瘦客户端程序和 Pluggable Application Client 相反),用户可以使用在客户应用程序部署描述符中定义的别名或简称执行 JNDI 查找。瘦应用程序客户端和 Pluggable Application Clients 不是这种情况,在这里客户端必须提供位于应用服务器的 JNDI 资源的全限定位置。如前面介绍的,dumpnamespace 实用程序使得找出对象的 JNDI 全限定位置变得很容易。
结束语
本文演示了 WebSphere Application Server Pluggable Application Client 是怎样使用 Sun JRE 来与 WebSphere Application Server 上的资源进行交互的。Pluggable Application Client 允许插入 Sun JRE,并且由于许多企业都使用 Sun JRE,那么能与 WebSphere Application Server 上的对象进行交互就成了一个很重要的优势。
下载 | 名字 | 大小 | 下载方法 |
|---|
| pluggable.zip | 84 KB |
FTP | HTTP |
参考资料
关于作者  | |  |
Kulvir Singh Bhogal 是 IBM 顾问,他设计并实现了美国客户站点上的 J2EE 中央式解决方案。您可以通过
kbhogal@us.ibm.com 与 Kulvir 联系。
|
对本文的评价
|