2009-10-02 7 views
1

Je pense à quelque chose dans les lignes de drupal multisite, où chaque site devrait avoir son dossier avec des thèmes, des plugins et divers fichiers statiques. Il s'avère que ce n'est pas très facile à faire avec Java: les classes doivent être en un seul endroit, les fichiers de tags dans les autres, les fichiers statiques en troisième, seuls les fichiers jsp peuvent aller n'importe où. les classes et les balises peuvent être empaquetées dans des jars, mais comment puis-je servir des fichiers statiques et des jsps à partir de jar? Quelle est la meilleure façon de faire une telle chose?Exécution de plusieurs sites à partir d'une application Web en Java

précédente question légèrement liée: Jsp tags outside WEB-INF/tags

Répondre

1

Par défaut dans la plupart des conteneurs de servlets fichiers statiques sont servis partout en dehors de WEB-INF, même que JSPs (sauf non interprété).

Vous pouvez servir des fichiers statiques à partir d'un fichier en écrivant une petite servlet qui les charge en ressources (en utilisant par exemple Class.loadResourceAsStream()) et les écrit sur le ServletOutputStream.

Je ne sais pas drupal, mais il semble que l'équivalent en Java est l'application Web, qui peut être emmitouflé sous forme d'archive WAR (http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WebComponents3.html)

+0

C'est le point, dans Drupal vous avez une application avec bouquet du code commun, et les sites ont des données distinctes, look différent, plugin ici et là, mais ils partagent beaucoup. Le fichier WAR est l'application complète. – Slartibartfast

+1

OK - Je pense que je reçois ce que vous conduisez. Vous pouvez charger vos jars dans le chargeur de classes de conteneurs de servlets, qui devrait alors être disponible dans la webapp, mais le mécanisme et votre kilométrage varient en fonction du conteneur de servlets. Dans l'ensemble, vous cherchez probablement (ou développez) un framework (Tapestry, Struts, etc) pour fournir ce que vous recherchez. –

0

Je ne comprends pas vraiment votre problème. Je cours des multisites de la même webapp, emballée comme une guerre simple.

Mon WAR est organisé comme suit,

myapp/WEB-INF 
myapp/common 
myapp/site1 
myapp/site2 

Toutes les classes, TLDs sont partagés, mais 2 sites ont marque totalement différents, thèmes, etc. Le site des fichiers spécifiques vont à leur propre répertoire. Ils partagent beaucoup de fichiers statiques comme javascript et images. Ces fichiers sont stockés sous commun et peuvent être référencés à l'aide URL relative pour chaque site, par exemple,

../common/images/cart.jpg 

L'ensemble est livré en une seule guerre et fonctionne comme une seule application. Le site est disponible à

http://example.com/myapp/site1

Nous avons aussi un Apache frontal avec mod_rewrite et les sites sont également disponibles,

http://site1.example.com 
    http://site2.example.com 
+0

Il n'y a pas de place pour de légères variations entre les sites, de sorte que les sites ont exactement les mêmes fonctionnalités, pas principalement les mêmes. Fondamentalement, c'est ce que nous allons faire, et si le site est assez différent, nous l'aurons dans une autre application qui n'est évidemment pas grave. – Slartibartfast

Questions connexes