Problema exemplo de persistência vraptor 4

Caros,

Estou seguindo a documentação do vraptor 4, porém não estou obtendo sucesso ao realizar um simples crud.

Segue o erro que esta sendo lançado:

SEVERE: Servlet.service() for servlet [default] in context with path [/vraptor-blank-project] threw exception [net.vidageek.mirror.exception.ReflectionProviderException: Could not invoke method adiciona] with root cause java.lang.NullPointerException at br.com.caelum.vraptor.dao.UsuarioDAO.adiciona(UsuarioDAO.java:13) at br.com.caelum.vraptor.controller.IndexController.adiciona(IndexController.java:40) at br.com.caelum.vraptor.controller.IndexController$Proxy$_$$_WeldClientProxy.adiciona(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:38) at net.vidageek.mirror.invoke.MethodHandlerByMethod.withArgs(MethodHandlerByMethod.java:54) at br.com.caelum.vraptor.observer.ExecuteMethod.execute(ExecuteMethod.java:87) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:93) at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:266) at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:253) at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:232) at org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:169) at org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:165) at org.jboss.weld.event.ObserverNotifier.notifyObservers(ObserverNotifier.java:119) at org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:112) at org.jboss.weld.event.EventImpl.fire(EventImpl.java:83) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:78) at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:75) at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor$Proxy$_$$_WeldClientProxy.intercept(Unknown Source) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:58) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83) at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:98) at br.com.caelum.vraptor.interceptor.FlashInterceptor$Proxy$_$$_WeldClientProxy.intercept(Unknown Source) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:58) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83) at br.com.caelum.vraptor.core.DefaultInterceptorStack.start(DefaultInterceptorStack.java:93) at br.com.caelum.vraptor.core.DefaultInterceptorStack$Proxy$_$$_WeldClientProxy.start(Unknown Source) at br.com.caelum.vraptor.observer.RequestHandlerObserver.handle(RequestHandlerObserver.java:86) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:93) at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:266) at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:253) at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:232) at org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:169) at org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:165) at org.jboss.weld.event.ObserverNotifier.notifyObservers(ObserverNotifier.java:119) at org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:112) at org.jboss.weld.event.EventImpl.fire(EventImpl.java:83) at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722)

Segue minhas classes:

CONTROLLER

[code]package br.com.caelum.vraptor.controller;

import javax.inject.Inject;

import br.com.caelum.vraptor.Controller;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.dao.UsuarioDAO;
import br.com.caelum.vraptor.entidade.USUARIO;

@Controller
public class IndexController {

private final Result result;
private final UsuarioDAO dao;

/**
 * @deprecated CDI eyes only
 */
@Deprecated
public IndexController() {
	this(null,null);
}

@Inject
public IndexController(Result result, UsuarioDAO dao) {
	this.result = result;
	this.dao = dao;
}

@Path("/index")
public void index() {
	result.include("variable", "VRaptor!");
}

@Post("/index/adiciona")
public void adiciona(USUARIO usuario){
	dao.adiciona(usuario);
	this.result.redirectTo(this).index();
}

}[/code]

DAO:

[code]package br.com.caelum.vraptor.dao;
import javax.enterprise.inject.Produces;
import javax.persistence.EntityManager;

import br.com.caelum.vraptor.entidade.USUARIO;

public class UsuarioDAO {

@Produces
private EntityManager em;

public void adiciona(USUARIO u){
	em.persist(u);
}

}
[/code]

Entidade:

[code]package br.com.caelum.vraptor.entidade;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class USUARIO {

@Id
@Column(name="NM_USU")
private String nmUsu;

public String getNmUsu() {
	return nmUsu;
}

public void setNmUsu(String nmUsu) {
	this.nmUsu = nmUsu;
}

}
[/code]

JSP:

[code]<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>
<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt”%>

<html>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8”>
<title>VRaptor Blank Project</title>
<c:set var=“ctx”>${pageContext.request.contextPath}</c:set>
</head>
<body>
It works!! ${variable} ${linkTo[IndexController].index}

&lt;form action="${ctx}/index/adiciona" method="post"&gt;
	&lt;input type="text" name="usuario.nmUsu" value="${usuario.nmUsu}"/&gt;
	&lt;input type="submit" value="Enviar" /&gt;
&lt;/form&gt;

</body>
</html>[/code]

PERSISTENCE.XML:

[code]<?xml version=“1.0” encoding=“UTF-8”?>
<persistence version="2.1"
xmlns=“http://xmlns.jcp.org/xml/ns/persistence” xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=“http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd”>
<persistence-unit name=“default”>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:com/env/jdbc/default</jta-data-source>
<class>br.com.caelum.vraptor.entidade.USUARIO</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<shared-cache-mode>NONE</shared-cache-mode>
<properties>
<!-- Properties for Hibernate -->
<property name=“hibernate.show_sql” value=“true” />
<property name=“hibernate.format_sql” value=“true” />
<property name=“hibernate.dialect” value=“org.hibernate.dialect.Oracle10gDialect” />
<property name="hibernate.connection.characterEncoding"
value=“UTF-8” />
<property name="hibernate.transaction.factory_class"
value=“org.hibernate.transaction.JDBCTransactionFactory” />
<property name=“hibernate.cache.provider_class” value=“org.hibernate.cache.HashtableCacheProvider” />

	&lt;/properties&gt;
&lt;/persistence-unit&gt;

</persistence>
[/code]

Agradeço se algum puder ajudar

Olá IgorDutra, está usando ${ctx} pra que? Se não estiver usando isso, tente tirar isso e veja se funciona.

Opa rafadelnero, o ${ctx} apenas o contextPath.
Consegui resolver o problema, pois como meu persistence.xml estava faltando configurar o context.xml do servidor TOMCAT.
Após isso consegui resolver o problema, :slight_smile: