2010-06-22 19 views
0

Je dois développer une application en Java, qui utilise une approche client [serveur embarqué] - serveur - (- serveur) - (...). (données envoyées sur commits, ou automatiquement)EJB sur le client

Le flux de travail (entités, validation, logique, sessions) est partout le même. Dans les connexions serveur-serveur, il semble logique d'utiliser EJB-s (entités et beans de session, à l'avenir probablement des beans pilotés par les messages). Le client parle avec un «serveur» local ou, selon les paramètres de l'utilisateur, avec un ou plusieurs serveurs réels (les serveurs peuvent également parler à de nombreux serveurs). Est-il possible (et simple) d'utiliser localement le framework EJB (sans un serveur Java EE local en cours d'exécution, pour éviter l'installation sur les clients, et l'utilisation de la mémoire), et si, est-ce une bonne solution? Ou devrais-je implémenter une logique différente sur le client, et passer en fonction des paramètres? Lequel est le plus facile?

+0

Avez-vous vraiment besoin de ** lancer ** des EJB sur le client (ou simplement d'appeler des EJB)? –

+0

J'ai besoin de tout mettre en œuvre dans les EJB (partie serveur), donc j'ai pensé, "pourquoi créer deux interface/implémentation faire la même chose?" – Dutow

+0

La plupart des EDI vous permettent de créer des services Web à partir de beans de session sans état. –

Répondre

0

Oui, c'est possible. Le EJB 3.1 spec définit un conteneur EJB intégrable (Chapitre 20) pouvant être utilisé dans les applications Java SE sans avoir besoin d'un serveur d'applications Java EE.

Mais même avant EJB 3.1, il existe des conteneurs qui peuvent être facilement intégrés, par ex. OpenEJB de Apache.

Que ce soit bon ou mauvais est bien sûr discutable mais je pense que s'il existe des EJB existants et que vous voulez les utiliser localement alors pourquoi pas. D'autres préféreraient probablement le printemps, mais je n'y ai pas beaucoup d'expérience, donc je ne peux pas faire de commentaire à ce sujet.

+0

J'ai seulement essayé le printemps en tant que framework web/mvc, avec séparation des bases de données et des applications. Il a (bon) support pour la communication client-serveur-serveur ... comme ça? Écrire directement dans une base de données du serveur à partir du client serait mauvais dans ce cas. – Dutow

0

Il est parfaitement possible d'appeler vos EJB à partir d'un client sans avoir de serveur Java EE localement.

Tous les serveurs Java EE sont livrés avec un fichier client contenant les classes nécessaires à la connexion au serveur Java EE. Vous devez fournir la configuration pour le serveur JNDI en utilisant un fichier jndi.properties (ou en définissant les propriétés du système avant d'obtenir votre contexte JNDI initial) et c'est tout.

Je pense que la spécification d'origine a été faite avec des environnements client/serveur comme une cible et il a fini par accident dans les applications web n-tier.

Si vous avez vraiment besoin de déployer sur la machine locale, vous pouvez envisager de déployer votre application dans un serveur Java EE. Un JBoss ou Glassfish sont assez modulaires et ils ne sont pas si lourds à courir. Jetez les modules dont vous n'avez pas besoin et déployez votre application dessus.