Hibernate 4 + vraptor

Não é necessário fazer o que está no pull request. Se você rodar a classe PluginTest verá que o plugin funciona sem aquela linha.

Como eu te disse anteriormente, no teu projeto está sendo usado o plugin errado, pois veja no stacktrace o pacote que está sendo usado:

Além disso, você não deve injetar o SessionCreator, mas sim somente o Session do Hibernate 4.

[quote=garcia-jj]Não é necessário fazer o que está no pull request. Se você rodar a classe PluginTest verá que o plugin funciona sem aquela linha.

Como eu te disse anteriormente, no teu projeto está sendo usado o plugin errado, pois veja no stacktrace o pacote que está sendo usado:

Além disso, você não deve injetar o SessionCreator, mas sim somente o Session do Hibernate 4.[/quote]

Já arrumei o import que você falou.
Estou injetando diretamente a Session do Hibernate.

Mas ao tentar subir o aplicativo retorna o seguinte erro:

org.picocontainer.PicoLifecycleException: PicoLifecycleException: method 'public void br.com.caelum.vraptor.plugin.hibernate4.ServiceRegistryCreator.create()', instance 'br.com.caelum.vraptor.plugin.hibernate4.ServiceRegistryCreator@438346a3, java.lang.reflect.InvocationTargetException
	at org.picocontainer.lifecycle.JavaEE5LifecycleStrategy.doLifecycleMethod(JavaEE5LifecycleStrategy.java:75)
	at org.picocontainer.lifecycle.JavaEE5LifecycleStrategy.doLifecycleMethod(JavaEE5LifecycleStrategy.java:54)
	at org.picocontainer.lifecycle.JavaEE5LifecycleStrategy.start(JavaEE5LifecycleStrategy.java:41)
	at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.start(AbstractInjectionFactory.java:84)
	at org.picocontainer.behaviors.AbstractBehavior.start(AbstractBehavior.java:169)
	at org.picocontainer.behaviors.Stored$RealComponentLifecycle.start(Stored.java:132)
	at org.picocontainer.behaviors.Stored.start(Stored.java:110)
	at org.picocontainer.DefaultPicoContainer.potentiallyStartAdapter(DefaultPicoContainer.java:1005)
	at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:998)
	at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:756)
	at br.com.caelum.vraptor.ioc.pico.PicoProvider.start(PicoProvider.java:106)
	at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:108)
	at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:102)
	at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:273)
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)
	at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:98)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4562)
	at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5240)
	at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5235)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.picocontainer.lifecycle.JavaEE5LifecycleStrategy.doLifecycleMethod(JavaEE5LifecycleStrategy.java:69)
	... 24 more
Caused by: java.lang.NullPointerException
	at br.com.caelum.vraptor.plugin.hibernate4.ServiceRegistryCreator.create(ServiceRegistryCreator.java:53)
	... 29 more

Meu hibernate.config.xml está na pasta src/development e tenho um arquivo development.properties com a chave development_environment = true.

O que pode estar causando o erro acima?

Não deveria ser hibernate.cfg.xml?

É isso mesmo…só escrevi errado no post.

hibernate.cfg.xml

Não sei mais como tentar solucionar este erro.

Já adicionei no web.xml o trecho:

<context-param>  
 	<param-name>br.com.caelum.vraptor.packages</param-name>  
	<param-value>  
		br.com.caelum.vraptor.plugin.hibernate4
	</param-value>  
  </context-param>

Mas msm assim o erro persiste.

Fiz um teste aqui, e esse erro acontece quando o plugin não acha o hibernate.cfg.xml. Verifique se o teu está no local correto, se o environment está correto, etc…

Posteriormente podemos fazer um tratamento para ele ver se encontrou o arquivo correto, e mostrar uma mensagem de log mais amigável.

Abraço

Criei aqui um blank project que está funcionando, se você quiser para comparar com o seu, me avise que posso disponibilizar.

Basicamente atente para que o hibernate.cfg.xml esteja corretamente nos locais certos conforme o ambiente development/production, etc, conforme o environment. Caso você não queria usar o environment, coloque o hibernate.cfg.xml direto no raíz do classpath.

[quote=garcia-jj]Criei aqui um blank project que está funcionando, se você quiser para comparar com o seu, me avise que posso disponibilizar.

Basicamente atente para que o hibernate.cfg.xml esteja corretamente nos locais certos conforme o ambiente development/production, etc, conforme o environment. Caso você não queria usar o environment, coloque o hibernate.cfg.xml direto no raíz do classpath.[/quote]

Disponibiliza o teu blank project, por favor, pra eu dar uma olhada…

https://github.com/downloads/garcia-jj/vraptor-plugin-hibernate4/vraptor-hib4-apptest.zip

Garcia,

Meu projeto está na mesma estrutura que o seu e mesmo assim continua o erro de NullPointer.

Será que pode ser algum jar faltando?

Depende o que você diz com “a mesma estrutura”.

O NullPointerException é quando ele não acha o hibernate.cfg.xml. Se está dando este erro, é porque ele não está encontrando o arquivo. Verifique o local, veja se ele está sendo copiado corretamente para o WEB-INF/classes. Caso você estiver usando o environment verifique que você criou corretamente os diretórios para o ambiente development/production, etc.

Outra coisa, verifique as versões dos jars. Talvez você possa estar com algum jar do Hibernate 3 ao invés do 4. Compare com os da minha aplicação.

Use este jar aqui: https://github.com/downloads/garcia-jj/vraptor-plugin-hibernate4/vraptor-plugin-hibernate4-1.0.2-SNAPSHOT.jar

Nele é mostrado uma mensagem quando o hibernate.cfg.xml não é encontrado.