Erro com transação br.com.caelum.vraptor.InterceptionException: exception raised,

328 views
Skip to first unread message

Daniele LeĂŁo Evangelista

unread,
Sep 5, 2013, 10:41:37 AM9/5/13
to caelum-...@googlegroups.com
Pessoal, to com um probleminha ... 

Eu estou utilizando vraptor para fazer o controle de transação do meu sistema. Eu tenho uma classe com o seguinte código

Cpf cCpf = new Cpf();
List<Nickname> nicknames = nicknameDAO.findByNickname(nickname);
cCpf.setCdCPF(numberCpf);
cCpf.setNicknames(nicknames);

cpfDAO.update(cCpf);

No meu primeiro DAO (nicknameDAO) ele funciona, porém quando ele vai executar o segundo,cpfDAO, ele dá o seguinte erro:

br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: <openjpa-2.2.2-r422266:1468616 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: null
FailedObject: br.com.indra.igia.dao.database.po.Cpf@70705d2a [java.lang.String]
at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:96)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:96)
at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:67)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:183)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: <openjpa-2.2.2-r422266:1468616 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: null
FailedObject: br.com.indra.igia.dao.database.po.Cpf@70705d2a [java.lang.String]
at org.apache.openjpa.kernel.BrokerImpl.attach(BrokerImpl.java:3494)
at org.apache.openjpa.kernel.DelegatingBroker.attach(DelegatingBroker.java:1214)
at org.apache.openjpa.persistence.EntityManagerImpl.merge(EntityManagerImpl.java:878)
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.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:365)
at $Proxy56.merge(Unknown Source)
at br.com.indra.igia.dao.database.AbstractDAO.update(AbstractDAO.java:45)
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.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy60.update(Unknown Source)
at br.com.indra.igia.controller.RequestController.loadCPF(RequestController.java:85)
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.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)
... 71 more
Caused by: java.lang.NullPointerException
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.apache.openjpa.enhance.RedefinitionHelper$1.invoke(RedefinitionHelper.java:231)
at $Proxy73.iterator(Unknown Source)
at org.apache.openjpa.util.ProxyCollections.addAll(ProxyCollections.java:154)
at org.apache.openjpa.util.java$util$ArrayList$proxy.addAll(Unknown Source)
at org.apache.openjpa.kernel.AttachStrategy.copyCollection(AttachStrategy.java:397)
at org.apache.openjpa.kernel.AttachStrategy.attachCollection(AttachStrategy.java:357)
at org.apache.openjpa.kernel.AttachStrategy.attachField(AttachStrategy.java:248)
at org.apache.openjpa.kernel.VersionAttachStrategy.attach(VersionAttachStrategy.java:155)
at org.apache.openjpa.kernel.AttachManager.attach(AttachManager.java:252)
at org.apache.openjpa.kernel.AttachStrategy.attachCollection(AttachStrategy.java:369)
at org.apache.openjpa.kernel.AttachStrategy.attachField(AttachStrategy.java:248)
at org.apache.openjpa.kernel.VersionAttachStrategy.attach(VersionAttachStrategy.java:155)
at org.apache.openjpa.kernel.AttachManager.attach(AttachManager.java:252)
at org.apache.openjpa.kernel.AttachManager.attach(AttachManager.java:105)
at org.apache.openjpa.kernel.BrokerImpl.attach(BrokerImpl.java:3487)
... 97 more


Alguém sabe o porque desse problema?

Lucas Cavalcanti

unread,
Sep 5, 2013, 12:38:55 PM9/5/13
to caelum-vraptor
parece ter algo de errado com o CPF que vc está passando para o update...

qual método de update vc tá usando dentro do dao?


--
You received this message because you are subscribed to the Google Groups "caelum-vraptor" group.
To unsubscribe from this group and stop receiving emails from it, send an email to caelum-vrapto...@googlegroups.com.
To post to this group, send email to caelum-...@googlegroups.com.
Visit this group at http://groups.google.com/group/caelum-vraptor.
For more options, visit https://groups.google.com/groups/opt_out.

Daniele LeĂŁo Evangelista

