Tratar exception com vRaptor 3

Com esse Interceptor que repliquei acima, as mensagens de erro ficam muito ruins para retornar para um usuário.
Implementei de uma outra forma e gostaria da opinião do pessoal.

Na minha DAO, tenho o seguinte método.

public boolean salva(Produto produto) { Transaction tx = sessao.beginTransaction(); try { sessao.persist(produto); tx.commit(); } catch (HibernateException e) { tx.rollback(); return false; } return true; }

A Controller que utiliza o método acima utiliza um esquema mais ou menos assim.

public void adiciona(final Produto produto, List<UploadedFile> imagem) { ... final boolean save = dao.salva(produto); validador.checking(new Validations() {{ that(save == false, "Produto", "erro.produto.save"); }}); validador.onErrorForwardTo(ProdutosController.class).novo(); .... }

Claro, eu gostaria de utilizar o Inteceptor… Mas devido ao problema do post anterior não está sendo possível.

Obrigado novamente.

Mr_Arthur, você não precisa mais fazer isso. Se você usar o Vraptor 3.2 vocẽ pode usar o Exception Handler.

public void adiciona(final Produto produto, List<UploadedFile> imagem) { result.on(HibernateException.class).forwardTo(this).algumaCoisa(); if (true) { throw new HibernateException("teste"); } }

Assim sempre que der uma HibernateException o Vraptor irá fazer um forward para o método algumaCoisa. Na tela você recebe os seguintes atributos (padrão servlets):

javax.servlet.error.exception: a exception gerada javax.servlet.error.exception_type: classe da exception javax.servlet.error.message: mensagem de erro javax.servlet.error.request_uri: endereço da página que gerou o erro

Ou seja, na página você pode fazer algo assim para exibir a mensagem de erro:

Muito bom, obrigado Garcia.

Agora seguinte… Hoje eu inicio minhas transações por meio das sessões do hibernate que são injetadas nas minhas DAOs.
Se uma HibernateException vai ser lançada no método persist(), onde eu vou dar o rollback?

Valeu.

Resolvido.

Reposta tá no:
Site do VRaptor -> Menu Documentação -> Opção 11. Componentes Utilitários Opcionais.

Valeu.

[quote=garcia-jj]Mr_Arthur, você não precisa mais fazer isso. Se você usar o Vraptor 3.2 vocẽ pode usar o Exception Handler.

public void adiciona(final Produto produto, List<UploadedFile> imagem) { result.on(HibernateException.class).forwardTo(this).algumaCoisa(); if (true) { throw new HibernateException("teste"); } }
[/quote]

E sobre utilizar os hibernate providers do vraptor…
O commit() só vai acontecer quando passar denovo pelo HibernateTransactionInterceptor.
Como eu faço tratamento de redirecionamento para minhas páginas ou lógicas?

Obrigado pelas respostas.

[quote]E sobre utilizar os hibernate providers do vraptor…
O commit() só vai acontecer quando passar denovo pelo HibernateTransactionInterceptor.[/quote]

Isso é uma afirmação? Se sim está errado, pois o vraptor fará um commit sempre que a página for processada com sucesso.

É aquela velha história de não ler os docs. Em Result há um método chamado redirectTo.

não precisa tratar redirecionamentos, o commit vai acontecer sempre q der tudo certo

[quote=garcia-jj][quote]E sobre utilizar os hibernate providers do vraptor…
O commit() só vai acontecer quando passar denovo pelo HibernateTransactionInterceptor.[/quote]

Isso é uma afirmação? Se sim está errado, pois o vraptor fará um commit sempre que a página for processada com sucesso.

É aquela velha história de não ler os docs. Em Result há um método chamado redirectTo.[/quote]

Garcia, sobre o redirecionamento do Result, eu (acho que) sei como funciona. Eu sempre procuro ler a documentação antes de vir com uma dúvida… E desculpe pela afirmação que eu fiz errado, eu achei que funcionava assim. (depois vou ver se ponho o src do vraptor no meu eclipse)
Estava com uma dúvida sobre redirecionamento após acontecer um erro.
Eu estava usando um “result.on().redirectTo” para fazer o redirecionamento apartir de uma nova requisição do cliente e conseguir que minha url ficasse correta.
Porém o erro estava estourando na minha tela ainda…
Mudei para “forwardTo” e agora minha lógica é redirecionada corretamente e a jsp é exibida.
O problema é a url que fica como se tivesse passado no result.redirectTo do final do meu método.
É melhor eu mostrar o código já que eu não estou conseguindo me expressar direito com palavras. :frowning:

