Woo*_*tty 8 java tomcat urlrewriter tomcat7 tuckey-urlrewrite-filter
我希望能够在不重新启动服务器的情况下更改urlrewrite.xml中的规则.
我正在运行Tomcat 7.在web.xml中我有......
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
<param-name>confReloadCheckInterval</param-name>
<param-value>120</param-value>
</init-param>
<init-param>
<param-name>logLevel</param-name>
<param-value>INFO</param-value>
</init-param>
</filter>
Run Code Online (Sandbox Code Playgroud)
当我更改<to>urlrewrite.xml中元素的值时,尝试执行该规则会导致异常.
抛出java.lang.ClassNotFoundException:org.apache.jsp.s1.content.about_002dus_jsp在java.net.URLClassLoader的$ 1.run(URLClassLoader.java:366)在java.net.URLClassLoader的$ 1.run(URLClassLoader.java:355)在位于org.apache的org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:132)的java.net.URLClassLoader.findClass(URLClassLoader.java:354)中的java.security.AccessController.doPrivileged(Native Method). org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:145)中的jasper.servlet.JasperLoader.loadClass(JasperLoader.java:63)位于org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java: 172)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)atg.apache.jasper.servlet.JspServlet .service(JspServlet.java:334)位于org.apache.catalina.core.ApplicationFilterChain.internalD的javax.servlet.http.HttpServlet.service(HttpServlet.java:727)oFilter(ApplicationFilterChain.java:303)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)at org .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite (RuleChain.java:176)在org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)在org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)在org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:389)位于org.apache.catalina.core.ApplicationFilterChain的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241). doFilter(ApplicationFilterChain.java:208)在org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispa)tcher.java:748)org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486)位于org.apache.catalina的org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411) .core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:213)org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain)的.java:171)在org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)在org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)在有机tgkey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:389)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:208)at au.com.pawsforlife.vizsla.controller.UserFilter.doFilter(UserFilter.java:81)at或 g.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:220)org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)atg.apache.catalina .core.StandardHostValve.invoke(StandardHostValve.java:171)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) )org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)org.apache.coyote.http11.AbstractHttp11Processor.进程(AbstractHttp11Processor.java:1070)org.apache.coyote.AbstractProtocol $ AbstractCon nectionHandler.process(AbstractProtocol.java:611)在org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:314)在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615)在org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)在java.lang.Thread.run (Thread.java:745)
有谁知道为什么会这样,或至少如何解决它?
谢谢!
我认为这不是动态修改规则的正确方法。检查手册中的扩展 UrlRewriteFilter部分。
rule您应该使用.而不是标签class-rule。您指定一个类,它将从资源动态加载规则。
他们有一个简单规则的例子。
所以基本上你不能简单地修改XML文件,你必须在运行时加载规则,这样你就可以在重写之前加载任何规则。
| 归档时间: |
|
| 查看次数: |
2216 次 |
| 最近记录: |