Java 瘦客户机

Java™ 瘦客户机是一种 JavaPlatform, Standard Edition (Java SE) 模式,可使用应用程序客户端安装或 WebSphere® Application Server 安装的运行环境。 Java 瘦客户机运行时环境提供全功能 Java SE 客户机应用程序所需的支持,用于对象解析,安全性,可靠性可用性和可维护性 (RAS) 以及其他服务。 但是, Java 瘦客户机不支持提供对这些服务的轻松访问的客户机容器。

Java 瘦客户机有时称为 Java 瘦应用程序客户机

Java 瘦客户机旨在支持那些希望使用全功能 Java SE 客户机应用程序编程环境的用户使用提供的 IBM® JRE ,而不需要在客户机上使用 Java Platform, Enterprise Edition (Java EE) 平台的开销。

Java 瘦客户机不会对客户机应用程序可能需要的任何服务执行初始化。 例如,由客户机应用程序通过 CosNaming 或 JNDI API 初始化命名服务。

Java 瘦客户机不支持对企业 Bean 和本地资源使用逻辑名 (nicknames)。 当客户机应用程序解析企业 Bean 的引用 (使用 Java 命名和目录接口 (JNDI) 或 CosNaming) 时,应用程序必须知道名称服务器的位置以及将引用绑定到名称空间时使用的标准名称。 客户机应用程序为本地资源解析引用时,它无法通过 JNDI 查询解析到资源。 相反,客户机应用程序必须使用相应的 API (例如, JDBC 或 Java 消息服务 (JMS)) 显式创建与资源的连接。 如果企业 Bean 或资源的位置发生变化,那么瘦客户机应用程序还必须更改放置在 lookup() 语句上的值。

Java 瘦客户机运行时环境支持 Java SE 客户机应用程序访问远程企业 Bean ,并为各种企业 Bean 服务提供实现。 客户机应用程序还可以使用 Java 瘦客户机运行时环境来访问 CORBA 对象和基于 CORBA 的服务。

Java 瘦客户机使用 RMI-IIOP 协议,这使客户机应用程序能够访问企业 Bean 引用和 CORBA 对象引用。 使用此协议也允许客户机应用程序使用任何受支持的 CORBA 服务。 使用 RMI-IIOP 协议以及 CORBA 服务的易访问性,可帮助您开发需要访问企业 Bean 引用和 CORBA 对象引用的客户机应用程序。

如果您选择在同一个客户机应用程序中同时使用企业 Bean 和 CORBA 编程模型,那么需要了解这些编程模型之间的差异,从而管理好这两个环境。 例如,要解析名称空间中的对象,CORBA 编程模型需要 CORBA CosNaming 名称服务。 企业 Bean 编程模型需要 JNDI 名称服务。 客户机应用程序必须初始化并正确管理这两个命名服务。

企业 Bean 模型还有另一个差异,JNDI 实现为其初始化对象请求代理 (ORB);客户机应用程序并不知道 ORB 存在。 但是, CORBA 模型需要客户机应用程序通过 ORB.init() 静态方法显式初始化 ORB。
避免麻烦: CORBA 模型不允许工作负载管理 (WLM) 功能和集群故障转移。 使用带有 JNDI 的企业 Bean 模型来访问集群环境中的对象。

Java 瘦应用程序客户机提供了一个批处理命令,您可以使用该命令来设置 CLASSPATH 和 JAVA_HOME 环境变量以启用 Java 瘦应用程序客户机运行时。

避免麻烦: 在包含 Java 瘦应用程序客户机的环境中运行时,客户机可能会突然迂到有关目标集群的集群成员的端口信息已过时的情况。 当所有集群成员都具有动态端口并且在没有请求被发送的某个时间段期间重新启动时最常发生此情况。 处于此状态的客户机进程将最终尝试路由到 Node Agent 以检索集群成员的新端口数据,然后使用该新端口数据来路由回集群成员。

如果发生的任何问题阻止客户机与 Node Agent 通信,或者阻止新端口数据在集群成员与 Node Agent 之间传播,那么在客户机上可能发生请求失败。 在一些情况下,这些故障是暂时的。 在其他情况下,您需要重新启动一个或多个进程以解决故障。

要解决在这些情况下可能发生的客户机路由问题,可在集群成员上配置静态端口。 使用静态端口时,在客户机进程获取有关集群成员的信息时端口数据不会更改。 即使集群成员重新启动,或在进程之间发生通信或数据传播问题,客户机保留的端口数据将仍然有效。 这一应对措施不一定能够解决底层通信或数据传播问题,但是会消除意外或不平衡的路由决策症状。

避免麻烦: 某些将 IBM ORB 类与 Oracle JRE 一起使用的瘦客户机应用程序可能由于某些类装入顺序问题而无法正常工作。 将文件 com.ibm.ws.orb.jar 添加到已背书的 dirs 目录中。 确保只有 com.ibm.ws.orb.jar文件位于 endorsed-dirs 目录中。 所有其他 thin-client-jar 文件都必须位于 endorsed-dirs 目录外部。 当所有瘦客户机 JAR 文件都位于 endorsed-dirs 目录中时发生的异常错误类型:
[ERROR] sun/io/MalformedInputException java.lang.NoClassDefFoundError: sun/io/MalformedInputException at com.ibm.rmi.iiop.CDRReader.getTcsCConverter(CDRReader.java:451) at com.ibm.rmi.iiop.CDRReader.readStringOrIndirection(CDRReader.java:532)
...... 
In Java (Oracle and IBM JRE), the default endorsed dirs directory is located in: <JAVA_HOME>\jre\lib\endorsed 
You can change the default of endorsed-dirs by using the parameter: -Djava.endorsed.dirs=<<Path to endorsed dir>>