2009-12-21 6 views
1

J'ai une application sur Glassfish v2 (sur Mac OS 10.5.8 et Java 1.6) qui utilise JavaDB et Toplinks fourni avec le bundle Glassfish. Tout fonctionne bien.Migrer de JavaDB vers PostgreSQL et ne plus avoir accès à la base de données

J'ai installé PostgreSQL 8.4 et le pilote JDBC v4. Les deux serveurs Glassfish et Postgres fonctionnent sur localhost. À partir de Netbeans, je crée une connexion à une base de données sur le serveur Postgres, et cela fonctionne très bien, je peux créer et supprimer manuellement des tables.

Je crée un pool de connexion, une ressource et une unité de persistance pour cette connexion au serveur Posgres. Quand j'ai je l'déployer erreur suivant:

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 

Je l'ai lu avec Postgres 8.4, demande localhost sont acceptés par défaut, donc je n'ai rien changé postgres.conf.

Il me manque quelque chose, mais je ne vois pas quoi. Merci d'avance pour tout indice.

Tart

Répondre

2

Assurez-vous d'abord que MacOSX/GlassFish utilise vraiment la version Java spécifiée (test avec: java -version). Ensuite, effectuez les opérations suivantes:

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 

et

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

penser à changer le nom d'utilisateur , mot de passe, serveur, Port et base de données pour refléter votre configuration. Ensuite, testez la source de données en utilisant:

asadmin ping-connection-pool test-pool 

Si cela ne fonctionne pas, vous avez mal configuré votre source de données.

+0

La première phrase n'a aucun sens. JDBC4 nécessite Java SE 6, pas Java EE 6. Java EE 5 peut fonctionner parfaitement au-dessus de Java SE 6. Ce n'est pas le problème. – BalusC

+0

Merci. Le pilote était correct, mais créer le ConnectionPool directement sur le serveur JavaEE au lieu de le faire via Netbeans a fonctionné. Je ne suis pas sûr de ce que j'ai mal configuré le ConnectionPool via l'assistant dans Netbeans, mais au moins le problème est résolu: o) – Tart

+0

a corrigé la partie de la version du pilote JDBC, comme l'a souligné correctement BalusC. –

0

Je ne sais pas la pile, mais il semble que vous n'avez pas spécifié le nom de base de données dans la connexion. Voir http://jdbc.postgresql.org/documentation/84/connect.html pour une liste de paramètres que vous pouvez/devez définir sur la connexion.

+0

Je pense que la connexion est correcte, car je peux accéder manuellement à la base de données en l'utilisant. Il est défini de cette façon: Tart

Questions connexes