【问题标题】:java.sql.SQLException: The url cannot be null [Multi modules App]java.sql.SQLException: url 不能为空 [多模块应用]
【发布时间】:2022-02-01 11:09:50
【问题描述】:

我想使用 oauth2 服务器访问我的网络应用程序。

身份验证顺利通过,我被重定向到我的网络应用程序。

但问题是当我尝试从我的数据库中加载数据时,我得到了这个

例外:

    janv. 31, 2017 1:16:07 PM org.apache.tomcat.jdbc.pool.PooledConnection connectUsingDriver
    AVERTISSEMENT: Not loading a JDBC driver as driverClassName property is null.
    janv. 31, 2017 1:16:07 PM org.apache.tomcat.jdbc.pool.ConnectionPool init
    GRAVE: Unable to create initial connections of pool.
    java.sql.SQLException: The url cannot be null

谁能帮帮我。

编辑:

我有一个单独的配置模块,用于设置我的数据库连接。我将此模块添加为我的网络应用程序中的依赖项。

我的 application.properties 文件

# DataSource configuration
datasource.host=localhost
datasource.name=my-db
datasource.port=5432

datasource.username=my-user
datasource.password=my-password

datasource.url=jdbc:postgresql://${datasource.host}:${datasource.port}/${datasource.name}
datasource.driver.class.name=org.postgresql.Driver

我的配置类(我正在使用类似 ORM 的 myBatis)

@Configuration
@MapperScan(basePackages = {"com.package.mapper"})
@ComponentScan(basePackages = {"com.package.repository"})
public class MyBatisConfig {

  @Value("${datasource.driver.class.name}")
  private String dbDriverClassName;

  @Value("${datasource.url}")
  private String dbUrl;

  @Value("${datasource.username}")
  private String dbUsername;

  @Value("${datasource.password}")
  private String dbPassword;

  @Bean
  public DataSource getDataSource() {
    return DataSourceBuilder
        .create()
        .url(dbUrl)
        .driverClassName(dbDriverClassName)
        .username(dbUsername)
        .password(dbPassword)
        .build();
  }

  @Bean
  public SqlSessionFactory sqlSessionFactory() throws Exception {
    SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
    sessionFactory.setConfigLocation(new ClassPathResource("META-INF/spring/mybatis-config.xml"));
    sessionFactory.setDataSource(getDataSource());
    return sessionFactory.getObject();
  }

  @Bean
  public DataSourceTransactionManager transactionManager() {
    return new DataSourceTransactionManager(getDataSource());
  }
}

【问题讨论】:

  • 你的连接池的配置是什么(包括连接URL字符串)?
  • 能否请您发布您正在初始化数据源/连接的java代码?
  • @JayaramPradhan 是的,我编辑了我的帖子
  • @TheGuide:如果你要调试,你看到dbUrl 的值是多少等等。可能@Value 注释没有注入属性文件中的值。
  • @JayaramPradhan,你是对的,dbUrl 的值为 null

标签: java spring connection-pooling mybatis oauth2


【解决方案1】:

我认为您必须在配置文件中设置数据库连接。 因为,从您发布的异常中,我可以看到您没有加载适用于 JDBC DriverManager 的驱动程序和访问数据库的 URL。

"driverClassName" value="oracle.jdbc.OracleDriver" 
"url" value="jdbc:oracle:thin:@localhost:1521:xe"
"username" value="user"
"password" value="password"

这是我所说的一个简单示例。如果我错了,请使用您的数据库连接配置编辑您的帖子。

【讨论】:

    猜你喜欢
    • 2018-09-11
    • 1970-01-01
    • 2020-12-13
    • 2021-08-09
    • 2021-11-04
    • 1970-01-01
    • 2019-02-24
    • 2015-10-08
    • 2016-06-26
    相关资源
    最近更新 更多