【发布时间】:2012-03-19 03:40:43
【问题描述】:
我有一个 Web 应用程序部署在多个物理实例上的负载平衡环境中。所有实例都与同一个数据库通信。
我有一个可以从 gui 触发的事务,我想确保是否同时请求此操作,无论是跨 VM 还是在同一 VM 上。只有一个事务成功或事务被序列化。
我正在使用 Hibernate 3.6、Spring 3.1 和 JPA2(包含 Hibernate 的 jar)。
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.SERIALIZABLE, rollbackFor = LockTimeoutException.class)
public boolean MY_OP(Boolean Flag) throws RuntimeException
这里列出了我的配置:
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="DB_UNIT_NAME" />
<property name="dataSource" ref="dataSource" />
<property name="jpaDialect">
<bean class="com.server.persistence.HibernateExtendedJpaDialect"/>
</property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true" />
<property name="generateDdl" value="true" />
<property name="databasePlatform" value="${dbConfig.dialect}" />
</bean>
</property>
</bean>
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
这会在负载平衡环境中实现跨多个 JVM 的隔离吗?我相信人们以前一定已经解决过这个问题,所以任何想法都会有所帮助。
编辑
这在单个 JVM/AS 上实现了隔离。我正在使用 JBoss AS 4.3.2(是的,我知道它很旧)。
【问题讨论】:
标签: spring hibernate jpa jvm distributed