2010-11-30 31 views
0

Im écrire une application web en utilisant le modèle de conception MVC .. l'application doit se connecter à un serveur RMI fournissant la partie commerciale (Model)modèle objet instancier dans le projet web jsp

mon problème est, je ne sais pas où je devrait instancier la classe de modèle et se connecter à la RMI, donnant accès à toutes les servlets. J'ai ajouté un ServletContextListener et partagé la référence sur le contexte de servlet, mais je ne pense pas que c'est la bonne façon de le faire

merci d'avance

Répondre

0

Vous pouvez instancier vos classes Model/Business à partir de votre contrôleur. Mieux encore, faites une seule instance (Just Create One) de chaque au début de l'application. Vous pouvez aussi faire un chargement paresseux à ce sujet. L'instanciation des classes Model/Business de vos JSP signifie les instancier à partir de View. Cela, bien sûr, viole le modèle MVC. Soit vous pouvez créer vos classes Model/Business en tant que singleton, soit conserver la référence dans Contexte de servlet. Les deux sont bien et le dernier est plus facile à tester. Le premier peut aussi être rendu convivial par les tests, si vous ne spécifiez pas le constructeur comme private mais que vous avez juste compris qu'il n'est pas là pour l'instancier partout.

+0

donc les charger sur le ServletContextListener n'a aucun problème? – Daniel

+0

@Daniel: Non, en fait 'contextInitialized()' recevra une notification au démarrage du processus d'initialisation et sera appelé avant tout chargement de Servlet. Il vaut mieux le faire dans une servlet qui est 'OnLoad = 1' et conserver les références dans le contexte Servlet. –