jdon运行时报错,请banq老师看看

12-08-31 mianwo602
banq老师今天看日志又发现有一个错误,具体的错误信息如下:

2012-08-28 07:07:49,093 [http-80-exec-8] ERROR com.jdon.util.Debug - com.jdon.aop.AopClient

java.lang.ArrayIndexOutOfBoundsException: 16

at java.util.ArrayList.add(Unknown Source)

at com.jdon.aop.interceptor.PoolInterceptor.isPoolabe(PoolInterceptor.java:166)

at com.jdon.aop.interceptor.PoolInterceptor.invoke(PoolInterceptor.java:87)

at com.jdon.aop.reflection.ProxyMethodInvocation.proceed(ProxyMethodInvocation.java:84)

at com.jdon.aop.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:58)

at com.jdon.aop.reflection.ProxyMethodInvocation.proceed(ProxyMethodInvocation.java:84)

at com.jdon.aop.AopClient.invoke(AopClient.java:95)

at com.jdon.bussinessproxy.dyncproxy.DynamicProxyWeaving.invoke(DynamicProxyWeaving.java:62)

at $Proxy15.getGroup_khForList(Unknown Source)

at com.jdon.strutsutil.T_memberModelViewAction.execute(T_memberModelViewAction.java:71)

at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)

at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)

at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at cn.vetech.framework.asms.AsmsFilter.doFilter(AsmsFilter.java:62)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at com.jdon.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:92)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:201)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:163)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:401)

at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:281)

at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)

at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1568)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

isPoolabe的方法如下:

public boolean isPoolabe(TargetMetaDef targetMetaDef) {

boolean found = false;

if (isPoolableCache.contains(targetMetaDef.getName())) {

found = true;

} else if (!unPoolableCache.contains(targetMetaDef.getName())) {

Debug.logVerbose("[JdonFramework] check if it is a Poolable", module);

ContainerWrapper containerWrapper = containerCallback.getContainerWrapper();

Class thisCLass = containerWrapper.getComponentClass(targetMetaDef.getName());

if (Poolable.class.isAssignableFrom(thisCLass)) {

found = true;

isPoolableCache.add(targetMetaDef.getName());

} else {

unPoolableCache.add(targetMetaDef.getName());

}

}

return found;

}

unPoolableCache contains和add方法都会报错。

banq
2012-08-31 11:16
这个错误似曾经相见,但是如何fixed已经忘记。

你可将最新版对比一下:https://github.com/banq/jdonframework/blob/master/src/com/jdon/aop/interceptor/PoolInterceptor.java

如果再不行,难道又是ArrayList并发问题?换成并发的List?

mianwo602
2012-08-31 11:26
我对比过这个文件是一样的

猜你喜欢