Fazendo uns testes com os novos componentes para JPA do vraptor, bati em um ponto: No Persistence provider for EntityManager named default.
Para esse teste estou usando um ambiente não J2EE (tomcat) e o projeto é um war normal). Coloquei no web.xml os dados conforme indicado em http://vraptor.caelum.com.br/documentacao/componentes-utilitarios-opcionais/. Porém estou em dúvida se o persistence.xml deve ficar dentro de /META-INF do contexto web ou dentro de /classes/META-INF (como é o padrão em aplicações J2EE).
O META-INF que estou usando está no source folder. Usei assim por ser mais acostumado com J2EE. Estou usando Eclipse sim, Dynamic Web Project e rodando o Tomcat embeded.
Meu persistence está com o default. O engraçado é que se eu alterar o default para defaultXX ele dá o mesmo erro. A impressão que eu tenho é que ele não acha meu persistence.xml.
deve mesmo ficar dentro do META-INF do classes (vraptor nao interfere nisso), entao basta jogar o META-INF dentro do src que o eclipse copia tudo que nao é .java diretamente pro classes.
erros comuns quando ele nao acha o persistence:
o eclipse por motivo de erro no projeto nao esta copiando o XML para o WEB-INF/classes/META-INF (verifique pelo sistema de diretorios do seu sistema operacional)
se for um war, por via das duvidas descompacte-o para ver se o xml esta no local correto
ter digitado persistenSe em vez de persistenCe .xml
estar usando tags erradas, ja que o persistence.xml nao obriga declarar o xsd
O persistence.xml peguei de um projeto EJB meu, ou seja, não há erros.
Coloquei dentro do /src/META-INF conforme é no J2EE e você indicou.
O eclipse parece estar jogando tudo no lugar certo.
O que eu não tinha feito foi gerar um war. Gerei ele e está tudo certo também. Estou achando que é a falta de alguma lib. Meu nível de log está confuso pela minha quase nula experiência com o tomcat.
[quote=Duron Maniac]Eu já tive esse problema, com a mesma mensagem de erro. No meu caso, o que faltava era um JAR do Hibernate, no caso o hibernate-entitymanager.jar.
Dá uma checada nas dependências do seu framework ORM e vê se não faltou nada…
[/quote]
duron tem toda razao!!! o erro nao é o que estamos falando, ele nao esta encontrando é o provider, nao a definicao do xml!
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named default
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:56)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
at br.com.caelum.vraptor.util.jpa.EntityManagerFactoryCreator.create(EntityManagerFactoryCreator.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$
LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:297)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$
LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:250)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.post
ProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:144)
... 115 more
Estou usando o vraptor 3.2 e o provider que já vem built-in no vraptor.
Revisei os jars e não achei nada que pudesse estar faltando. Na verdade usei uma cópia de um mesmo projeto que tenho que usa vraptor + ejb. Porém como nesse aqui estou apenas fazendo testes estou sem um appserver, apenas tomcat, e inclui as libs do j2ee que não vem no tomcat.
[quote=Duron Maniac]Eu já tive esse problema, com a mesma mensagem de erro. No meu caso, o que faltava era um JAR do Hibernate, no caso o hibernate-entitymanager.jar.
Dá uma checada nas dependências do seu framework ORM e vê se não faltou nada…
T+[/quote]
:oops: Ooops. Poxa, impressionante como que no meio de tantos jars a gente pode esquecer de um jar tão básico. Pouz, cag**a minha, hahahahha.
Essa é fácil, garcia-jj. No meu caso pelo menos, baixei o Entity-Manager, copiei tudo que tava na pasta /lib, e esqueci de pegar o jar principal, que vem na raiz do .zip, hehehe
Pessoal, desculpa ressuscitar esse tópico mas é que estou com o mesmo problema que o amigo estava. Vi uma dica do Paulo Silveira falando sobre abrir o arquivo war do projeto e ver se o arquivo persistence.xml estava sendo jogado pra lá e no meu caso não está. A estrutura do projeto que uso é diferente, uso projeto Java Web com maven, primefaces, cdi e hibernate.
O problemão que estou enfrentando é quando mando persistir alguma coisa, que lança a exceção como se não tivesse configurado a unidade de persistência. Já tentei mudar a pasta META-INF (com o arquivo persistence.xml que fica dentro dela) para outros diretórios do projeto mas não adiantou, o caminho atual dela é: src/main/java/META-INF.
PS.: quando o arquivo war é gerado, abro ele para ver se dentro tem o arquivo persistence.xml e ele não está lá. Outra observação é que uso Netbeans.
Se alguém puder dar uma luz.
Este é o meu arquivo persistence.xml