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 !

2 réflexions sur « JBoss Seam 2.0 Beta 1 premiers tours de clefs »

  1. 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

  2. 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

Les commentaires sont fermés.