容器互操作性
容器互操作性描述不同版本的产品客户机和服务器能够成功协商本机 Enterprise JavaBeans finder 方法支持和 Java EE 一致性中的差异。
WebSphere Application Server V5 和 V5.0.1 中句柄格式的互操作性
在 WebSphere® Application Server V5 中,尝试将句柄存留到企业 Bean 和 EJBHome 的应用程序需要将 ObjectInputStream 归入子类。此操作是必需的,以便子类 ObjectInputStream 可利用上下文类装入器,解决企业 Bean 和 EJBHome 存根的类。
另外,在 WebSphere Application Server V5 中创建并存留的句柄仅处理具有未更改的远程接口的对象。如果更改远程接口,句柄不再有效,因为存根在句柄内序列化,而且如果远程接口更改,其串行版本 UID 更改。
此发行版引入了避免先前版本实施缺点的新句柄持久性机制。但是,如果句柄用于此 WebSphere Application Server 部署,那么您应该在应用此更新、将来的 WebSphere Application Server 修订包和 WebSphere Application Server V5 的 EJB 容器累积修订时考虑下列问题。
如果 WebSphere Application Server V5.0.1 系统遇到 WebSphere Application Server V5 存留的句柄或 home 句柄,那么可以读取和利用此句柄。另外,如果再次存留此句柄,那么会将它转换为 WebSphere Application Server V5.0.1 格式。除非应用了 PQ72184,否则 WebSphere Application Server V5 系统无法读取 WebSphere Application Server V5.0.1 格式。
当句柄在未处于 WebSphere Application Server V5.0.1 级别或更高级别的系统之间存留和共享时,将会出现问题。但是,V5 系统可通过调用从 V5.0.1 远程接收句柄,以在企业 Bean 上获取句柄或在 EJBHome 上获取 getHomeHandle。远程调用将成功,但是,将它存留到 V5 系统的任何尝试将具有关于 ObjectInputStream 的使用和远程接口中更改使已存留句柄失效的相同局限性。
当您的应用程序持久存储句柄,并与多个客户机或应用程序服务器共享此持久性时,请将 WebSphere Application Server V5.0.1 或 PQ72184 同时应用于客户机系统和服务器系统。这样做的失败会导致这些系统没有能力读取已升级系统存储的句柄数据。同样,WebSphere Application Server V5 所存储的句柄可强制已更新系统的应用程序仍将 ObjectInputStream 归入子类。使用 WebSphere Application Server Enterprise V5 调度程序和流程编排器的应用程序受到这些更改的影响。这些用户应该使用 V5.0.1 或 PQ72184 同时更新它们的 V5 系统。
如果应用程序将句柄存储在会话上下文中,或本地存储在同一系统的文件中,即不被不同系统上的其他应用程序共享,那么它们可能能够个别更新其系统,这样胜于一次全部。如果客户机容器和瘦客户机应用程序不共享已存留的句柄数据,那么它们也可以按需更新。但是,如果 home 接口或远程接口发生更改,那么在 WebSphere Application Server V5、V4.0.3 和更高版本(带有属性标志集)或 V3.5.7 和更高版本(带有属性标志集)中创建并存留的句柄将不可用。
如果任何 WebSphere Application Server V3.5.7 或 V4.0.3 和更高版本支持系统属性 com.ibm.websphere.container.portable 为 true,那么此服务器上对象的任何句柄都具有相同的互操作性局限性。另外,如果任何 WebSphere Application Server V3.5.7 和更高版本或 V4.0.3 应用程序存储从 WebSphere Application Server V5 或 V5.0.1 获取的句柄,那么在对远程接口进行更改后,在需要将 ObjectInputStream 归入子类并使用句柄方面存在相同的限制。
Http 会话和句柄的复制
如果您将句柄放入 Home 或 Enterprise Java Beans,或者放入您的应用程序的 Http 会话中的 EJB 或 EJBHome 引用,而且您使用 Http 会话复制时,那么需要注意此注意事项。如果您打算复制 V5.0.0 和 V5.0.1 或 5.0.2 机器的混合环境,那么您在允许 V5.0.1 或 5.0.2 服务器进入拓扑之前,首先应该将最新版本的 V5.0.0 容器累积紧急修订程序应用到 V5.0.0 机器。这样做的原因是 V5.0.0 服务器无法理解 V5.0.1 和 5.0.2 服务器上所使用的持久句柄格式。这类似于 V5.0.0 和 V5.0.1 或 5.0.2 系统尝试使用共享数据库的情况,如前面所述。但是在这种情况下,它是 Http 会话对象,而不是提供持久性的数据库。
自顶向下部署映射
由于进行了修正,Handle 对象的大小增加,以允许序列化和反序列化的发生,无需先前对 ObjectInputStream 定界子类等要求。包含 EJB 和 EJBHome 引用的对象自顶向下部署创建数据库表 ddl,其具有将包含 Handle 的 BITDATA 的 VARCHAR 的 1000 字节字段。这可能是您对象的 Handle 不满足 1000 字节的缺省字段,而且您可能需要将此值调整到更高的值。您可尝试增加 250 个字节,即 1250、1500 等。