Ich möchte die Regeln in urlrewrite.xml ändern können, ohne den Server neu zu starten.
Ich betreibe Tomcat 7. In web.xml habe ich ...
%Vor% Wenn ich den Wert eines Elements <to>
in urlrewrite.xml ändere, verursacht der Versuch, diese Regel auszuführen, eine Ausnahme.
java.lang.ClassNotFoundException: org.apache.jsp.s1.content.about_002dus_jsp at java.net.URLClassLoader $ 1.run (URLClassLoader.java:366) um java.net.URLClassLoader $ 1.run (URLClassLoader.java:355) um java.security.AccessController.doPrivileged (Native Methode) um java.net.URLClassLoader.findClass (URLClassLoader.java:354) um org.apache.jasper.servlet.JasperLoader.loadClass (JasperLoader.java:132) beim org.apache.jasper.servlet.JasperLoader.loadClass (JasperLoader.java:63) beim org.apache.catalina.core.DefaultInstanceManager.newInstance (DefaultInstanceManager.java:145) beim org.apache.jasper.servlet.JspServletWrapper.getServlet (JspServletWrapper.java:172) beim org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:369) beim org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:390) bei org.apache.jasper.servlet.JspServlet.service (JspServlet.java:334) bei javax.servlet.http.HttpServlet.service (HttpServlet.java:727) um org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java303) beim org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) beim org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52) beim org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241) beim org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) beim org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite (RuleChain.java:176) beim org.tuckey.web.filters.urlrewrite.RuleChain.doRules (RuleChain.java:145) beim org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest (UrlRewriter.java:92) beim org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter (UrlRewriteFilter.java:389) beim org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241) beim org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) beim org.apache.catalina.core.ApplicationDispatcher.invoke (ApplicationDispatcher.java:748) beim org.apache.catalina.core.ApplicationDispatcher.processRequest (ApplicationDispatcher.java:486) beim org.apache.catalina.core.ApplicationDispatcher.doForward (ApplicationDispatcher.java:411) beim org.apache.catalina.core.ApplicationDispatcher.forward (AnwendungDispatcher.java:338) beim org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite (NormalRewrittenUrl.java:213) beim org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite (RuleChain.java:171) beim org.tuckey.web.filters.urlrewrite.RuleChain.doRules (RuleChain.java:145) beim org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest (UrlRewriter.java:92) beim org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter (UrlRewriteFilter.java:389) beim org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241) beim org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) beim au.com.pawsforlife.vizsla.controller.UserFilter.doFilter (UserFilter.java:81) beim org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241) beim org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) beim org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:220) beim org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:122) beim org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:501) beim org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:171) beim org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:103) beim org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:950) beim org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:116) beim org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:408) beim org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1070) beim org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:611) beim org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run (JIoEndpoint.java:314) beim java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) beim java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:615) beim org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) bei java.lang.Thread.run (Thread.java:745)
Weiß jemand, warum das passiert, oder zumindest wie man es repariert?
Danke!
Ich denke, das ist nicht der richtige Weg, um die Regeln dynamisch zu ändern. Sehen Sie im Abschnitt Extending UrlRewriteFilter nach.
Anstelle von rule
tag sollten Sie class-rule
verwenden. Sie geben eine Klasse an, die die Regeln dynamisch von einer Ressource lädt.
Sie haben ein Beispiel für eine einfache Regel .
Sie können die XML-Datei also nicht einfach ändern, Sie müssen die Laufzeit der Regeln laden, damit Sie vor dem Neuschreiben alle Regeln laden können.
Ich hatte in der Vergangenheit eine ähnliche Ausnahme, aber ich erinnere mich nicht an die Details. Deshalb teile ich meine Beispiele urlrewrite.xml und web.xml aus einem einfachen Projekt. Ich hoffe, es hilft. urlrewrite.xml:
%Vor%web.xml:
%Vor%Ich erinnere mich auch, dass ich eine weitere Ausnahme hatte. Ich reparierte mit dem Entfernen der zusätzlichen Zeile vor der ersten Zeile
%Vor%von meiner web.xml.
Tags und Links java tomcat tomcat7 tuckey-urlrewrite-filter urlrewriter