Given this aspect
weaved by spring throughCode:package com.sabre.liberty.greenbeans.pnr; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import org.springframework.beans.factory.annotation.Required; @Aspect public class PssBypassAspect { private PssBypassEngine bypassEngine; @Pointcut("execution (* *.invoke(String)) && this(com.sabre.liberty.greenbeans.pnr.PnrBaseController+)") protected void controllerInvocation() { } @Around("controllerInvocation() && args(command)") public Object bypass(ProceedingJoinPoint thisJointPoint, String command) throws Throwable { if (bypassEngine.isBypassing()) return bypassEngine.bypass(command); else return thisJointPoint.proceed(new Object[]{command}); } @Required public void setBypassEngine(PssBypassEngine bypassEngine) { this.bypassEngine = bypassEngine; } }
On this beanCode:<aop:aspectj-autoproxy proxy-target-class="true"> <aop:include name="pssBypassAspect"/> </aop:aspectj-autoproxy> <bean name="pssBypassAspect" class="com.sabre.liberty.greenbeans.pnr.PssBypassAspect"> <property name="bypassEngine" ref="bypassEngine"/> </bean>
I sometimes get this exception (not consistently. May be due to MT environment):Code:package com.sabre.liberty.greenbeans.pnr; import com.sabre.liberty.greenbeans.*; public class PnrBaseController extends ActionController { @Override public ControllerResults invoke(String request) throws Exception { return super.invoke(request); } } package com.sabre.liberty.greenbeans; import org.springframework.context.*; public class ActionController extends GreenBeanController implements MessageSourceAware { public ControllerResults invoke(String request) throws Exception { return invoke(new InvocationContext(request)); } public ControllerResults invoke(ControllerInput request) throws Exception { return invoke(new InvocationContext(request)); } private ControllerResults invoke(InvocationContext context) throws Exception { // something } }
My environment is 4xdual core AMD64 running RH2.6, jdk1.5.0_07, spring 2.0.5, CGLIB2.2.beta1Code:java.lang.ArrayIndexOutOfBoundsException: 0 at com.sabre.liberty.greenbeans.GreenBeanController$$FastClassByCGLIB$$20773acc.invoke(<generated>) at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:163) at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:695) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:139) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161) at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:630) at com.sabre.liberty.greenbeans.pnr.PnrRemarkController$$EnhancerByCGLIB$$960cc3fc.getParser(<generated>) at com.sabre.liberty.greenbeans.GreenBean.getParser(GreenBean.java:140) at com.sabre.liberty.greenbeans.GreenBean.validateParserSpecification(GreenBean.java:122) at com.sabre.liberty.greenbeans.GreenBean.initCommandParser(GreenBean.java:114) at com.sabre.liberty.greenbeans.GreenBean.getGreenBeanController(GreenBean.java:100) at com.sabre.liberty.greenbeans.GreenScreenMVCController.handleRequest(GreenScreenMVCController.java:87) at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:857) at com.sabre.liberty.greenbeans.GreenScreenDispatcherServlet.delegateDispatch(GreenScreenDispatcherServlet.java:132) at com.sabre.liberty.greenbeans.GreenScreenDispatcherServlet.doDispatch(GreenScreenDispatcherServlet.java:58) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:792) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:461) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:416) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.sabre.liberty.clients.mom.MOMFilter.handleMOMRequest(MOMFilter.java:93) at com.sabre.liberty.clients.mom.MOMFilter.doFilter(MOMFilter.java:73) at com.sabre.liberty.clients.ServletFilter.doFilter(ServletFilter.java:31) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:138) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.sabre.liberty.greenbeans.util.DebugFilter.doFilter(DebugFilter.java:20) at com.sabre.liberty.clients.ServletFilter.doFilter(ServletFilter.java:31) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:138) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.sabre.liberty.clients.filters.EventLoggingFilter.doFilter(EventLoggingFilter.java:38) at com.sabre.liberty.clients.ServletFilter.doFilter(ServletFilter.java:31) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:138) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.sabre.liberty.greenbeans.session.SessionSetupFilter.doFilter(SessionSetupFilter.java:32) at com.sabre.liberty.clients.ServletFilter.doFilter(ServletFilter.java:31) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:138) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.sabre.liberty.clients.filters.ExceptionHandlingFilter.doFilter(ExceptionHandlingFilter.java:26) at com.sabre.liberty.clients.ServletFilter.doFilter(ServletFilter.java:31) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:138) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:63) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:204) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) 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.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595)
Any ideas?
Is there a way to dump the bytecode of CGLIB generated classes into .class file?
Thanks in advance
Jacques


Reply With Quote
