簡體   English   中英

OSGi上的PostgreSQL連接器

[英]PostgreSQL connector on OSGi

我正在使用Karaf開發OSGi應用程序。

此應用程序使用Hibernate 4.3連接到postgresql數據庫。

當我使用hibernate默認連接池時,我的應用程序工作,但JBoss建議不要在prod系統上使用它。 所以我正在嘗試使用c3p0連接池。

我使用以下捆綁包:

<bundle wrap="yes">hibernate-jpa-2.1-api-1.0.0.Final</bundle>
<bundle wrap="no">hibernate-core-4.3.7.Final</bundle>       
<bundle wrap="no">hibernate-entitymanager-4.3.7.Final</bundle>
<bundle wrap="no">hibernate-c3p0-4.3.7.Final</bundle>
<bundle wrap="no">hibernate-envers-4.3.7.Final</bundle>
<bundle wrap="no">hibernate-osgi-4.3.7.Final</bundle>

為了使用c3p0,我還添加了必需的第三方庫:

<bundle wrap="yes">c3p0-0.9.2.1</bundle>

wrap選項設置為"yes"因為它是一個簡單的jar文件。

所有這些捆綁都由karaf正確加載。

現在我的問題是添加PostgreSQL驅動程序:我有postgresql-9.3-1102.jdbc41.jar ,它不是一個bundle(沒有manifest.mf文件)。

我試過了:

  • 將它添加到類路徑中
  • bundles.xml使用<bundle wrap="no">postgresql-9.3-1102.jdbc41.jar</bundle> bundles.xml
  • 使用本教程將其包裝在eclipse中
  • 將它變成一個由我的dao-layer包托管的片段

但沒有任何作用。 每次c3p0啟動連接池,當找到正確的驅動程序時,它會失敗並顯示以下消息:

java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getDriver(DriverManager.java:278)[:1.7.0_67]
    at com.mchange.v2.c3p0.DriverManagerDataSource.driver(DriverManagerDataSource.java:240)[98:wrap_file_D_container_karaf_bundles_c3p0-0.9.2.1.jar:0]
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146)[98:wrap_file_D_trunk_container_karaf_bundles_c3p0-0.9.2.1.jar:0]

尋找這種問題,我發現有兩個原因可能會增加:

  • hibernate.connection.url可能是錯的。 但那不是我的情況。 我多次檢查過它。
  • 未加載postgresql驅動程序

在OSGi環境中使用c3p0和hibernate有什么神奇的技巧嗎?

Postgresql現在提供OSGi兼容的驅動程序。 它可以從maven中心下載:mvn:org.postgresql / postgresql / 9.4-1203-jdbc41在Apache karaf中它可以安裝

feature:install pax-jdbc-postgresql

該bundle提供DataSourceFactory作為OSGi。 這可用於以編程方式創建DataSource。

使用service:list查看此DataSourceFactory的屬性。

另外,您可以使用pax-JDBC-config來創建使用配置數據源PAX-JDBC-配置 使用osgi.jdbc.driver.class=org.postgresql.Driver在配置中標識Postgresql驅動程序。 如果配置可以正確處理,那么將有一個類型為DataSource的服務,您可以在代碼中引用該服務。

我得到了一個使用derby和hibernate的完整示例,它應該很容易適應postgresql。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM