SCDF服务器双数据库连接错误

时间:2020-08-05 15:37:08

标签: spring-batch spring-cloud-dataflow spring-cloud-task

在春季批处理任务中,我配置了两个数据源,一个用于oracle,另一个用于h2。 H2我用于批处理和任务执行表,而oracle是用于批处理的真实数据。我能够从ide成功运行任务,但是当我从SCDF服务器运行它时,出现以下错误

Caused by: java.sql.SQLException: Unable to start the Universal Connection Pool: oracle.ucp.UniversalConnectionPoolException: Cannot get Connection from Datasource: org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-200]

问题是,为什么还要连接到H2进行oracle db连接?

以下是我的数据库配置:

 @Bean(name = "OracleUniversalConnectionPool")
        public DataSource secondaryDataSource() {
            PoolDataSource pds = null;
            try {
                pds = PoolDataSourceFactory.getPoolDataSource();

                pds.setConnectionFactoryClassName(driverClassName);
                pds.setURL(url);
                pds.setUser(username);
                pds.setPassword(password);
                pds.setMinPoolSize(Integer.valueOf(minPoolSize));
                pds.setInitialPoolSize(10);
                pds.setMaxPoolSize(Integer.valueOf(maxPoolSize));

            } catch (SQLException ea) {
                 log.error("Error connecting to the database: ", ea.getMessage());
            }

            return pds;
        }
        
       @Bean(name = "batchDataSource")
       @Primary
        public DataSource dataSource() throws SQLException {
            final SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
            dataSource.setDriver(new org.h2.Driver());
            dataSource.setUrl("jdbc:h2:tcp://localhost:19092/mem:dataflow");
            dataSource.setUsername("sa");
            dataSource.setPassword("");
            return dataSource;
        }

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,问题是我正在使用它来设置oracle db的值。

spring.datasource.url: ******
spring.datasource.username: ******

它在IDE上运行良好,但是当我在SCDF服务器上运行它时,默认情况下它被覆盖用于SCDF服务器数据库连接的属性。所以我只是将连接属性更新为:

spring.datasource.oracle.url: ******
spring.datasource.oracle.username: ******

现在它按预期运行。