2010-04-22 9 views
3

J'essaie de construire une application web java selon des principes modulaires, avec des ressources communes (JSP, principalement) dans un fichier WAR et certaines ressources personnalisées dans un autre. Cela signifie que les JSP sont disséminées dans différents WAR. Maintenant, JavaEE fronce les sourcils sur ce genre de manigances, et veut que vous mettiez tout au même endroit. Ma solution de contournement actuelle est d'avoir un script Ant déclenché par Eclipse qui copie le contenu d'un WAR dans l'autre, mais ce n'est pas une solution agréable (c'est fragile et trop dépendant de l'IDE).Servlets: transfert vers une ressource dans une autre application Web

Idéalement, ce que je voudrais pouvoir faire est de transférer une servlet à un JSP situé dans un autre WAR vers un autre dans lequel il est lui-même déployé. Cela permettrait une plus grande liberté dans la façon dont j'assemble mes WARs. Cependant, le RequestDispatcher ne semble pas supporter de telles choses.

Une autre possibilité est d'utiliser <c:import>, que permet d'importer des ressources depuis un autre WAR (avec quelques mises en garde). Cela me permettrait probablement d'avoir un JSP "hook" dans un WAR, qui traîne dans le JSP requis d'un autre. C'est un peu maladroit, cependant, et le fait que <c:import> le montre montre que l'API de servlet sous-jacente le fait également. Mais comment accéder à cette fonctionnalité via le RequestDispatcher dans une servlet?

Répondre

6

Vous pouvez, avec les étapes suivantes:

  • obtenir le contexte étranger en utilisant ServletContext.getContext(contextPath)

  • obtenir le RequestDispatcher du ServletCotnext étranger.

  • dans META-INF/context.xml mis crossContext="true" (peut-être spécifique à tomcat)

+0

Gack! Je n'avais pas vu la méthode 'getContext', c'est le gars! – skaffman

+0

N'est-ce pas seulement pour Tomcat? – JoseK

+0

le réglage final - oui, peut-être. Mais les autres conteneurs doivent avoir des paramètres similaires. – Bozho

Questions connexes