2015-02-24 14 views
8

Sunucuyu yeniden başlatmadan urlrewrite.xml dosyasındaki kuralları değiştirmek istiyorum.Tuckey UrlRewrite: urlrewrite.xml değiştirdikten sonra ClassNotFoundException

Ben var web.xml''deki olarak Tomcat 7. çalıştırıyorum ...

<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> 

Bu kuralı yürütmeye çalışırken, urlrewrite.xml bir <to> öğesinin değerini değiştirmek

bir duruma neden olur.

Java.Lang.ClassNotFoundException: java.net.URLClassLoader $ 1'de java.net.URLClassLoader $ 1.run (URLClassLoader.java:366) de org.apache.jsp.s1.content.about_002dus_jsp. org.apache.jasper.servlet.JasperLoader.loadClass de java.net.URLClassLoader.findClass (URLClassLoader.java:354) en java.security.AccessController.doPrivileged (Ana Yöntemi) 'den (URLClassLoader.java:355) çalıştırmak (JasperLoader.java:132) org.apache.jasper.servlet.JasperLoader.loadClass (JasperLoader.java:63) adresinden org.apache.catalina.core.Defau ltInstanceManager.newInstance org.apache.jasper.servlet.JspServletWrapper.service de org.apache.jasper.servlet.JspServletWrapper.getServlet (JspServletWrapper.java:172) 'den (DefaultInstanceManager.java:145) (JspServletWrapper.java: 369) org.apache.jasper.servlet.JspServlet.service (JspServlet.java:334 de org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:390 de ) ) javax.servlet.http de org.apache.catalina.core.ApplicationFilterChain.doFilter de org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:303) (ApplicationFilterChain.java de .HttpServlet.service (HttpServlet.java:727): 208) org.apache de org.apache.tomcat.websocket.server.WsFilter.doFilter org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241) 'den (WsFilter.java:52) de org.tuckey.web.filters.urlrewrite de .catalina.core.ApplicationFilterChain.doFilter org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite (RuleChain.java:176) 'den (ApplicationFilterChain.java:208) org.tuckey.web.filters.urlrewrite.UrlRe de .RuleChain.doRules org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest (UrlRewriter.java:92) 'den (RuleChain.java:145) writeFilter.doFilter org.apache.catalina.core.ApplicationFilterChain.doFilter de org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241) 'den (UrlRewriteFilter.java:389) (ApplicationFilterChain.java: 208 org.apache de org.apache.catalina.core.ApplicationDispatcher.processRequest (ApplicationDispatcher.java:486 de) org.apache.catalina.core.ApplicationDispatcher.invoke (ApplicationDispatcher.java:748 de ) ) .catalina.core.ApplicationDispatcher.doForward (ApplicationDispatcher.java:411) org.apache.catalina.core.ApplicationDispatcher.forward (ApplicationDispatcher.java:338) adresinden , org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite (NormalRewrittenUrl.java:213) adresinden org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite (RuleChain.java:171) org.tuckey.web.filters.urlrewrite.RuleChain.doRules (RuleChain.java:145) org.tuckey.web.filters en de . org.apache.catalina.core.ApplicationFilterChain.internalDoFilter de urlrewrite.UrlRewriter.processRequest org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter (UrlRewriteFilter.java:389) 'den (UrlRewriter.java:92) ( au.com.pawsforlife.vizsla.controller.UserFilter.doFilter de org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) de ApplicationFilterChain.java:241) (UserFilter.java:81) org.apache.catalina de org.apache.catalina.core.ApplicationFilterChain.internalDoFilter org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) 'den (ApplicationFilterChain.java:241) de org.apache.catalina.authenticator.AuthenticatorBase.invoke de .core.StandardWrapperValve.invoke org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:122) 'den (StandardWrapperValve.java:220) (AuthenticatorBase .java: 501) adresinde org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:171) org.apache.catalina.va adresinde yer alan lves.ErrorReportValve.invoke org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve de org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:950) 'den (ErrorReportValve.java:103) . java: 116), org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1070) de org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:408) de org .apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:611) adresinden org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run (JIoEndpoint.java:314) org.apache.tomcat.util.threads de java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:615) de java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) java.lang.Thread.run (Thread.java:745) de .TaskThread $ WrappingRunnable.run (TaskThread.java:61)

Böyle ya da en azından nasıl bunu düzeltmek için neden kimse biliyor mu?

Teşekkürler!

+0

Tomcat'taki bir bölüm, başvuruyu derlenmiş JSP'lere tutar ancak derleyici çıkış dizinini temizler. Muhtemelen, 'urlrewrite.xml' için yaptığınız değişiklik bu davranışa neden oldu. Https://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Common_Attributes (context.xml'yi özellikle yüklenebilir) ayarının size yardımcı olup olmadığını kontrol edin. – mp911de

+0

urlrewrite.xml dosyanızı da ekleyebilir misiniz? – melis

cevap

4

Bu, kuralları dinamik olarak değiştirmenin uygun yolu olmadığını düşünüyorum. Kılavuzdaki Extending UrlRewriteFilter bölümüne bakın.

rule etiketi yerine, class-rule kullanmalısınız. Kuralları bir kaynaktan dinamik olarak yükleyecek bir sınıf belirtirsiniz.

simple rule örneğine sahipler.

Temel olarak XML dosyasını değiştiremezsiniz, kural çalışma zamanını yüklemeniz gerekir, bu şekilde yeniden yazma işleminden önce herhangi bir kuralı yükleyebilirsiniz.

3

Geçmişte benzer bir özel durum vardı ama ayrıntıları hatırlamıyorum. Bu yüzden urlrewrite.xml ve web.xml örneklerini basit bir projeden paylaşıyorum. Umut ediyorum bu yardım eder. urlrewrite.xml:

1 <?xml version="1.0" encoding="utf-8"?> 
    2 <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" 
    3   "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd"> 
    4 
    5 <!-- 
    6 
    7  Configuration file for UrlRewriteFilter 
    8  http://www.tuckey.org/urlrewrite/ 
    9 
10 --> 
11 <urlrewrite> 
12 
13  <rule> 
14   <from>^/OA_HTML/(.*)$</from> 
15   <to type="redirect">/tuckeyUrl/$1</to> 
16  </rule> 
17 
78 </urlrewrite> 

web.xml:

<?xml version="1.0" encoding="ISO-8859-1"?> 
    2 
    3 <web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
    4  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    5  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
    6  version="2.4"> 
    7 
    8 <filter> 
    9  <filter-name>UrlRewriteFilter</filter-name> 
10  <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> 
11 </filter> 
12 <filter-mapping> 
13  <filter-name>UrlRewriteFilter</filter-name> 
14  <url-pattern>/*</url-pattern> 
15  <dispatcher>REQUEST</dispatcher> 
16  <dispatcher>FORWARD</dispatcher> 
17 </filter-mapping> 
39 </web-app> 

Ben de başka bir istisna vardı hatırlıyorum. Web çizgimden ilk satırın

kaldırılmasıyla giderdim.

İlgili konular