我遇到了一个问题,我真的不知道如何抓住猫尾巴(如果你把我开玩笑:o))
我有一个 webapp 在战争中,部署在 tomcat 中。战争包含 4 个罐子。4个jar有4个applicationContext,4个entityManager,4个TransactionManager。
像这样声明(更改数字 1..):
<bean id="entityManagerFactory1"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="dataSource1"
p:persistence-unit-name="com.xxxxxx.domain" >
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
p:databasePlatform="${ds1.dbdialect}" p:generate-ddl="false"
p:showSql="${ds1.showsql}" />
</property>
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
</property>
</bean>
<bean id="transactionManager1" class="org.springframework.orm.jpa.JpaTransactionManager"
p:entityManagerFactory-ref="entityManagerFactory1">
depends-on="entityManagerFactory1" name="transactionManager1"/>
<tx:annotation-driven transaction-manager="transactionManager1" />
上下文是这样加载的:
我的问题是,我发现当我使用 3 的 BO 时,事务以 2 的数据源打开。
此外,如果我坚持下去,我会收到以下信息:
AbstractSaveEventListener - 由于没有正在进行的交易而延迟身份插入
但是,如果我单独启动 jar 1(例如),一切正常。
非常感谢您的启发。