代码之家  ›  专栏  ›  技术社区  ›  Marc

使用通用数据库包时找不到驱动程序

  •  2
  • Marc  · 技术社区  · 14 年前

    我有一个项目,是建立在几个OSGi捆绑包。其中之一是通用数据库包,它定义了可在整个项目中使用的数据源。此服务的SpringBean定义为:

    <osgi:service interface="javax.sql.DataSource">
        <bean class="org.postgresql.ds.PGPoolingDataSource">
            <property name="databaseName" value="xxx" />
            <property name="serverName" value="xxx" />
            <property name="user" value="xxx" />
            <property name="password" value="xxx" />
        </bean>
    </osgi:service>
    

    现在,当使用此数据源是另一个包时,我们得到一个错误:

    No suitable driver found for jdbc:postgresql://localhost/xxx
    

    1. 在spring上下文中为该驱动程序实例化了一个空bean,如下所示:
      <bean class="org.postgresql.Driver" />

    2. 在其中一个类中静态实例化驱动程序,如下所示:
      Class.forName("org.postgresql.Driver");

      答。在添加 org.postgresql DynamicImport-Package .

    3. META-INF\services\java.sql.Driver 与内容 org.postgresql.Driver

    这些解决方案似乎都无济于事。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Marc    14 年前

    我找到了解决办法,或者至少找到了解决办法。在我的抽象DAO中,我添加了以下内容:

    static {
      try {
        DriverManager.registerDriver(new org.postgresql.Driver());
      } catch(SQLException ex) {
        LogFactory.getLogger(AbstractDAO.class).error("Could not load Driver", ex);
      }
    }
    

    这似乎确实管用。有人知道为什么吗?它和 Class.forName 解决方案。

        2
  •  0
  •   duffymo    14 年前

    这向我表明JDBC驱动程序类已加载,但连接URL的语法不正确。