2010-06-02 8 views
2

У меня есть проект, который создается из нескольких пакетов OSGi. Один из них - это общий пакет баз данных, который определяет источник данных, который может использоваться во всем проекте. Определение пружинный боб этой услуги:Не удается найти Драйвер при использовании набора общих баз данных

<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> 

Теперь, при использовании этого DataSource будет другой пакет, мы получаем ошибку:

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

Я попытался следующие, чтобы добавить org.postgresql .Driver к DriverManager:

  1. конкретизированных пустой боб для этого драйвера в контексте пружинной, как это:
    <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

Ни одно из этих решений не кажется, чтобы помочь.

ответ

1

Я нашел решение или, по крайней мере, обходное решение. В своем резюме DAO я добавил следующее:

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

Это похоже на работу. Кто-нибудь знает, почему? Это не отличается от решения Class.forName.

0

«Нет подходящего драйвера» - это не то же самое, что «невозможно найти драйвер».

Это говорит о том, что класс драйвера JDBC был загружен, но синтаксис URL-адреса подключения неверен.

+0

URL-адрес генерируется PGPoolingDataSource, который находится в том же комплекте, что и драйвер. Так что это кажется мне маловероятным. Кроме того, отображаемый URL-адрес верен. Кроме того, когда я не добавляю драйвер везде, я получаю ту же ошибку. – Marc

+0

Не удается загрузить драйвер, вы получите ClassNotFoundException. Что-то еще происходит. – duffymo

Смежные вопросы