@Path("/produtos") public void adiciona(final Produto produto, List<UploadedFile> imagem) { result.on(Exception.class).redirectTo(ProdutosController.class).novo(); // exibe stacktrace no browser. se mudar para forwardTo lógica executa corretamente. ... dao.salva(produto); ... atribuiImagensAoProduto(produto, imagem); ... result.redirectTo(ProdutosController.class).lista(); // Se é feito um forwardTo no result.on() lá em cima, a url fica como se fosse essa lógica. }

Cara, desculpa qualquer incomodo…
Não quero ser taxado por essa “velha história” que você disse aí.

Valeu.

Sempre que tudo der certo em que momento? após a chamada do persist?

Valeu.

Mr_Arthur, acho que eu não havia entendido tua pergunta. Agora com a explicação entendi melhor. :thumbup:

Basicamente o Vraptor faz sempre o commit. Porém acontecendo erros ele fará um rollback, independente de você fazer redirect ou forward. E isso é interno, ou seja, você não precisa fazer intervenção alguma.

Para tratar os erros eu uso sempre o forward, pois assim eu mantenho os mesmos parametros para poder renderizar a tela corretamente. Se a sua preocupação é apenas com a URL que fica lá, acho que a URL é o menos importante, pois creio que ter sua tela renderizada corretamente é o mais importante.

a stacktrace que acontece é do que? da HibernateException ou da linha do result.on(…)?

o commit é executado sempre ao final da requisição, se não deu nenhuma exception

Garcia,

OK, um forward realmente se encaixa melhor.
Obrigado.

Mas ainda sobre a stacktrace do redirect…
Segue:

@Path("/produtos") public void adiciona(final Produto produto, List<UploadedFile> imagem) { result.on(Exception.class).redirectTo(ProdutosController.class).novo(); // REDIRECT ... dao.salva(produto); ... atribuiImagensAoProduto(produto, imagem); ... result.redirectTo(ProdutosController.class).lista(); }

public void salva(Produto produto) { if (true) { throw new HibernateException("teste"); } sessao.persist(produto); }

Stacktrace no browser:

org.hibernate.HibernateException: teste br.com.bsbmotos.dao.ProdutoDao.salva(ProdutoDao.java:27) br.com.bsbmotos.controller.ProdutosController.adiciona(ProdutosController.java:81) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:90) br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) br.com.caelum.vraptor.util.hibernate.HibernateTransactionInterceptor.intercept(HibernateTransactionInterceptor.java:45) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) br.com.caelum.vraptor.interceptor.multipart.CommonsUploadMultipartInterceptor.intercept(CommonsUploadMultipartInterceptor.java:102) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70) br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92) br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56) br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)

Log VRaptor apartir da chamada ao método adiciona.

15:58:49,750 DEBUG [ExecuteMethodInterceptor] Invoking ProdutosController.adiciona(Produto, List) 15:58:58,128 DEBUG [DefaultExceptionMapper] find for exception class org.hibernate.HibernateException 15:58:58,128 DEBUG [DefaultExceptionMapper] found exception mapping: class java.lang.Exception -> br.com.caelum.vraptor.core.ExceptionRecorder@7e17a4 15:58:58,128 DEBUG [ExceptionHandlerInterceptor] handling exception class org.hibernate.HibernateException 15:58:58,128 DEBUG [DefaultListableBeanFactory] Creating instance of bean 'defaultLogicResult' 15:58:58,130 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'objenesisProxifier' 15:58:58,131 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'defaultRouter' 15:58:58,133 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'httpServletRequestProvider' 15:58:58,134 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'httpServletResponseProvider' 15:58:58,135 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'br.com.caelum.vraptor.ioc.spring.SpringBasedContainer' 15:58:58,136 DEBUG [DefaultListableBeanFactory] Creating instance of bean 'defaultPathResolver' 15:58:58,138 DEBUG [DefaultListableBeanFactory] Creating instance of bean 'defaultFormatResolver' 15:58:58,139 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'httpServletRequestProvider' 15:58:58,144 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'defaultAcceptHeaderToFormat' 15:58:58,144 DEBUG [DefaultListableBeanFactory] Finished creating instance of bean 'defaultFormatResolver' 15:58:58,144 DEBUG [DefaultListableBeanFactory] Finished creating instance of bean 'defaultPathResolver' 15:58:58,145 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'defaultTypeNameExtractor' 15:58:58,146 DEBUG [DefaultListableBeanFactory] Finished creating instance of bean 'defaultLogicResult' 15:58:58,146 DEBUG [DefaultLogicResult ] redirecting to class ProdutosController 15:58:58,156 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for ProdutosController.novo() as [] 15:58:58,156 DEBUG [DefaultLogicResult ] redirecting to /bsbmotos/produtos/novo 15:58:58,156 DEBUG [CommonAnnotationBeanPostProcessor] Invoking destroy method on bean 'sessionCreator': public void br.com.caelum.vraptor.util.hibernate.SessionCreator.destroy() 15:58:58,156 DEBUG [VRaptor ] VRaptor ended the request

