2009-02-24 5 views
3

J'ai une application Struts (1.3.8) que je voudrais convertir en Tapestry 5. Il n'y aura probablement pas le temps de faire toute la conversion d'un seul coup. Je souhaite offrir de nouvelles fonctionnalités dans Tapestry et convertir les Struts/JSP existants si le temps le permet. Est-ce que quelqu'un a essayé quelque chose comme ça? Est-ce que Struts et Tapestry peuvent coexister?Conversion fragmentaire de Struts en tapisserie 5

+0

Ne prenez pas trop de temps à ce sujet; Si vous êtes trop lent, Tapestry 6 sera sorti, et si les versions v4 et v5 sont quelque chose à faire, il ne ressemblera pas à la version précédente. – skaffman

Répondre

1

Sans jamais utiliser Tapestry, je dirais que deux frameworks devraient pouvoir coexister car dans le web.xml vous définissez comment les URLs sont mappés aux servlets/filtres. Par exemple, dans Wicket, il y a un filtre qui vérifie les classes Wicket qui implémentent le gestionnaire de requêtes. Si rien ne correspond, la requête est transmise à la chaîne. Cela vous permettrait de continuer à utiliser Struts pour certaines actions.

Si vous souhaitez conserver certaines URL, vous pouvez simplement modifier l'action Struts pour la rediriger vers la nouvelle URL interne; Finalement, toutes vos actions Struts seront, essentiellement, des actions de réécriture d'URL, et vous pouvez simplement supprimer des Struts et le remplacer par un filtre de réécriture d'URL.

Si aucune de vos nouvelles URL ne va entrer en conflit avec vos anciennes URL, il n'y a rien de difficile à faire. Configurez simplement le nouveau framework et ses gestionnaires de requêtes. Lorsqu'une action Struts est rencontrée (/doSomething.do), Struts ActionServlet enverra la demande à l'action. Dans le struts-config.xml, vous pouvez transférer au bon endroit, soit un JSP ou une mosaïque ou une URL Tapestry. J'imagine qu'il existe un moyen, dans Tapestry, de rediriger vers une URL arbitraire une fois que vous avez fini de traiter une requête; juste en avant à une action de Struts si vous devez.

Le seul problème collant que je peux prévoir est si Struts et Tapestry ont des exigences contradictoires pour les bibliothèques tierces. Si cela ne fonctionne pas, vous risquez de ne pas avoir de chance pour toute migration facile.

2

Si vous avez fait Struts de la façon dont la plupart des gens le font, vous avez probablement toutes vos URLs Struts commençant par/action ou se terminant par .do. Comme l'ont souligné M. Shiny et New, cela signifie que vous pouvez filtrer différentes URL avec le filtre Tapestry et le filtre ou servlet Struts. J'ai utilisé les deux et je vous recommande fortement de ne pas utiliser Tapestry pour traiter les URL Struts. Avec Struts, vous pouvez pratiquement coder à la main l'URL afin de ne pas créer de lien vers les pages Tapestry, mais si vous voulez que Tapestry renvoie vers les URLs Struts, vous pouvez avoir du mal à l'utiliser de la manière standard. Idéalement, vous pouvez diviser une partie de votre application (comme les fonctions d'administration internes) et les rendre complètement indépendants.

+0

Je suis allé de l'avant avec une preuve de concept que Struts et Tapestry peuvent vivre dans la même application en ajoutant une page Tapestry.D'autres travaux devront être effectués pour voir s'il y a des problèmes de liaison entre les deux, des données de session, etc. –

0

Je l'ai fait une fois. J'ai dû faire un pont entre les sessions pour les deux frameworks car ils utilisent leurs propres constantes/préfixes pour cela. Nous avons fait un passage progressif d'une application héritée à une application T5. Nous avons juste utilisé le fichier web.xml pour pointer les requêtes de struts sur les entretoises et les requêtes T5 seraient récupérées par le filtre T5. Je pense que vous pouvez même configurer le filtre T5 pour ignorer certaines URL. Nous avons également utilisé le filtre URLRewrite de tuckey pour contrôler les demandes individuelles, de cette façon une page pourrait être entretenue un jour et T5 la suivante et l'URL resterait constante (utile si votre application Struts est active et que les utilisateurs peuvent Je l'ai mis en signet)

Je vais lire le code (je l'ai archivé quelque part) et je reviendrai plus loin si je repère des pièges.

Bonne chance.