Question

J'ai lu / appris plus sur Spring récemment et sur la façon dont on utiliserait Spring en combinaison avec d'autres outils open source tels que Tomcat et Hibernate. J'évalue si Spring MVC pourrait être une technologie de remplacement possible pour le projet sur lequel je travaille, qui utilise WebLogic et BEAUCOUP de code Java EE personnalisé. Le problème, c’est que j’ai toujours pensé que notre solution était trop complexe et bien plus complexe qu’elle n’aurait dû l'être. Étonnamment, nous sommes en 2009 et pourtant, nous écrivons nos propres classes de traitement des transactions et de mise en commun des threads. Et ce n'est pas comme si nous étions Amazon, eBay ou Google, si vous voyez ce que je veux dire. Ainsi, je suis en train d’enquêter sur un "plus simple est mieux" option.

Alors, voici ma question: j'aimerais entendre votre opinion sur la manière dont vous décidez qu'un serveur d'applications Java EE complet est nécessaire ou non. Comment "mesurez-vous" la taille / charge / demande sur une application Java EE? Nombre d'utilisateurs simultanés? Total des transactions quotidiennes? Comment " lourd " une application doit-elle être récupérée avant de se laisser aller et se dire: "OK, Tomcat ne la coupe pas, nous avons besoin de JBoss / WebLogic / WebSphere"?

Était-ce utile?

La solution

Je ne pense pas que la décision d'utiliser un serveur Java EE à part entière ou non devrait être basée sur le nombre d'utilisateurs ou de transactions. Cela devrait plutôt être fonction de la nécessité de la fonctionnalité.

Dans mon projet actuel, nous passons de JBoss à la vanille Tomcat car nous avons réalisé que nous n'utilisions aucune des fonctionnalités Java EE au-delà des servlets de base. Nous utilisons toutefois Spring. Entre la gestion des objets de base, la gestion des transactions et les fonctionnalités JDBC de Spring, nous ne voyons pas un besoin impérieux d’EJB. Nous utilisons actuellement Struts 2 plutôt que le MVC de Spring, mais j'ai entendu beaucoup de choses à ce sujet. Quoi qu’il en soit, Spring s’intègre bien à un certain nombre de frameworks Web Java.

Autres conseils

Spring ne tente pas de remplacer certaines parties avancées de la spécification JavaEE, telles que JMS et JTA. Au lieu de cela, il s'appuie sur ceux-ci, en les rendant compatibles avec la "méthode du printemps" et en les rendant généralement plus faciles à utiliser.

Si votre application nécessite la puissance de types tels que JMS et JTA, vous pouvez facilement les utiliser via Spring. Pas de problème avec ça.

Google utilise beaucoup de sources ouvertes dans son code. Si vous écrivez vous-même des choses de bas niveau, au lieu d'appliquer un code déjà écrit, vous réfléchissez trop souvent au problème.

Retour à la question actuelle, Walmart.com, etrade.com, The Weather Channel et plusieurs d'autres n'utilisent que Tomcat. Les spécialistes du marketing et des ventes d’IBM voudraient vous faire croire que ce serait différent, mais il n’ya pas de limite supérieure pour Tomcat.

Sauf pour les EJB, je ne sais pas ce qui manque à Tomcat et je ne suis pas un fan d'EJB.

En dehors des éléments les plus exotiques de Java EE, tomcat ne propose pas de beans de session (EJB). Les beans session vous permettent d'isoler efficacement votre traitement. Vous pouvez donc avoir une zone pour le front-end, une autre pour les beans de session (logique métier) et une autre pour la base de données.

Vous souhaitez le faire pour au moins deux raisons:

  1. performance; Vous trouvez qu'une boîte pour tout gérer charge trop de la boîte. Séparer les différentes couches sur différentes cases vous permettrait d’agrandir. Les beans session sont également capables de charger la balance à un niveau de grain plus fin. Tomcat et les autres services Web de cet acabit ne disposent pas de la mise en cluster immédiate.
  2. flexibilité; Maintenant que vous avez déplacé votre logique métier dans son propre environnement, vous pouvez développer un front-end alternatif utilisant le même calque, mais par exemple, il s’agissait d’un front-client lourd. Ou peut-être que d'autres contextes voudraient utiliser les beans de session.

Bien que je devrais probablement préciser que si vous utilisez des services Web pour communiquer avec ce niveau intermédiaire, il se peut que ce soit aussi sur tomcat!

Si vous avez besoin de transactions XA distribuées et si vous n'avez pas besoin de transactions XA, vous pouvez utiliser la validation Spring + JPA + Tomcat + Bean + JSTL + EL + JSP + Java. Mail.

De plus, un serveur Java EE est supposé implémenter JMS, mais il n’a aucun sens de le faire dans le même ordinateur virtuel que le reste du serveur d’applications. Par conséquent, si vous avez besoin de JMS, vous devez disposer d’un serveur JMS distinct.

Je suis fortement en désaccord avec toutes les réponses données ici.

Tout peut être ajouté à Tomcat, y compris les EJB, les CDI, les JTA, la validation de bean, le JAX-RS, etc.

La question est: voulez-vous cela? Voulez-vous assembler toutes ces dépendances dans les bonnes versions et vérifier que tout fonctionne ensemble, alors que d'autres l'ont déjà fait?

Soyons clairs: personne n'utilise que Tomcat! Tout le monde ajoute toujours une infrastructure Web, un conteneur ioc, un orm, un gestionnaire de transactions, des services Web, etc.

Les serveurs Java EE légers, tels que TomEE, incluent déjà tout cela et rendent l'expérience de la pile complète de l'intégration de tous ces éléments bien meilleure.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top