unread,
Sep 5, 2013, 1:30:50 PM9/5/13
to caelum-...@googlegroups.com
Lucas eu to usando o entitymanager.merge para o update.

Lucas Cavalcanti

unread,
Sep 5, 2013, 1:48:05 PM9/5/13
to caelum-vraptor
tenta comentar uma dessas duas linhas e ver se o erro continua acontecendo:

cCpf.setCdCPF(numberCpf);
cCpf.setNicknames(nicknames);


vc tá usando um @Id com @GeneratedValue, ou o id é o CdCPF?

Daniele LeĂŁo Evangelista

unread,
Sep 5, 2013, 2:02:10 PM9/5/13
to caelum-...@googlegroups.com
Se eu comento o setNicknames aí vai normal =/ ... não sei se tem algo a ver com o mapeamento que faço...

Lucas Cavalcanti

unread,
Sep 5, 2013, 2:06:55 PM9/5/13
to caelum-vraptor
como está o mapeamento que vc fez?


Daniele LeĂŁo Evangelista

unread,
Sep 5, 2013, 2:12:49 PM9/5/13
to caelum-...@googlegroups.com
@ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE })
@JoinTable(
 name = "ASS_NICKNAME_CPF",
 joinColumns = @JoinColumn(name = "ID_CPF"), inverseJoinColumns = @JoinColumn(name = "ID_NICKNAME"))
private List<Nickname> nicknames;

@ManyToMany(fetch = FetchType.LAZY, mappedBy="nicknames")
private List<Cpf> cpfs;

O estranho Lucas, é que se eu tento buscar o nickname dentro do DAO do CPF, aí funciona... Por exemplo, essa linha 
List<Nickname> nicknames = nicknameDAO.findByNickname(nickname);
Se eu fizer
List<Nickname> nicknames = cpfDAO.findByNickname(nickname); aĂ­ funciona ... Mas se estiver em DAO diferente, nĂŁo funciona.

Lucas Cavalcanti

unread,
Sep 5, 2013, 2:13:41 PM9/5/13
to caelum-vraptor
qual é a query que está no findByNickname?

Daniele LeĂŁo Evangelista

unread,
Sep 5, 2013, 2:15:52 PM9/5/13
to caelum-...@googlegroups.com
public List<Nickname> findByNickname(String nickname) {
Query query = getEntityManager().createQuery(
"SELECT n FROM Nickname n WHERE n.nickname = :nickname");
query.setParameter("nickname", nickname); 
List<Nickname> nicknames = (List<Nickname>) query.getResultList();

return nicknames;

Lucas Cavalcanti

unread,
Sep 5, 2013, 2:17:39 PM9/5/13
to caelum-vraptor
o seu getEntityManager() abre um entityManager novo?

se sim, deve ser esse o problema... vc tá usando um objeto managed de um EM e jogando em outro...

Se vc usa o vraptor-jpa pra cuidar disso, receba o EntityManager no construtor.

Daniele LeĂŁo Evangelista

unread,
Sep 5, 2013, 2:26:50 PM9/5/13
to caelum-...@googlegroups.com
Então Lucas, eu tenho a minha classe AbstractDAO,  ai eu declaro o EntityManager

protected EntityManager entityManager;

Ai eu tenho o seguinte método

@SuppressWarnings("unchecked")
@PostConstruct
public void init() {
setClass((Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]);
}

E aĂ­ tenho o getEntityManager

public EntityManager getEntityManager() {
return entityManager;
}

É dessa forma que está estruturado agora, quando vc diz pra colocar o Entitymanager no construtor, é o construtor do abstractDao?

Lucas Cavalcanti

unread,
Sep 5, 2013, 2:35:53 PM9/5/13
to caelum-vraptor
isso, ou receber direto no atributo:

@Inject
private EntityManager entityManager;

O importante Ă© vocĂŞ nĂŁo abrir o entityManager na mĂŁo.

Daniele LeĂŁo Evangelista

unread,
Sep 5, 2013, 2:43:34 PM9/5/13
to caelum-...@googlegroups.com
Lucas, esqueci de falar de um detalhe (me perdoe) , nos meus DAOs eu tenho um método setEntityManager que está assim

@PersistenceContext(type=PersistenceContextType.EXTENDED)
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}

