Tuckey UrlRewrite: ClassNotFoundException nach dem Ändern von urlrewrite.xml

8

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!

    
WoodenKitty 24.02.2015, 23:38
quelle

2 Antworten

4

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.

    
gaRos 05.06.2015, 12:27
quelle
3

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.

    
melis 11.06.2015 18:12
quelle