Thanks for delving into this, Bryan. This is a case where reflection and raw code behave differently (even if you look for the doFilter method on the public class, you get the Method object from the package protected class). Ultimately I'll probably move PageFlowPageFilter to org.apache.beehive.netui.pageflow.internal, but for now I simply applied your patch to it. I appreciate you following up on this.

Rich

Bryan Che wrote:

Hi, I've figured out the problem. The server uses reflection in org.apache.catalina.security.SecurityUtil to execute the method, org.apache.beehive.netui.pageflow.PageFlowPageFilter.doFilter(), from the child class org.apache.beehive.netui.pageflow.PageFlowJspFilter. However, because PageFlowPageFilter is not a public class, trying to access its doFilter() method causes an IllegalAccessException. Changing that class to be public fixes the problem.

I've attached a patch for this.

Bryan

Bryan Che wrote:

Hi, I'm getting this error when trying to load a simple Beehive webapp:

2004-10-20 14:07:59 StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
java.lang.ClassCastException: java.lang.IllegalAccessException
at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:270)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:213)


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

at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:50)

at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:140)

at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:136)


at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)

at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)

at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409)

at org.apache.catalina.core.ApplicationDispatcher.access$000(ApplicationDispatcher.java:71)

at org.apache.catalina.core.ApplicationDispatcher$PrivilegedForward.run(ApplicationDispatcher.java:86)

at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:304)


at org.apache.beehive.netui.pageflow.internal.DefaultForwardRedirectHandler.forward(DefaultForwardRedirectHandler.java:113)

at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.doForward(PageFlowRequestProcessor.java:1305)

at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processForwardConfig(PageFlowRequestProcessor.java:1203)

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

at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInternal(PageFlowRequestProcessor.java:640)

at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcessor.java:694)

at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServlet.java:565)

at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)


at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:239)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:268)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:157)


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

at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:50)

at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:140)

at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:136)


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

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)

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

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

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

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

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

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

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

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)


at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)

at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)

    at java.lang.Thread.run(Thread.java:595)

Has anyone run into this before?

Thanks,

Bryan


------------------------------------------------------------------------

52c52
< abstract class PageFlowPageFilter implements Filter
---


public abstract class PageFlowPageFilter implements Filter


Reply via email to