ai no meu AbstractDAO eu tenho um método abstract que está assim

public abstract void setEntityManager(EntityManager entityManager);

Mesmo assim injeto no construtor?

Lucas Cavalcanti

unread,
Sep 5, 2013, 2:46:45 PM9/5/13
to caelum-vraptor
Então vc não está usando o vraptor-jpa... os seus DAOs estão registrados no spring ou coisa do tipo?
Eles sĂŁo componentes do VRaptor?


2013/9/5 Daniele LeĂŁo Evangelista <dani....@gmail.com>

Daniele LeĂŁo Evangelista

unread,
Sep 5, 2013, 2:52:14 PM9/5/13
to caelum-...@googlegroups.com
Eles são componentes do vraptor, estão anotados com 
@Component
@ApplicationScoped

estou usando vraptor-jpa sim!

Otávio Garcia

unread,
Sep 5, 2013, 2:53:56 PM9/5/13
to caelum-...@googlegroups.com
EntityManager extended sĂł funciona em ambiente gerenciado sobre EJB Stateful.

Lucas Cavalcanti

unread,
Sep 5, 2013, 2:55:20 PM9/5/13
to caelum-vraptor
remova o método setEntityManager e sua respectiva anotação e coloque o @Inject no field do jeito que eu falei antes:

@Inject
private EntityManager entityManager;


2013/9/5 Otávio Garcia <ota...@otavio.com.br>

Daniele LeĂŁo Evangelista

unread,
Sep 5, 2013, 3:07:15 PM9/5/13
to caelum-...@googlegroups.com
Desculpa Lucas, acabei de perguntar pro guri aqui que fez essa parte, e a transação está sendo feita pelo Spring... Apenas a anotação que é do vraptor... Creio então que não seja aqui que eu deva verificar isso =/

Lucas Cavalcanti

unread,
Sep 5, 2013, 3:09:09 PM9/5/13
to caelum-vraptor
Se Ă© o Spring, vc precisa primeiro tirar o EXTENDED. Deixe apenas:

@PersistenceContext

E vc precisa ver se o EntityManager Ă© o mesmo pros dois DAOs... pra isso um dos jeitos Ă© usando o OpenEntityManagerInViewFilter do prĂłprio spring.

Daniele LeĂŁo Evangelista

unread,
Sep 5, 2013, 3:17:07 PM9/5/13
to caelum-...@googlegroups.com
EntĂŁo Lucas, eu tinha colocado o EXTENDED, porque sem ele eu tenho esse erro

Caused by: <openjpa-2.2.2-r422266:1468616 fatal user error> org.apache.openjpa.persistence.InvalidStateException: The context has been closed.  The stack trace at which the context was closed is held in the embedded exception.

Lucas Cavalcanti

unread,
Sep 5, 2013, 3:22:59 PM9/5/13
to caelum-vraptor
vc resolve isso com o filter que eu te falei.

Daniele LeĂŁo Evangelista

unread,
Sep 5, 2013, 4:05:50 PM9/5/13
to caelum-...@googlegroups.com
Lucas, eu coloquei a seguinte configuração no meu web.xml

<filter>
   <filter-name>SpringOpenEntityManagerInViewFilter</filter-name>
   <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
<filter-mapping>
        <filter-name>SpringOpenEntityManagerInViewFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

mas dá esse erro: 

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' is defined

Com o vraptor é alguma configuração diferente que devo fazer?

Lucas Cavalcanti

unread,
Sep 5, 2013, 4:21:23 PM9/5/13
to caelum-vraptor
isso não é configuração do VRaptor, é do spring...

no seu applicationContext.xml deve ter algum cara que cria o EntityManagerFactory... esse cara tem que ter 
<bean id="entityManagerFactory"

Daniele LeĂŁo Evangelista

unread,
Sep 5, 2013, 4:31:44 PM9/5/13
to caelum-...@googlegroups.com
Ahhh agora consegui... Obrigada Lucas :) 
Como sempre me salvando... Um dia chego la rs
Reply all
Reply to author
Forward
0 new messages