2
我有一個部署在多個物理實例的負載均衡環境中的Web應用程序。所有實例都與同一個數據庫進行通信。數據庫鎖定JPA2休眠春季多發防空火炮虛擬機
我可以從GUI觸發交易,我要確保,如果該操作同時要求,要麼翻過虛擬機或在同一VM。只有一個事務成功或事務序列化。
我使用Hibernate的3.6,3.1春季和JPA2(JAR含與Hibernate)。
@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的隔離?我相信人們以前肯定已經解決了這個問題,所以任何想法都會有幫助。
EDIT
這實現在單個JVM/AS隔離。我使用的是JBoss AS 4.3.2(是的,我知道它是舊的)。
我想,以確保它們在同一個JVM是否啓動/ AS或多個的同時,只有一個應該運行和其他人應該會失敗MY-交易沒有兩個實例。我對使用隔離級別很陌生,所以不確定這是否合適。但我認爲在發佈的問題中的解決方案似乎可以實現這一點,我可以告訴,我想知道這是解決此問題的正確方法。 – 2012-03-01 00:23:55
是的,但是請記住,在處理併發性時可能會遇到很多事務異常。用該隔離級別進行負載測試並檢查一切正常 – 2012-03-01 09:23:29