带有spring问题的Openjpa切片
我一直在尝试用spring boot配置openjpa切片。配置共享如下:带有spring问题的Openjpa切片,spring,jakarta-ee,openjpa,Spring,Jakarta Ee,Openjpa,我一直在尝试用spring boot配置openjpa切片。配置共享如下: @Configuration public class DatasourceConfiguration extends JpaBaseConfiguration{ @Bean(name = "slice1") public DataSource dataSource() { JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
@Configuration
public class DatasourceConfiguration extends JpaBaseConfiguration{
@Bean(name = "slice1")
public DataSource dataSource() {
JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
DataSource dataSource = dataSourceLookup.getDataSource("java:/MysqlXADS");
return dataSource;
}
@Bean(name = "slice2")
public DataSource dataSource2() {
JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
DataSource dataSource = dataSourceLookup.getDataSource("java:/MysqlXADS2");
return dataSource;
}
@Override
protected Map<String, Object> getVendorProperties() {
HashMap<String, Object> map = new HashMap<String, Object>();
return map;
}
public LocalContainerEntityManagerFactoryBean entityManagerFactory(
EntityManagerFactoryBuilder builder) {
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("openjpa.BrokerFactory", "slice");
properties.put("openjpa.slice.Names", "One, Two");
properties.put("openjpa.slice.Master", "Two");
properties.put("openjpa.slice.Lenient", "false");
properties.put("openjpa.slice.ConnectionDriverName", "com.mysql.jdbc.Driver");
properties.put("openjpa.slice.One.ConnectionFactoryName", "java:/MysqlXADS");
properties.put("openjpa.slice.Two.ConnectionFactoryName", "java:/MysqlXADS2");
properties.put("openjpa.slice.DistributionPolicy", "com.services.sample.configuration.UserDistributionPolicy");
properties.put("openjpa.slice.TransactionPolicy" , "xa");
properties.put("openjpa.TransactionMode" , "managed");
properties.put("openjpa.ConnectionFactoryMode", "managed");
properties.put("openjpa.jdbc.DBDictionary", "mysql");
properties.put("openjpa.Log","DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=TRACE");
return builder
.dataSource(dataSource()).jta(true)
.properties(properties)
.packages("com.services.sample.domain.entity")
.persistenceUnit("sample")
.build();
}
@Override
protected AbstractJpaVendorAdapter createJpaVendorAdapter() {
OpenJpaVendorAdapter jpaVendorAdapter = new OpenJpaVendorAdapter();
jpaVendorAdapter.setShowSql(true);
return jpaVendorAdapter;
}
public PlatformTransactionManager transactionManager(@Qualifier("entityManagerFactory")EntityManagerFactory entityManagerFactory){
JtaTransactionManager transactionManager = new JtaTransactionManager();
return transactionManager;
}
@配置
公共类数据源配置扩展了JpaBaseConfiguration{
@Bean(name=“slice1”)
公共数据源数据源(){
JndiDataSourceLookup dataSourceLookup=新的JndiDataSourceLookup();
DataSource DataSource=dataSourceLookup.getDataSource(“java:/MysqlXADS”);
返回数据源;
}
@Bean(name=“slice2”)
公共数据源数据源2(){
JndiDataSourceLookup dataSourceLookup=新的JndiDataSourceLookup();
DataSource DataSource=dataSourceLookup.getDataSource(“java:/MysqlXADS2”);
返回数据源;
}
@凌驾
受保护的映射getVendorProperties(){
HashMap=newHashMap();
返回图;
}
公共LocalContainerEntityManagerFactoryBean entityManagerFactory(
EntityManagerFactoryBuilder(建筑商){
映射属性=新的HashMap();
properties.put(“openjpa.BrokerFactory”、“slice”);
properties.put(“openjpa.slice.Names”,“一,二”);
properties.put(“openjpa.slice.Master”,“Two”);
properties.put(“openjpa.slice.lencient”、“false”);
properties.put(“openjpa.slice.ConnectionDriverName”、“com.mysql.jdbc.Driver”);
properties.put(“openjpa.slice.One.ConnectionFactoryName”,“java:/MysqlXADS”);
properties.put(“openjpa.slice.Two.ConnectionFactoryName”,“java:/MysqlXADS2”);
properties.put(“openjpa.slice.DistributionPolicy”、“com.services.sample.configuration.UserDistributionPolicy”);
properties.put(“openjpa.slice.TransactionPolicy”、“xa”);
properties.put(“openjpa.TransactionMode”、“managed”);
properties.put(“openjpa.ConnectionFactoryMode”、“managed”);
properties.put(“openjpa.jdbc.DBDictionary”、“mysql”);
put(“openjpa.Log”,“DefaultLevel=WARN,Runtime=INFO,Tool=INFO,SQL=TRACE”);
返回生成器
.dataSource(dataSource()).jta(true)
.物业(物业)
.packages(“com.services.sample.domain.entity”)
.持久性单位(“样本”)
.build();
}
@凌驾
受保护的AbstractJpaVendorAdapter createJpaVendorAdapter(){
OpenJpaVendorAdapter jpaVendorAdapter=新的OpenJpaVendorAdapter();
jpaVendorAdapter.setShowSql(true);
返回JPA适配器;
}
公共平台transactionManager transactionManager(@Qualifier(“entityManagerFactory”)entityManagerFactory entityManagerFactory){
JtaTransactionManager transactionManager=新的JtaTransactionManager();
返回事务管理器;
}
}
persistence.xml
<persistence-unit name="sample" transaction-type="JTA" >
<description>generated-persistence-unit</description>
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<class> ... </class>
</persistence-unit>
生成持久化单元
org.apache.openjpa.persistence.PersistenceProviderImpl
...
我已经用wildfly服务器10配置了这个。两个xa数据源都指向不同的数据库。然而,当应用程序启动并且我执行一个查询时,它只是从两次传递到构建器的数据源中获取数据。似乎我的切片配置有问题。不确定这种情况下出现了什么问题。您在哪里找到了关于如何实现JpaBaseConfiguration的文档?你让它工作了吗?