2017-05-17 2 views
0

Ich habe Legacy-Web-Anwendung mit Apache Tapestry gebaut. Ich habe die meisten der Funktionalität der Anwendung mit Ausnahme von wenigen Seiten veraltet. Ich möchte, dass diese Anwendung in der Produktion ausgeführt wird, aber ich möchte veraltete Seiten/URLs auf eine Fehlerseite mit 404-Fehlercode umleiten. Wo sollte ich es konfigurieren? Ich habe web.xml und jboss-web.xml. Muss ich das in einer Tapestry-Konfigurationsdatei machen?Tapestry: Wie veraltete URLs auf eine Fehlerseite umgeleitet werden

Antwort

0

Sie können eine RequestFilter zum Request Service, das heißt in Ihrem AppModule beitragen:

public void contributeRequestHandler(
       OrderedConfiguration<RequestFilter> configuration) 
{ 
    // Each contribution to an ordered configuration has a name, 
    // When necessary, you may set constraints to precisely control 
    // the invocation order of the contributed filter within the pipeline. 

    configuration.add("DeprecatedURLs", new RequestFilter() { 
     @Override 
     public boolean service(Request request, 
           Response response, 
           RequestHandler handler) throws IOException 
     { 
      String path = request.getPath(); 
      if (isDeprecated(path)) 
      { 
       response.sendError(404, "Not found"); 
       return; 
      } 

      return handler.service(request, response); 
     } 
    }, "before:*"); 
} 

Beachten Sie die before:* Bestell Einschränkung, soll es diese Filter als in RequestHandler's configuration zuerst registrieren.

+0

Ich sehe nichts wie AppModule oder RequestHandler in diesem Legacy-Anwendungscode. Ich weiß wirklich nichts über Tapisserie. Ich sehe TapestryFilter in meiner web.xml-Datei in etwa so konfiguriert. \t \t ResourcesApp \t \t org.apache.tapestry5.TapestryFilter \t \t \t \t ResourcesApp \t \t /* \t user1614862

+0

Es sollte statt 'AppModule' sein' ResourcesAppModule', weil Ihr Filter ist der Name 'ResourcesAp p'. Wenn Sie Tapestry nicht kennen und sich nicht für die Aufgabe in Ihrer "Legacy" -App interessieren, können Sie immer einen HTTP-Proxy wie Apache oder NGINX vor Ihrer App einrichten und dort die veralteten URLs verarbeiten. –

+0

Entschuldigung vergessen zu fragen, welche Tapisserie-Version haben Sie? –

Verwandte Themen