Hello,
as I get a -1 as session attribute size for several attributes, I've added a re.printStackTrace(); in
ObjectProfiler.sizeof and now I can see a ArrayStoreException with the stack trace below, but I don't understand why the home made implementation of IdentityHashMap throws this exeption.
Any Hints Please ?
[exec] java.lang.ArrayStoreException
[exec] at clime.messadmin.utils.IdentityHashMap.put(IdentityHashMap.java:431)
[exec] at clime.messadmin.providers.sizeof.ObjectProfiler.computeSizeof(ObjectProfiler.java:251)
[exec] at clime.messadmin.providers.sizeof.ObjectProfiler.sizeof(ObjectProfiler.java:76)
[exec] at clime.messadmin.providers.sizeof.ObjectProfilerProvider.sizeof(ObjectProfilerProvider.java:31)
[exec] at clime.messadmin.taglib.SizeofTag.doEndTag(SizeofTag.java:52)
[exec] at jsp_servlet._messadmin.__sessiondetail._jspService(__sessiondetail.java:1154)
[exec] at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
[exec] at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)
[exec] at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
[exec] at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
[exec] at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
[exec] at clime.messadmin.filter.MessAdminFilter.doFilter(MessAdminFilter.java:106)
[exec] at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
[exec] at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:644)
[exec] at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:423)
[exec] at clime.messadmin.admin.MessAdminServlet.displaySessionDetailPage(MessAdminServlet.java:246)
[exec] at clime.messadmin.admin.MessAdminServlet.process(MessAdminServlet.java:124)
[exec] at clime.messadmin.admin.MessAdminServlet.doGet(MessAdminServlet.java:71)
[exec] at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
[exec] at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
[exec] at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)
[exec] at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
[exec] at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
[exec] at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
[exec] at clime.messadmin.filter.MessAdminFilter.doFilter(MessAdminFilter.java:106)
[exec] at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
[exec] at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6987)
[exec] at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
[exec] at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
[exec] at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3892)
[exec] at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766)
[exec] at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
[exec] at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Applying the workaround described in http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5012949
for the classes:
sun.reflect.UnsafeStaticFieldAccessorImpl
sun.reflect.UnsafeStaticObjectFieldAccessorImpl
sun.reflect.UnsafeStaticLongFieldAccessorImpl
seams to solve my problem
HTH
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
as I get a -1 as session attribute size for several attributes, I've added a re.printStackTrace(); in
ObjectProfiler.sizeof and now I can see a ArrayStoreException with the stack trace below, but I don't understand why the home made implementation of IdentityHashMap throws this exeption.
Any Hints Please ?
[exec] java.lang.ArrayStoreException
[exec] at clime.messadmin.utils.IdentityHashMap.put(IdentityHashMap.java:431)
[exec] at clime.messadmin.providers.sizeof.ObjectProfiler.computeSizeof(ObjectProfiler.java:251)
[exec] at clime.messadmin.providers.sizeof.ObjectProfiler.sizeof(ObjectProfiler.java:76)
[exec] at clime.messadmin.providers.sizeof.ObjectProfilerProvider.sizeof(ObjectProfilerProvider.java:31)
[exec] at clime.messadmin.taglib.SizeofTag.doEndTag(SizeofTag.java:52)
[exec] at jsp_servlet._messadmin.__sessiondetail._jspService(__sessiondetail.java:1154)
[exec] at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
[exec] at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)
[exec] at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
[exec] at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
[exec] at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
[exec] at clime.messadmin.filter.MessAdminFilter.doFilter(MessAdminFilter.java:106)
[exec] at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
[exec] at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:644)
[exec] at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:423)
[exec] at clime.messadmin.admin.MessAdminServlet.displaySessionDetailPage(MessAdminServlet.java:246)
[exec] at clime.messadmin.admin.MessAdminServlet.process(MessAdminServlet.java:124)
[exec] at clime.messadmin.admin.MessAdminServlet.doGet(MessAdminServlet.java:71)
[exec] at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
[exec] at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
[exec] at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)
[exec] at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
[exec] at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
[exec] at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
[exec] at clime.messadmin.filter.MessAdminFilter.doFilter(MessAdminFilter.java:106)
[exec] at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
[exec] at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6987)
[exec] at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
[exec] at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
[exec] at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3892)
[exec] at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766)
[exec] at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
[exec] at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
Applying the workaround described in http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5012949
for the classes:
sun.reflect.UnsafeStaticFieldAccessorImpl
sun.reflect.UnsafeStaticObjectFieldAccessorImpl
sun.reflect.UnsafeStaticLongFieldAccessorImpl
seams to solve my problem
HTH
Good catch! Do you have a patch that I can include in the codebase?
On a side note, the "home made" implementation of IdentityHashMap is just a copy of java.util.IdentityHashMap, as Java 1.3 does not have such a beast.