Hi,
When using @Transactional annotation with LTW (Spring 2rc3 and Hibernate transaction manager)
I am getting the following stack trace
** Exception 1 of 1 has message: null
java.lang.NullPointerException
at org.springframework.transaction.interceptor.Transa ctionAspectSupport.createTransactionIfNecessary(Tr ansactionAspectSupport.java:234)
at org.springframework.transaction.aspectj.AbstractTr ansactionAspect.ajc$before$org_springframework_tra nsaction_aspectj_AbstractTransactionAspect$1$2a73e 96c(AbstractTransactionAspect.aj:64)
at tv.cozmo.central.logic.peer.PeerHandler.createOrUp datePeer(PeerHandler.java)
at tv.cozmo.central.logic.peer.PeerHandler$$FastClass ByCGLIB$$6f65dbef.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy. java:149)
at org.springframework.aop.framework.Cglib2AopProxy$C glibMethodInvocation.invokeJoinpoint(Cglib2AopProx y.java:709)
at org.springframework.aop.framework.ReflectiveMethod Invocation.proceed(ReflectiveMethodInvocation.java :148)
at org.springframework.transaction.interceptor.Transa ctionInterceptor.invoke(TransactionInterceptor.jav a:100)
at org.springframework.aop.framework.ReflectiveMethod Invocation.proceed(ReflectiveMethodInvocation.java :170)
at org.springframework.aop.framework.Cglib2AopProxy$D ynamicAdvisedInterceptor.intercept(Cglib2AopProxy. java:647)
at tv.cozmo.central.logic.peer.PeerHandler$$EnhancerB yCGLIB$$3a817d71.createOrUpdatePeer(<generated>)
at tv.cozmo.central.web.controller.RegisterServlet.do Get_aroundBody0(RegisterServlet.java:33)
at tv.cozmo.central.web.controller.RegisterServlet$Aj cClosure1.run(RegisterServlet.java:1)
at org.aspectj.runtime.reflect.JoinPointImpl.proceed( JoinPointImpl.java:173)
at tv.cozmo.central.logic.aop.PerServletAdvice.around AdviceTest(PerServletAdvice.java:41)
at tv.cozmo.central.web.controller.RegisterServlet.do Get(RegisterServlet.java:1)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
at org.springframework.web.servlet.handler.SimpleServ letHandlerAdapter.handle(SimpleServletHandlerAdapt er.java:63)
at org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:798)
at org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:728)
at org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:396)
at org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:350)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:178)
at org.apache.catalina.authenticator.AuthenticatorBas e.invoke(AuthenticatorBase.java:432)
at org.apache.catalina.valves.AccessLogValve.invoke(A ccessLogValve.java:541)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:868)
at org.apache.coyote.http11.Http11BaseProtocol$Http11 ConnectionHandler.processConnection(Http11BaseProt ocol.java:663)
at org.apache.tomcat.util.net.PoolTcpEndpoint.process Socket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThr ead.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlR unnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
The Spring config looks as follows
<aop:aspectj-autoproxy proxy-target-class="true"/>
<tx:annotation-driven/>
My guess (confirmed by some debugging) is that aspectj is "weaving around" (interceptor) bean that
can't initialize some of its properties (transaction manager) outside the container.
What is a correct/recommended way of using @Transactional annotation with aspectj LTW ?
Thanks,
Alex


Reply With Quote