【问题标题】:HA-JDBC Integration with Spring Boot JPAHA-JDBC 与 Spring Boot JPA 的集成
【发布时间】:2020-02-12 12:55:30
【问题描述】:

我正在尝试将 HA-JDBC 与 Spring Boot JPA 集成。任何人都可以帮助将 Ha-Jdbc 与 Spring Boot JPA 集成,

import java.util.Arrays;

import javax.naming.NamingException;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import net.sf.hajdbc.SimpleDatabaseClusterConfigurationFactory;
import net.sf.hajdbc.cache.simple.SimpleDatabaseMetaDataCacheFactory;
import net.sf.hajdbc.dialect.oracle.OracleDialectFactory;
import net.sf.hajdbc.distributed.jgroups.JGroupsCommandDispatcherFactory;
import net.sf.hajdbc.sql.DataSource;
import net.sf.hajdbc.sql.DataSourceDatabase;
import net.sf.hajdbc.sql.DataSourceDatabaseClusterConfiguration;
import net.sf.hajdbc.state.simple.SimpleStateManagerFactory;

@Configuration
public class HAJdbcConfig
{
    @Bean
    public DataSourceDatabase db1()
    {
        DataSourceDatabase db1 = new DataSourceDatabase();
        db1.setId("db1");
        db1.setLocation("database url");
        db1.setUser("username");
        db1.setPassword("password");
        return db1;
    }

    @Bean
    public DataSourceDatabase db2()
    {
        DataSourceDatabase db1 = new DataSourceDatabase();
        db1.setId("db1");
        db1.setLocation("database url");
        db1.setUser("username");
        db1.setPassword("password");
        return db1;
    }


    @Bean
    public DataSourceDatabaseClusterConfiguration config() throws NamingException
    {
        DataSourceDatabaseClusterConfiguration config = new DataSourceDatabaseClusterConfiguration();
        config.setDatabases(Arrays.asList(db1(), db2()));
        config.setDialectFactory(new OracleDialectFactory());
        config.setDatabaseMetaDataCacheFactory(new SimpleDatabaseMetaDataCacheFactory());
        SimpleStateManagerFactory state = new SimpleStateManagerFactory();
        config.setStateManagerFactory(state);
        config.setDispatcherFactory(new JGroupsCommandDispatcherFactory());
        return config;
    }

    @Bean
    public javax.sql.DataSource primaryDataSource() throws NamingException
    {
        DataSource ds = new DataSource();
        ds.setCluster("mycluster");
        //ds.setConfig("ha-jdbc-mycluster.xml");
        ds.setConfigurationFactory(
                new SimpleDatabaseClusterConfigurationFactory<javax.sql.DataSource, DataSourceDatabase>(config()));

        return ds;

    }

}
Error retrieving database meta-data; nested exception is org.springframework.jdbc.support.MetaDataAccessException: Could not get Connection for extracting meta-data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Failed to perform naming lookup of jdbc:oracle:thin:@//localhost:1521/orcl

【问题讨论】:

  • 运行时类路径上是否有 Oracle JDBC 驱动程序?
  • setLocation 用于 JNDI 名称而不是 JDBC url。要么在 JNDI 中预注册数据源(我怀疑你想要),要么改用 DriverDatabase

标签: java spring-boot spring-data-jpa


【解决方案1】:

我在 HA-JDBC 方面没有太多经验,但也许我可以让您步入正轨。您从不声明驱动程序并且查找正在尝试创建 Oracle URL 连接 (dbc:oracle:thin:@//localhost:1521/orcl)。 我希望它能让你知道去哪里看。

【讨论】:

    【解决方案2】:

    我认为您的 jdbc 网址有问题。

    在你的情况下格式是jdbc:oracle:&lt;drivertype&gt;:@&lt;database&gt;

    jdbc:oracle:thin:@localhost:1521/orcl
    

    在主机之前没有//

    【讨论】:

    • 我曾尝试使用 "dbc:oracle:thin:@localhost:1521/orcl" 但它不起作用。
    【解决方案3】:

    您可以使用数据库的服务名称吗?简单的连接 URL 是 jdbc:oracle:thin:@myhost:1521/myorcldbservicename。此外,您还可以查看示例 SpringBootApp 作为示例。

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2017-09-22
      • 1970-01-01
      • 2018-09-30
      • 2019-08-11
      • 2018-12-21
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多