JEE+ JPA + Postgres

Oi gente!!!

Estou com o seguinte erro:


com.sun.enterprise.deployment.backend.IASDeploymentException: Deployment Error –
Internal Exception: java.sql.SQLException: Error in allocating a connection.
Cause: Class name is wrong or classpath is not set for : org.postgresql.ds.PGSimpleDataSourceError Code: 0


Estava fazendo a persistencia com JPA (toplink) mas não estava usando a injeção de dependencia.
Estava conseguindo acessar o BD, inserir, atualizar… Usava o Tomcat 5.5.17 e o J2EE1.4

Então atualizei meu netbeans e meu projeto para usar como Server o Java System Applicatino server 9 e o Java EE 5.

Atualizei meu Persistence. xml para usar JTA, a lib para ja pegar o Top Link que veio nele e passei a definir meu Manager assim

@PersistenceContext EntityManager manager;

Meu log esta assim:


[i][TopLink Config]: 2006.12.15 02:26:49.212–ServerSession(32462331)–The alias name for the entity class [class vo.Dados] is being defaulted to: Dados.

[TopLink Info]: 2006.12.15 02:26:49.218–ServerSession(32462331)–TopLink, version: Oracle TopLink Essentials - 2006.8 (Build 060830)

RAR5099 : Wrong class name or classpath for Datasource Object : {0}
java.lang.ClassNotFoundException: org.postgresql.ds.PGSimpleDataSource

RAR5038:Unexpected exception while creating resource

RAR5117 : Failed to obtain/create connection. Reason : Class name is wrong or classpath is not set for : org.postgresql.ds.PGSimpleDataSource

RAR5114 : Error allocating connection : [Error in allocating a connection. Cause: Class name is wrong or classpath is not set for : org.postgresql.ds.PGSimpleDataSource]
Exception occured in J2EEC Phase

com.sun.enterprise.deployment.backend.IASDeploymentException: Deployment Error –
Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: Class name is wrong or classpath is not set for :
org.postgresql.ds.PGSimpleDataSourceError Code: 0
…[/i]


[size=20]
Algem pode me ajudar???[/size]

Obs//: Atualizei os Drives do Postgres.
Testei com esses 3: 8.2-504 JDBC 2EE, 8.2-504 JDBC 3 e 8.2-504 JDBC 4

Descobri esse erro!!!
Era pq no meu persistence.xml tinha essa linha

Foi só tirar

Mas estou com outro erro.
[size=20][color=darkred]O meu EntityManager manager esta nulo!!![[/color][/size]

HELP!!!

Estou fazendo assim:

[code]public class ClasseDAO{

@PersistenceContext (unitName="WebApplication1PU")
EntityManager manager
.....
public boolean inserir(Classe vo ) throws PersistenceException {
    try {
        EntityTransaction tx = manager.getTransaction();
        .....[/code]

E o Persistence.xml esta assim:

<?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="WebApplication1PU" transaction-type="JTA"> <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider> <jta-data-source>Conexao2</jta-data-source> <properties> <!--<property name="toplink.ddl-generation" value="create-tables"/>--> </properties> </persistence-unit> </persistence>

cadê a url, usuário, senha e driver do banco no persistence.xml?

Mas isso ja não esta nesse Conexão2???

Não esta?
Pq ele pede para eu escolher uma conexão nao hora que vou criar esse aquivo Persistence.

Mesmo fazendo assim:

<?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="WebApplication1PU" transaction-type="RESOURCE_LOCAL"> <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider> <class>vo.Dados</class> <properties> <property name="toplink.jdbc.url" value="jdbc:postgresql://servidor.lalala.lalala.br:5432/Banco"/> <property name="toplink.jdbc.user" value="usuario"/> <property name="toplink.jdbc.driver" value="org.postgresql.Driver"/> <property name="toplink.jdbc.password" value="senha"/> </properties> </persistence-unit> </persistence>

O Entity Manager continua nulo

Acabei de ver num outro topico que a pessoa deveria usar um servlet que funcionaria.
Realmente funcionou e não tinha nada haver com o Persistence.xml

Estou engatinhando nesse mundo Java e gostaria de entender qual a diferença de estar usando o Anotation+Servlet :

@PersistenceUnit(unitName="WebApplicationPU") private EntityManagerFactory emf;

ou estar criando em um singleton:

public static EntityManagerFactory getFactory (){ if (emf == null) { emf = Persistence.createEntityManagerFactory("WebApplicationPU"); } return emf; }

???

Porque a crianção no ManagerFactory como servlet parace mais facil olhando só os explemos acima mas tem que criar um monte de código para o servlet… Então qual é a grande vantagem de eu usar-lo??? :roll:

Obrigada!!!

como vc resolveu seu problema amigo?