将 JNDI 用于 WebSphere Application Server J2EE 瘦客户端应用程序
本文介绍了命名服务管理,并通过实例配置说明了如何在瘦客户端使用JNDI访问服务器端的EJB。
©IBM版权所有,2003 年。保留所有权利。
命 名服务管理一组命名空间,解析数据对象的名称绑定问题。Java命名和目录接口(Java™ Namingand Directory Interface,JNDI)是一组 API,它提供对命名和目录服务的访问。许多 Java 应用程序使用 JNDI 来定位资源,比如数据源和在 Java 2 企业版(Java 2 Enterprise Edition,J2EE)中注册的企业JavaBeans(Enterprise JavaBeans,EJB)。
IBM® Java 瘦客户端应用程序提供了一种轻量级的环境,能够通过 JNDI 从外部访问 J2EE 资源,使您能够免去维护客户端机器上的 J2EE 平台的开销。
|
在 这一部分,您将创建一个简单的无状态会话 Bean,在其中实现一个方法,并且把 EJB 部署到 WebSphere® Application Server 中。在本文后面将要创建一个远程瘦客户端应用程序,它将通过 JNDI 访问此 EJB 并且调用他的公开方法。
我 们将用 WebSphere Studio Application Developer V5.0(以下称为 ApplicationDeveloper)来完成这些工作。而只有与 WebSphere Application ServerV5 所提供的 Java Runtime Environment 一起使用,本文所描述的定位和调用远程对象的方法才会有效。
启动 Application Developer,然后创建一个 J2EE 企业应用程序项目:
- 选择 File => New Enterprise Application Project。
- 在 Enterprise Application Project Creation 窗口中,选择 Create J2EE 1.3 Enterprise Application project:
图1. 创建一个 J2EE 1.3 企业应用程序项目 - 单击 Next。
- 在 Enterprise Application Project Creation window 窗口中,将该项目命名为 Simple 。对于附加的模块项目,选择 EJB Module并且将该模块命名为 SimpleEJBModule :
图2. 为该企业应用程序项目创建一个 EJB 模块 - 单击 Finish。
在 Application Developer J2EE Hierarchy 视图中,展开 EJB Modules文件夹,以显示新创建的模块。将一个新的无状态会话 Bean 与此模块相关联:
- 右键单击 EJB Module => SimpleEJBModule,然后选择 New => Enterprise Bean。
- 在 Enterprise Bean Creation 窗口中,确认 SimpleEJBModule被选中:
图4. 创建一个与 SimpleEJBModule 相关联的企业 Bean - 单击 Next。
- 在 Create a 2.0 Enterprise Bean 窗口中,指定 Session bean为 bean 类型。同时指定 bean 名为 SimpleEJB ,指定缺省包为 com.ibm.simple :
图5. 指定 EJB 2.0 类型、bean 名和缺省包 - 单击 Next。
- 在 Enterprise Bean Details窗口中,请不要修改任何缺省设置。不过请注意 EJB 绑定名,后面我们将对其进行更详细的讨论:
图6. 为该 EJB 创建远程/本地接口 - 单击 Finish。
展开新创建的 EJB,以显示该 EJB 及其远程/本地接口。现在将方法添加到该 EJB:
- 双击 SimpleEJBBean来编辑 EJB 代码(参见图7)。在自动生成了 EJB 方法之后,添加下列方法:
public
String echoMe(String whatToEcho)
{
return
(
"I am echoing: " + whatToEcho);
}
图7. 编辑 SimpleEJBBeanechoMe() 方法使该 EJB能够回送一个给定的字符串。继续前进并保存该文件。现在,我们必须使远程调用者能调用这个新的 EJB 方法:
- 在 Outline 视图中,右键单击 echoMe()方法,然后选择 Enterprise Bean => Promote to Remote Interface:
图8. 将该方法升级为远程接口在将该方法升级为远程接口之后,重新生成部署和 RMIC 代码:
- 在J2EE Hierarchy视图中,右键单击 SimpleEJBModule,然后选择 Generate => Deploy and RMIC code:
图9. 生成部署代码和 RMIC 代码接下来,您需要将新创建的存根导出到一个 JAR 文件中。应用程序客户端需要该存根来与远程对象进行通信。
- 在 J2EE Navigator 视图中,展开 com.ibm.simple包,然后选择下列文件: _SimpleEJB_Stub.java、_SimpleEJBHome_Stub.java、SimpleEJB.java、SimpleEJBHome.java。单击鼠标右键,然后选择 Export:
图10. 导出生成的存根和 EJB 接口 - 在 Export 窗口中,选择 JAR file,然后单击 Next。
- 在 JAR Export 窗口中,输入该 JAR 文件的全路径和文件名:
图12. 定义要打包成 JAR 文件的资源
现在,我们将企业应用程序部署到 Application Developer 中的 WebSphere Application Server SingleServer Edition。请遵循下面的操作说明来创建和配置服务器环境:
- 在 J2EE Hierarchy 视图中,右键单击 Servers,然后选择 New => Server and Server Configuration。
- 在 Create a New Server and Server Configuration 窗口中,指定服务器名为 WAS5TestServer,指定服务器类型为 WebSphere version 5.0 TestEnvironment:
图14. 创建一个 WebSphere 版本 5.0 测试环境 - 单击 Next。
在 J2EE Hierarchy 视图中,展开 Server Configuration 文件夹,以显示您刚刚创建的 WebSphereApplication Server V5 Test Environment Server。下面部署该企业应用程序:
- 右键单击 WAS5TestServer服务器配置,然后选择 Add => Simple。
- 展开 EJB Modules文件夹,右键单击 SimpleEJBModule,然后选择 Run on Server。
|
现在我们需要准备外部环境,为此,你可以安装 WebSphere Application Server ApplicationClient V5.0(在 WebSphere Application Server V5.0 的安装 CD 上)。
安装完毕后,进入安装了 Application Client 的 bin 目录(缺省位置为 C:Program FilesWebSphereAppClientin )。在此目录中,您将看到 setupclient.bat 文件,它会准备我们的瘦客户端应用程序的运行环境。让我们更仔细地分析这个文件:
- 在您喜欢的编辑器中打开 setupClient.bat 文件。指定下列参数值(参见图17):
- WebSphere 允许有几个不同的客户端应用程序类型,包括可插入客户端、J2EE 客户端和 J2EE瘦客户端。本操作演示了 J2EE 瘦客户端。确保下列参数值存在: SETCLIENT_TYPE=J2EETHIN
- 缺省服务器名和端口号是必需的。缺省服务器名是安装企业应用程序的服务器的可访问主机名和IP地址。缺省服务器端口号是服务器的 ORB端口号。此操作将服务器和客户端都安装在同一台机器上(即您的本机)。
SET DEFAULTSERVERNAME=127.0.0.1
SET SERVERPORTNUMBER=2809
- 保存该文件。
图17. 修改 setupClient.bat 中的设置参数
- 打开命令窗口,然后运行 setupclient 批处理文件:
图18. 从命令行中运行 setupclient 批处理文件。
|
现在,我们准备从外部与我们的 EJB 进行交互。下面是客户端应用程序代码,您可以在本文所提供的档案文件中找到。
|
定位和调用我们的远程对象的代码是相当简单的。请注意 JNDI 名: cell/nodes/localhost/servers/server1/ejb/com/ibm/simple/SimpleEJBHome 。有两种方式可以获取此字符串。第一种方式是运行 WebSphereApplication Server Application Client 提供的 dumpnamespace 批处理文件:
- 从命令行中运行 dumpnamespace.bat 。定位与 SimpleEJBHome 相关联的 JNDI 名:
图19. dumpnamespace 展示了上下文中的所有对象
另一种方法是连接前缀字符串( cell/nodes/localhost/servers/server1/ ),它位于带有 EJB 绑定名( ejb/com/ibm/simple/SimpleEJBHome )的 Server Configuration(参见图20)中的范围字段。也可以在 Universal Test Client 中找到 JNDI 名。
图20. 可以在 WebSphere Server Configuration 中找到范围
将该文件保存为 ExternalCaller.java ,然后执行以下命令来编译该 Java 类:
Javac ?classpath ;C:progra~1websphereapplclientlibj2ee.jar ExternalCaller.java |
图21. 编译 ExternalCaller.java 应用程序
|
要执行我们的外部 Java 应用程序,请确保配置好了您的环境,然后使用以下表单中的 Java 命令来调用客户端应用程序:
%JAVA_HOME%/bin/java -Xbootclasspath/p:%WAS_BOOTCLASSPATH% |
对于此操作,使用以下命令。我们建议使用批处理文件来执行此过程--名为 go.bat 的批处理文件在项目 ZIP 文件中。
%JAVA_HOME%/bin/java -Xbootclasspath/p:%WAS_BOOTCLASSPATH% |
图22. 运行瘦客户端应用程序
|
利用 IBM Java 瘦客户端,外部应用程序客户端可以更容易地访问 J2EE 资源。其优点包括客户机上的环境准备方便和更小的使用痕迹。
如本文所示,在 WebSphere ApplicationServer V5 中使用一个简单 Java 应用程序来定位远程对象可能比较困难。不过本文我们是以 EJB 为例的,您可以用该方法来定位和获得其他对象,比如数据源。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-130618/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/374079/viewspace-130618/