2009-12-21 59 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