|
|||||||
| Serveurs, conteneurs, et Java EE Forum d'entraide sur la spécification Java EE, les serveurs d'application Java EE (GlassFish, JBoss, JOnAS, Weblogic, Websphere...) ou partiellement Java EE (Tomcat, Jetty, Spring DM...), ainsi que la spécification OSGi et ses implémentations (Equinox, Felix...). Avant de poster -> FAQ Java EE - Les cours OSGi |
|
|
Publicité ' | |||||||||||||||||||||||||||||||||
|
|
|
Outils de la discussion |
|
|
#61 | ||||||||
|
Invité régulier
![]() ![]() Inscription : mars 2008 Messages : 6 ![]() |
Ok, je me suis un peu plongé dans la spec EJB 3.1, et je vois que pour les méthodes non-transactionnelles la syntaxe est : .
Je pense qu'on est tous d'accord pour dire que le comportement par défaut doit être redéfinissable au cas par cas via des annotations. C'est ce que font les EJB3.1 et Spring, pas d'élément différentiateur là-dessus. En revanche, pour te répondre OButterlin, on sera toujours au moins obligés de se reposer un peu sur le comportement par défaut, à moins de redéfinir pour chaque méthode transactionnelle : - le niveau d'isolation - la propagation - le timeout - readOnly ou pas - ... Donc 2 possibilités: - Soit on est d'accord avec le comportement par défaut des EJBs qui est d'ouvrir une transaction en écriture pour chaque méthode y compris pour les méthodes find, get etc (Alexis, STP corrige moi si je me trompe). - Soit il va y avoir un peu de configuration à écrire, et c'est là que Spring apporte un outillage intéressant. Par exemple, les annotations héritées: Code :
Code :
J'aurais également pu aller plus loin et regrouper un ensemble d'annotations que j'utilise beaucoup comme suit: Code :
Encore une fois, ça c'est pour le cas où l'on souhaite placer des annotations dans le code. Nous avons aussi beaucoup de clients qui ont fait le choix de gérer la politique transactionnelle de leurs applis de manière générique par configuration xml comme suit: Code :
Il y a aussi un 3è cas intéressant: par défaut, la mise en place des transactions nécessite un surcoût au démarrage de l'application. C'est le cas pour les EJB 3.1 comme pour Spring. Chez certains de nos gros clients, sur de très grosses applications, il peut arriver que le temps de démarrage en patisse. Avec Spring (et AspectJ), on peut passer très facilement à un enrichissement du bytecode en phase de compilation. Ca veut dire que ça compile un poil plus lentement, par contre ça démarre plus vite. Encore une fois, je suis très heureux que nous ayons maintenant un standard de qualité. Mais il est important de comprendre que le choix Spring vs Java EE n'est pas seulement une question de philosophie. Il y a des différences techniques importantes. |
||||||||
|
|
00
|
|
|
#62 |
|
Membre Expert
![]() ![]() ![]() Alexis Moussine-PouchkineInscription : janvier 2005 Messages : 1 503 ![]() |
C'est un peu plus fin que ça les attributs de TX d'EJBs, en particulier on ne créé pas nécessairement une nouvelle transaction à chaque invocation (propagation des TX). Même l'enrichissement du bytecode en phase de compilation reste un détail d'implémentation qu'un conteneur EJB sait fournir. Au passage les transactions read-only je trouve ça quand même bizarre, ça sent le "corner case"...
Quoi qu'il en soit je pense que les TX c'est vraiment pas un élément différentiateur. Pas au niveau modèle de programmation en tout cas (coté implémentation on pourra apprécier d'avoir un conteneur EJB qui propose API de programmation et implémentation JTA intégrées et supportées par un seul fournisseur). Tout au plus on voit la différence d'approche entre le Spring "tout-doit-être-explicitement-spécifié" (plutôt en XML) et le Java EE "intégré-mais-redéfinissable" (plutôt avec annotations).
__________________
http://alexismp.wordpress.com |
|
00
|
|
|
#63 |
![]() ![]() |
au dela des differences d'utilisation de spring et de JEE, une grosse difference que je fais c'est la gestion du versionning.
en entreprise, il est TRES difficile de faire evoluer une version de serveur d'appli (surtout quand celui-ci tourne sous la forme de nombreuses instances, et fait tourner de nombreuses applications). (j'ai vu du websphere faire tourner des dizaines voir centaines d'appllications...) Le simple fait d'envisager une non regression empeche toute montée de version. coté spring : l'equipe de developpement choisi une version (en général la derniere) et zou ! (ou peu gerer simplement une montée de version de spring) cote J22 : ben on encaisse la frilosité des equipes de production vis a vis d'une montée de version. ce n'est pas un point noir 'technique' de Java EE, mais un point noir quand meme que l'on a j'imagine tous rencontrés des qu'on a pas le choix de la plate forme. le Lag des montés de versions de serveurs (faut deja qu'il soit disponible, tous ne sont pas aussi exemplaires que glassfish), ajouté au lag de monté reelle de version. De ce coté, le coté embarqué de spring le rends beaucoup plus flexible. peut etre que la solution se trouvera via l'ulitasion d'osgi dans les serveurs d'appli ?
__________________
Blog blog = new MyBlog(); |
|
00
|
|
|
#64 | ||
|
Invité régulier
![]() ![]() Inscription : mars 2008 Messages : 6 ![]() |
Citation:
Citation:
1) Il est trop coûteux d'ouvrir une transaction RW 2) Tu veux réutiliser la même connexion pour l'ensemble de ton service En ce cas, une transaction RO est la meilleure alternative (mais ça peut dépendre des DB). C'est aussi très utile avec Hibernate, parce qu'il optimise son cache et ne compare pas tous les objets avant fermeture de la session. C'est vraiment une bonne pratique. |
||
|
|
00
|
|
|
#65 |
|
Membre Expert
![]() ![]() Inscription : décembre 2004 Messages : 584 ![]() |
A propos des transactions read only :où peut on lire ces discussions stp ?
De la bonne lecture en perspective, merci d'avance ! ++
__________________
Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont. [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub] |
|
00
|
|
|
#66 | |
|
Membre Expert
![]() ![]() ![]() Alexis Moussine-PouchkineInscription : janvier 2005 Messages : 1 503 ![]() |
Je croyais avoir répondu...
Intéressant, je ne savais pas que c'était possible. [/QUOTE] Les serveurs d'application modernes sont bourrés d'AOP. Simplement ce n'est pas exposé au développeur. Citation:
__________________
http://alexismp.wordpress.com |
|
|
00
|
|
|
#67 |
|
Invité régulier
![]() ![]() Inscription : mars 2008 Messages : 6 ![]() |
@ZedroS, tu peux lire les commentaires de cette thread, c'est assez intéressant :
http://www.theserverside.com/news/th...hread_id=53529 |
|
|
00
|
|
|
#68 | |
|
Membre Expert
![]() ![]() ![]() Alexis Moussine-PouchkineInscription : janvier 2005 Messages : 1 503 ![]() |
Citation:
__________________
http://alexismp.wordpress.com |
|
|
00
|
|
|
#69 | |
|
Membre Expert
![]() ![]() Inscription : décembre 2004 Messages : 584 ![]() |
Citation:
Concernant les transactions read only, tant Mike Keith que l'auteur du sujet semblent réservés quant à leur usage. En gros, leur argument est, si j'ai bien compris, que passer en read only implique de facto l'utilisation de transactions et que celles ci peuvent tuer le système (si grosses charges ou transactions trop longues). Par contre je n'ai pas bien compris si une pile Hibernate + Spring (sans passer par JPA donc) permet d'éviter des transactions s'il y a un flag read only. De façon plus générale, d'ailleurs, j'ai un peu de mal à bien me représenter les cas d'usages majoritaires, dixit Mike et Mark, de lecture de BDD sans read only/transactions (et quand, précisément et dans des cas bien moins fréquents, un read only/transaction serait approprié), Perso j'aurai tendance à considérer l'aspect transactionnel en lecture dès que les données en dessous ne sont pas read only, histoire de m'assurer de la consistence de ma lecture. Peut etre que l'ebook m'éclairera sur le sujet ! ++
__________________
Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont. [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub] |
|
|
00
|
|
|
#70 |
|
Invité régulier
![]() Inscription : juin 2008 Messages : 17 ![]() |
Longue vie à ton clavier, j'imagine que dorénavant va falloir standardiser tout ça.. pour un JEE newbie comme moi, on se perd avant même d'avoir commencer à coder, quoi utiliser au juste.. et s'il faut essayer toutes les technologies pour se faire un avis et savoir quel est le meilleur, on est bien partie pour une très longue chevauchée.. et c'est même pas sur que ça va payer
mais bon.. peut être me trompe-je..
|
|
|
00
|
|
|
#71 |
|
Membre du Club
![]() François HHDéveloppeur Java Inscription : septembre 2002 Messages : 62 ![]() |
Tant qu'a attaquer un nouveau projet direction les derniers standards
Pour le metier EJBs sans hésitation. EJB 3.1, MDB, CDI, JPA 2.0, Servlet 3.... Interceptors, Singletons, EJBs Asynchrones. On essaye et on adopte. Pour l'ihm, je suis en revanche perplexe. j'opte pour Flex actuellement, mais je ne demande qu'a changer d'avis. Un faible pour XUL aussi, mais non standard et surtout un je m'en foutisme total de la part de mozilla qui on loupé le coche des RIAs. JavaFX ? ce que j'en ai vu ne m'a pas convaincu. HTML5 ? incomplet pour le RIA, non typé (javascript) Quoi d'autre ? |
|
|
00
|
|
|
#72 |
![]() ![]() |
Coté RIA : il semble que HTML5 soit la solution d'avenir. Par contre, rien de folichon coté JEE. Si tu es pret a faire du javascript : tu peux partir sur jax-rs pour faire la partie serveur en rest (excellente api, tres bien pensée), et te trouver un systeme de templating correct (google closure template par exemple, ou StringTemplate)
(sinon le framework officiel web JEE, c'est JSF. bon perso, a part sous la torture, je ne l'utiliserais pas)
__________________
Blog blog = new MyBlog(); |
|
00
|
|
|
#73 |
![]() ![]() Inscription : novembre 2006 Messages : 5 087 ![]() |
|
|
|
00
|
|
|
#74 |
![]() ![]() |
1 : c'est complexe : faire son propre composant est difficile, le life cycle d'un bean jsf est horrible, il y a encore du xml de navigation inutile etc... Pire que tout, c'est un framework de composant ou il faut ensuite faire du xml dans le html a coups de <h:text etc... : le pire des deux mondes : des composants et un langage de templating mediocre.
Si on a pas le composant necessaire dans une lib : il est quasi impossible d'aller le chercher dans une autre. 2 : ca n'est adapté qu'aux applications : impossible de faire un site web qui ressemble a quelque chose. pas possible de faire du portail, du cms. Il est quand même evident qu'un framework a base de composants n'est pas adapté a tous les developpements web : sauf dans le monde JEE ou pour JEE6, les jsp ont été depreciées sans remplacement. 3 : ca rame : ca consomme beaucoup de memoire et de cpu. Un vrai probleme sur les sites a forte charge. 4 : ca genere du html horrible. Au final : c'est tout sauf du web. Pas d'url restful, une integration d'ajax mediocre, pas d'acces au js. impossible d'integrer facilement un plugin jquery, utiliser les nouvelles fonctionnalités des navigateurs est compliqué... etc..
__________________
Blog blog = new MyBlog(); |
|
00
|
|
|
#75 | ||
![]() ![]() Inscription : novembre 2006 Messages : 5 087 ![]() |
On dirait que ton appréciation date un peu. JSF 2.0 inclue pas mal de choses dont :
templating facelets support total d'ajax la création de composent ultra simple Après, pour l'intégration de jQuery, je ne sais pas trop ce que tu cherches à faire mais on peut référencer et utilier jQuery avec JSF 2 avec Code :
<h:outputScript library="jquery-ui-1.8.6/js" name="jquery-1.4.2.min.js"/> Ca ne veut pas dire qu'on ne peut plus utiliser les jsp, pour les vieilles applications, voir les 2 Code :
Là, je n'ai pas assez de recul pour en parler, je ne fais que des applications d'entreprises, l'aspect performance n'est pas trop important. |
||
|
|
00
|
|
|
#76 |
![]() ![]() Logan Développeur Java Inscription : août 2005 Messages : 1 736 ![]() |
La partie AJAX est déléguée aux bibliothèques de composant comme RichFaces.
Côté performance, je suis peu dans le même cas qu'OButterlin. Cependant on a fait une maquette avant de lancer la migration de Struts1 + Framework Ajax maison ultra-simple ver JSF/RichFaces. Et on arrive à des charges similaires. Pour la création de composants, un gars tout neuf en dev web a créée une nouvelle Combobox qui répondait à notre ancien framework maison en quelques jours. Pour le XML de navigation, tu voudrais un système d'annotation ? Franchement je suis pas fan des annotations à tout va mais pourquoi pas. Ceci étant les règles de navigation de situe au dessus des beans selon moi. Concernant les bibliothèques de composant, je te rejoins sur le principe. Quand tu en choisis une, tu ne pourras pas en sortir et il faudra utiliser des composants prévues pour cette bibliothèque. Tu peux très bien faire des portlet avec JSF et c'est même prévue pour ! Tu peux même accéder indépendamment en mode portlet/servlet à une application déployée. Pour le CMS, je pense que c'est possible. Mais il te faudra une bibliothèque (pas nécessairement de composant) ou une implémentation orienté dans ce sens. D'ailleurs la gestion de contenu n'est clairement pas la cible de JSF qui s'inscrit dans une logique Java EE. Pour le côté RESTFUL, comme le CMS ca reste possible. Je vois rien qui l'empêcherait. Concernant le HTML générer j'avoue ne pas avoir regardé mais ca doit respecter le XHTML donc au moins ca devrait passer le validateur du W3C. JSF n'est pas orienté Ajax à la base. C'est simplement un framework web, l'Ajax est une partie spécifique du web.
__________________
Java : Forum - FAQ - Java SE 7 API - Java EE 6 API ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !) Une solution vous convient ? N'oubliez pas le tag ![]() Signature par pitipoisson |
|
|
00
|
|
|
#77 |
|
Invité de passage
![]() Achref NEFZIÉtudiant Inscription : avril 2011 Messages : 14 ![]() |
Bonjour;
est ce vous avez une tutorial pour une application hibernate spring vaadin? merci |
|
|
01
|
Copyright © 2000-2013 - www.developpez.com