3.2.2.8. 修改运行在群集环境里的移植的 Seam 和 Hibernate 应用程序的持久化属性
如果您在移植 JPA 容器管理的应用程序,影响扩展持久化上下文序列化的属性会自动传递给容器。
然而,由于 Hibernate 的修改,如果移植的 Seam 或 Hibernate 应用程序在群集环境里运行,您可能会遇到序列化问题。您会看到类似于这样的错误日志消息:
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
要纠正这些错误,您需要修改配置文件里的属性。在多数情况下是
javax.ejb.EJBTransactionRolledbackException: JBAS010361: Failed to deserialize .... Caused by: java.io.InvalidObjectException: could not resolve session factory during session deserialization [uuid=8aa29e74373ce3a301373ce3a44b0000, name=null]
javax.ejb.EJBTransactionRolledbackException: JBAS010361: Failed to deserialize
....
Caused by: java.io.InvalidObjectException: could not resolve session factory during session deserialization [uuid=8aa29e74373ce3a301373ce3a44b0000, name=null]
persistence.xml 文件。对于原生的 Hibernate API 应用程序来说是 hibernate.cfg.xml 文件。
过程 3.15. 设置持久化属性以运行在群集环境里
- 设置
hibernate.session_factory_name为唯一的名字。这个名字必须在 JBoss EAP 实例里的所有应用程序部署里是唯一的。例如:<property name="hibernate.session_factory_name" value="jboss-seam-booking.ear_session_factory"/>
<property name="hibernate.session_factory_name" value="jboss-seam-booking.ear_session_factory"/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 设置
hibernate.ejb.entitymanager_factory_name为唯一的名字。这个名字必须在 JBoss EAP 实例里的所有应用程序部署里是唯一的。例如:<property name="hibernate.ejb.entitymanager_factory_name" value="seam-booking.ear_PersistenceUnitName"/>
<property name="hibernate.ejb.entitymanager_factory_name" value="seam-booking.ear_PersistenceUnitName"/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
关于 Hibernate JPA 持久化单元属性设置的更多信息,请参考 第 3.2.2.3 节 “持久化单元属性”。