2010-07-06 10 views
2

J'ai configuré UrlRewriterFilter (Tuckey) avec de nombreuses règles et cela fonctionne très bien pour mon servlet. Mais je veux utiliser la même configuration pour réécrire les urls en dehors de servlet - dans le code qui génère des e-mails avec des URL. J'ai donc besoin de démarrer UrlRewriter (ou une sorte de wrapper) pour traiter l'URL sortante, c'est-à-dire les réécrire avec mes règles sortantes déjà définies dans config (urlrewrite.xml).Est-il possible d'utiliser UrlRewriter en dehors de servlet et de filtrer en Java?

Je voudrais l'utiliser comme ceci:

String prettyUrl = urlRewriter.rewriteOutgoingUrl(uglyUrl); 

Est-ce possible? Comment atteindre cet objectif?

+0

Je suis dans une situation similaire. Cela vous dérange-t-il de publier votre solution, car elle ne semble pas insignifiante. – Zoran

Répondre

0

Vous avez probablement juste besoin d'initialiser UrlRewriteFilter. Puisque vous devez ajouter ceci dans votre fichier web.xml, les fichiers de configuration UrlRewriteFilter sont normalement chargés une fois. Je voudrais essayer de charger ceci dans un initialiseur statique dans une classe d'emballage que vous définissez. Pour définir un initialiseur statique tout ce que vous devez faire est dans une classe ont les suivantes:

static { 
    //Your initialization code goes here 
} 

Ce code ne sera initialisé une fois, lors de l'exécution. Pour plus d'informations s'il vous plaît regardez ici: http://java.sun.com/docs/books/tutorial/java/javaOO/initial.html

+0

Mais UrlRewriteFilter fonctionne pour la demande/réponse et tout le reste de l'environnement servlet, comment faire face à cela? Que dois-je passer à filtrer à la place des objets requête/réponse construits par le conteneur de servlet? – WildWezyr

0

Il est open source. Vous pouvez passer en revue son code source (http://code.google.com/p/urlrewritefilter/source/browse/trunk/src/java/org/tuckey/web/filters/urlrewrite/UrlRewriteFilter.java) et voir si la logique est disponible dans des classes autonomes qui ne reposent pas sur des objets de demande/réponse de servlet. Si c'est le cas, utilisez-le. Sinon, vous pouvez le construire vous-même en fonction de la source d'origine, en réutilisant autant de la bibliothèque que possible.

+0

J'ai téléchargé ce code et je l'ai examiné. Il a trop de références aux objets Request et Response et ne peut pas être utilisé dans un environnement autonome comme ça - sans moquer lourd etc. Mais j'ai aussi réussi à faire mon propre UrlRewriter qui reconnaît les règles de Tuckey (à partir de urlrewrite.xml) . Mon code a une longueur d'environ 100 lignes et est totalement indépendant de l'API Servlet (c'est-à-dire des objets requête/réponse). – WildWezyr

+0

Désolé, je voulais poster le commentaire ci-dessus ici. J'apprécierais vraiment si vous pouviez partager votre code car j'aimerais mettre en place quelque chose de similaire. – Zoran