Hier soir j’ai compilé la derniere version de JBoss Seam 2.0 Beta 1 toute fraiche tombée de CVS. La release officielle est pour bientôt mais j’avais envie (et besoin) de vérifier comment mes applications passeront en 2.0
Tout d’abord au niveau des packages, comme Gavin l’a expliqué dans un post (voir forum JBoss), il y a eu une réorganisation et un nettoyage des packages. De manière très concrete, il faut prévoir un peu de refactoring au niveau des imports mais rien de très compliqué.
Au niveau de la configuration, attention au fichier /resources/WEB-INF/components.xml qui a pas mal changé. L’intégration du système d’Identity de jBPM fait qu’il faut reprendre ce fichier, sous peine sinon de se retrouver avec ce genre d’exception:
11:20:48,973 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/seam-matstan]] Exception sending context initialized event to listener instance of class org.jboss.seam.servlet.SeamListener java.lang.RuntimeException: error while reading /WEB-INF/components.xml at org.jboss.seam.init.Initialization.initComponentsFromXmlDocument(Initialization.java:136) at org.jboss.seam.init.Initialization.create(Initialization.java:86) at org.jboss.seam.servlet.SeamListener.contextInitialized(SeamListener.java:34) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3854) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4359) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:761) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:741) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:553) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
Attention aussi au niveau de la qualification de nommage des composants dans Seam. Exemple trivial: j’ai une class Session qui traine dans ma conversation. Or il faut savoir que certains composants Seam sont branchés avec une @Factory… Si vous avez un attribut « session » que vous voulez injecter comme sur cet exemple:
@In MyObject session;
… cela ne marche pas car Seam enregistre aussi ce meme nom pour la session Seam, en l’occurence ici org.jboss.seam.web.session.
En général il est bien de forcer les noms des composants pour éviter ce genre de problèmes.
Sinon je suis à fond dans jBPM. La version 3.2.1 que Gavin intégre (il y a des commits sur CVS en ce moment) offrira quelques nouvelles fonctions:
- Notification par email lors de l’execution d’une tâche en spécifiant notify= »true » dans une task-node
Gestion de modèles d’emails pour cette partie
- Gestion des Calendriers. Cela permet par exemple de programmer une task durant les jours ouvrés d’une societé. Ou pour la finance, d’utiliser des calendriers cambistes afin d’affecter des tasks selon les dates d’ouverture de la bourse… (grand sourire)
- Gestion des « due Date », « start Date », « end Date » sur les tasks. Il devient facile aussi de demander au systeme d’envoyer un email de rappel 2 jours avant l’échéance d’une task par exemple. Tout ceci grâce à jBPM.
Concernant la partie JSF, je déconseille d’essayer d’installer Tomahawk. Dommage car l’un des composants d’agenda est sympa. Mais Gavin King sur les forums de JBoss a expliqué les problèmes rencontrés pour faire fonctionner cette API avec Seam 2.0
Coté Ajax4jsf et RichFaces, ces deux API sont très simples à utiliser et vraiment mature. Pour se faire une idée des applications Seam 2.0, il faut vraiment tester seamdiscs. Sur le modèle de MySpace, la démo montre quelques composants de RichFaces.
Je vous laisse tester par exemple la SuggestionBox en allant sur le site d’Exadel:
http://livedemo.exadel.com/richfaces-demo/richfaces/suggestionBox.jsf?c=suggestionBox
Merci aussi sinon pour les emails reçus, j’ai de plus en plus de monde qui vient sur ce blog, avec aujourd’hui plus de 400 visiteurs uniques différents. Cela commence à faire du monde, je vois que les gens viennent de partout, cela fait vraiment plaisir de lire vos commentaires et vos encouragements. Merci !
Salut,
Merci pour tes remarques
actuellement j’ai le même message mais je ne trouve pas comment changer dans components.xml pour que ç amarche… voici en résumé mon environnement :
Path jboss : C:\jboss-4.2.3.GA-jdk6
Path jboss-seam C:\jboss-seam-2.1.0.CR1
Path ANT C:\Program Files\Java\apache-ant-1.7.0
Le driver postgresql est dans C:\jboss-4.2.3.GA-jdk6\server\default\lib
eclipse EUROPA
JBOSSTOOLS 2.1.1.GA
voici l’erreur au niveau du log :
2008-11-20 23:49:34,484 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/WebStock]] Exception lors de l’envoi de l’évènement contexte initialisé (context initialized) à l’instance de classe d’écoute (listener) org.jboss.seam.servlet.SeamListener
java.lang.IllegalStateException: duplicate factory for: org.jboss.seam.web.webSession (duplicate is specified in components.xml)
at org.jboss.seam.core.Init.checkDuplicateFactoryExpressions(Init.java:222)
at org.jboss.seam.core.Init.checkDuplicateFactory(Init.java:215)
at org.jboss.seam.core.Init.addFactoryValueExpression(Init.java:278)
at org.jboss.seam.init.Initialization.installComponents(Initialization.java:1018)
at org.jboss.seam.init.Initialization.init(Initialization.java:646)
at org.jboss.seam.servlet.SeamListener.contextInitialized(SeamListener.java:34)
ETC
Juste une remarque : j’avais eu ce pb en testant booking en ayant crée le projet directement d’eclipse, quand j’avais crée le projet via seam-gen… et puis dans eclipse j’avais fait des copier coller des .java, .xhtml, components.xml et pages.xml via le rep examples sous seam >> je n’avais plus ce pb
Maintenant pour mon appli j’ai crée le projet via eclipse et puis j’ai fait un reverse : Seam generate entities …et quand je voulais lancer jboss j’ai eu cette erreur
dois je à chaque fois (je n’ai pas encore essayé) créer le projet via seam-gen et me débrouiller pour le reste !?
Merci pour ton aide
Salut
Ton fichier component.xml n’est pas bon.
Essaye de regarder sur google avec la derniere version.
Ce billet est vieux et il a deja un an.
A bientot
Nicolas