Isso aê, valeu.

acho que é por causa de uma linha no vraptor:

result.include("javax.servlet.error.status_code", 500);

qdo o servidor vê esse atributo já trata a requisição como sendo erro 500, por isso não funciona o redirect, só o forward

Mas uma vez eu por aqui.
Estou tendo problemas usando o Exception Handler… Não estou conseguindo ser redirecionado caso aconteça a exception e sou mandado pra tela servidor com stacktrace.
Minha classe Produto tem relacionamento @OneToOne unirecional com a classe Marca.
Quando eu vou deletar uma Marca, se existe algum produto que contenha essa marca uma exception é lançada.
Estou fazendo algo errado?

Segue o código e stacktrace:

[code]@Delete
@Path("/categorias/{id}")
public void remove(Integer id) {
result.on(Exception.class).forwardTo(MarcasController.class).lista(); // Exception.class para testes

Marca marca = dao.carrega(id);
dao.exclui(marca); // deletando marca que é apontada por algum produto.
result.redirectTo(MarcasController.class).lista();

}[/code]

15/10/2010 00:45:38 org.apache.catalina.core.StandardWrapperValve invoke GRAVE: Servlet.service() for servlet default threw exception org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:172) at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028) at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:366) at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137) at br.com.caelum.vraptor.util.hibernate.HibernateTransactionInterceptor.intercept(HibernateTransactionInterceptor.java:46) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70) at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92) at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56) at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) at java.lang.Thread.run(Unknown Source) Caused by: java.sql.BatchUpdateException: Entrada em lote 0 delete from tb_marca where id_marca=10 foi abortada. Chame getNextException para ver a causa. at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2530) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1317) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:350) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2592) at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268) ... 37 more

só pra testes, tire essa linha:

result.redirectTo(MarcasController.class).lista();

e crie o remove.jsp com qqer coisa

[quote=Lucas Cavalcanti]acho que é por causa de uma linha no vraptor:

result.include("javax.servlet.error.status_code", 500);

qdo o servidor vê esse atributo já trata a requisição como sendo erro 500, por isso não funciona o redirect, só o forward[/quote]

Vou fazer uns testes aqui. Se for mesmo esse o problema basta estender ExceptionHandlerInterceptor e sobrescrever reportException:

[code]@Component
@RequestScoped
public class CustomExceptionHandlerInterceptor
extends ExceptionHandlerInterceptor {

protected void reportException(Exception e) {
	Throwable rootCause = Throwables.getRootCause(e);

    // add error attributes compliance with servlet spec
    result.include("javax.servlet.error.exception", rootCause);
    result.include("javax.servlet.error.exception_type", rootCause.getClass());
    result.include("javax.servlet.error.message", rootCause.getMessage());
    result.include("javax.servlet.error.request_uri", request.getRequestURI());
}

}[/code]

Lucas, o comportamento foi o mesmo.

Garcia, fiz examente o o que você passou. Comportamento foi o mesmo também. (edit: usando o forwardTo)

Obrigado aê.

eu sei qual é o problema…

coloca isso no meio do método da lógica:

if (true) throw new RuntimeException("xx");

ele provavelmente vai fazer o redirecionamento corretamente…

o q acontece é q a exception da BatchUpdate só acontece no commit da transação, q está fora da lógica…

