2009-12-21 69 views
1

我在Glassfish v2上(在Mac OS 10.5.8和Java 1.6上)有一個應用程序,它使用Glassfish包附帶的JavaDB和Toplinks。一切正常。從JavaDB遷移到PostgreSQL並且不能再訪問數據庫

我已經安裝了PostgreSQL 8.4和JDBC v4驅動程序。 Glassfish和Postgres服務器都在本地主機上運行。在Netbeans中,我創建了一個到Postgres服務器上的數據庫的連接,並且它工作正常,我可以手動創建和刪除表。

我爲此連接創建一個連接池,資源和持久性單元到Posgres服務器。當我部署我有以下錯誤:

ADM1041:Sent the event to instance: 
    [ResourceDeployEvent -- reference-added jdbc/jdbc/MyDatasource] 
CORE5004: Resource Deployed: [jdbc:jdbc/MyDatasource]. 
TopLink, version: Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008)) 
Server: unknown 
RAR5038:Unexpected exception while creating resource for pool MyConnectionPool. 
Exception : Connection could not be allocated because: 
    FATAL: database "null" does not exist 

,我讀了在Postgres 8.4,本地主機的請求都被默認接受,所以我並沒有改變在postgres.conf什麼。

我錯過了什麼,但我不能看到什麼。 在此先感謝您的任何提示。

回答

2

首先確保MacOSX/GlassFish確實使用指定的Java版本(測試:java -version)。然後,請嘗試以下操作:

asadmin create-jdbc-connection-pool 
    --datasourceclassname org.postgresql.ds.PGSimpleDataSource 
    --restype javax.sql.DataSource --property portNumber=5432:password=secret:user=postgres:serverName=localhost:databaseName=postgres 
    test-pool 

asadmin create-jdbc-resource --connectionpoolid test-pool jdbc/Postgres 

記得要改變用戶名密碼服務器端口數據庫,以反映您的設置。然後測試數據源使用:

asadmin ping-connection-pool test-pool 

如果這不起作用,那麼你已經錯過配置你的數據源。

+0

第一句話沒有意義。 JDBC4需要Java SE 6,而不是Java EE 6. Java EE 5可以在Java SE 6之上完美運行。這不是問題。 – BalusC 2009-12-21 13:35:30

+0

謝謝。該驅動程序實際上是正確的,但直接在JavaEE服務器中創建ConnectionPool,而不是通過Netbeans進行工作。我不確定我在NetBeans中通過嚮導設置了ConnectionPool,但至少可以解決問題:o) – Tart 2009-12-21 14:49:18

+0

修正了JDBC驅動程序版本部分,正如BalusC正確指出的那樣。 – 2009-12-21 15:23:03

0

我不知道堆棧,但它聽起來像是你沒有指定在連接數據庫名稱。有關您可以/應該在連接上設置的參數列表,請參見http://jdbc.postgresql.org/documentation/84/connect.html

+0

我認爲連接是好的,因爲我可以使用它手動訪問數據庫。它是這樣定義的: Tart 2009-12-21 11:12:37