Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有spring问题的Openjpa切片_Spring_Jakarta Ee_Openjpa - Fatal编程技术网

带有spring问题的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();

我一直在尝试用spring boot配置openjpa切片。配置共享如下:

@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的文档?你让它工作了吗?