e a ordem em que o ExceptionHandlerInterceptor está registrado não suporta exceptions nos interceptors registrados pela sua aplicação =’(

Hmm, bem lembrado. Ou seja, pode ser feito também um flush no momento do update/insert/delete. Eu faço isso, mesmo usando EJB com JTA sem problemas, pois do contrário perco minhas validações do BeanValidator.

Utilizei o session.flush() após o session.delete().
Registrou exception antes de sair da minha lógica mas ainda não consegui usar o exception handler para redirecionar.

01:41:49,438 DEBUG [ExecuteMethodInterceptor] Invoking MarcasController.remove(Integer) 01:41:49,866 DEBUG [DefaultExceptionMapper] find for exception class org.hibernate.exception.ConstraintViolationException 01:41:49,866 DEBUG [DefaultExceptionMapper] found exception mapping: class java.lang.Exception -> br.com.caelum.vraptor.core.ExceptionRecorder@93432 01:41:49,868 DEBUG [ExceptionHandlerInterceptor] handling exception class org.hibernate.exception.ConstraintViolationException 01:41:49,875 DEBUG [VRaptorApplicationContext] Cache miss for interface br.com.caelum.vraptor.view.LogicResult 01:41:49,876 DEBUG [DefaultListableBeanFactory] Creating instance of bean 'defaultLogicResult' 01:41:49,878 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'objenesisProxifier' 01:41:49,878 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'defaultRouter' 01:41:49,879 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'httpServletRequestProvider' 01:41:49,880 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'httpServletResponseProvider' 01:41:49,881 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'br.com.caelum.vraptor.ioc.spring.SpringBasedContainer' 01:41:49,881 DEBUG [DefaultListableBeanFactory] Creating instance of bean 'defaultPathResolver' 01:41:49,882 DEBUG [DefaultListableBeanFactory] Creating instance of bean 'defaultFormatResolver' 01:41:49,883 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'httpServletRequestProvider' 01:41:49,883 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'defaultAcceptHeaderToFormat' 01:41:49,883 DEBUG [DefaultListableBeanFactory] Finished creating instance of bean 'defaultFormatResolver' 01:41:49,883 DEBUG [DefaultListableBeanFactory] Finished creating instance of bean 'defaultPathResolver' 01:41:49,884 DEBUG [DefaultListableBeanFactory] Returning cached instance of singleton bean 'defaultTypeNameExtractor' 01:41:49,884 DEBUG [DefaultListableBeanFactory] Autowiring by type from bean name 'defaultLogicResult' via constructor to bean named 'objenesisProxifier' 01:41:49,884 DEBUG [DefaultListableBeanFactory] Autowiring by type from bean name 'defaultLogicResult' via constructor to bean named 'defaultRouter' 01:41:49,884 DEBUG [DefaultListableBeanFactory] Autowiring by type from bean name 'defaultLogicResult' via constructor to bean named 'httpServletRequestProvider' 01:41:49,884 DEBUG [DefaultListableBeanFactory] Autowiring by type from bean name 'defaultLogicResult' via constructor to bean named 'httpServletResponseProvider' 01:41:49,885 DEBUG [DefaultListableBeanFactory] Autowiring by type from bean name 'defaultLogicResult' via constructor to bean named 'br.com.caelum.vraptor.ioc.spring.SpringBasedContainer' 01:41:49,885 DEBUG [DefaultListableBeanFactory] Autowiring by type from bean name 'defaultLogicResult' via constructor to bean named 'defaultPathResolver' 01:41:49,885 DEBUG [DefaultListableBeanFactory] Autowiring by type from bean name 'defaultLogicResult' via constructor to bean named 'defaultTypeNameExtractor' 01:41:49,891 DEBUG [DefaultListableBeanFactory] Finished creating instance of bean 'defaultLogicResult' 01:41:49,894 DEBUG [DefaultLogicResult ] Executing MarcasController.lista() 01:41:49,897 DEBUG [CommonAnnotationBeanPostProcessor] Invoking destroy method on bean 'sessionCreator': public void br.com.caelum.vraptor.util.hibernate.SessionCreator.destroy() 16/10/2010 01:41:49 org.apache.catalina.core.StandardWrapperValve invoke GRAVE: Servlet.service() for servlet default threw exception net.vidageek.mirror.exception.ReflectionProviderException: Could not invoke method lista at net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:45) at net.vidageek.mirror.invoke.MethodHandlerByMethod.withArgs(MethodHandlerByMethod.java:54) at br.com.caelum.vraptor.core.ExceptionRecorder.replay(ExceptionRecorder.java:81) at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.replay(ExceptionHandlerInterceptor.java:98) at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:90) at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.util.hibernate.HibernateTransactionInterceptor.intercept(HibernateTransactionInterceptor.java:45) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70) at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92) at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56) at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) at java.lang.Thread.run(Unknown Source) Caused by: br.com.caelum.vraptor.proxy.ProxyInvocationException: java.lang.reflect.InvocationTargetException at br.com.caelum.vraptor.view.DefaultLogicResult$1.intercept(DefaultLogicResult.java:95) at br.com.caelum.vraptor.proxy.AbstractCglibProxifier$2.intercept(AbstractCglibProxifier.java:56) at br.com.bsbmotos.controller.MarcasController$$EnhancerByCGLIB$$e1e69da9.lista(<generated>) 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 net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:38) ... 46 more Caused by: java.lang.reflect.InvocationTargetException 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 br.com.caelum.vraptor.view.DefaultLogicResult$1.intercept(DefaultLogicResult.java:82) ... 53 more Caused by: org.hibernate.exception.GenericJDBCException: could not execute query at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.loader.Loader.doList(Loader.java:2235) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129) at org.hibernate.loader.Loader.list(Loader.java:2124) at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:118) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1597) at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306) at br.com.bsbmotos.dao.MarcaDao.listarTudo(MarcaDao.java:24) at br.com.bsbmotos.controller.MarcasController.lista(MarcasController.java:45) ... 58 more

Muito obrigado.