JaliosXperience
fr en
Path > Home > Forums
Link

Plugin DataController et déploiement

Arnaud Maillard - on 6/11/07 at 2:05 PM

Bonjour,

J'ai créer un plugin datacontroller qui fonctionne lorsque je "l'injecte" via "Gestion des modules" dans une instance vierge de JCMS.

Mon soucis est que j'aimerais diffuser, pour mon projet, ce plugin via le déploiement classique. Je vais dans "Gestion des changements" et je génère le delta en ayant pris soin de cocher "Ajouter les modules". Quand j'utilise le gestionnaire de déploiement pour déployer mon delta sur une autre instance JCMS, aucune erreur ne m'est indiqué sauf qu'après déploiement et redémarrage du site, le "gestionnaire des modules" m'indique qu'il ne trouve pas les classes que j'ai écrit et lorsque je vais dans /WEB-INF/lib, je m'aperçois, qu'effectivement, il n'a pas déploié le fichier JAR contenant mes classes.
Bref, je crois que je n'ai pas bien compris comment je pouvais diffuser mon plugin via le gestionnaire de déploiement.
Pourriez-vous me réexpliquer, svp ? (J'ai lu la doc "JCMS 5.7 : Développement de modules")


Cordialement,
Arnaud M.

Jean-Phillipe Encausse - on 6/11/07 at 2:33 PM

Bonjour,

2 solutions:

  1. Vous développez un module générique qui à son propre cycle de version. Dans ce cas vous le packagé dans l'interface du gestionnaire de module et vous le diffusez en interne ou en externe. Les personnes qui en ont besoin le télécharge et écrase leur précédente version.
    1. Ce module doit être développé dans les règle de l'art
    2. Testé dans une version cible de JCMS
    3. Les classes sont packagées dans un .jar
    4. Le tout est packagé dans un .zip dont le nom contient la version du module
  2. Vous développez un module "spécifique" sur un site JCMS. Dans ce cas, dans le gestionnaire des déploiements vous prenez tous les fichiers qui ont changés ainsi que les modules (cocher "Ajouter les modules").

Cela a pour effet de fabriquer un gros zip contenant

  • Comme dans les versions précédentes de JCMS, tous les fichiers sélectionnés.
  • Pour les modules :
    • tous leurs fichiers déclarés (si ils sont déployés)
    • leur archive si elle est présente

Conclusion avec la 2ème approche on ne fait absolument pas de packaging/déploiement, on ne fait que prendre tous les fichiers disponibles.

Arnaud Maillard - on 6/11/07 at 3:11 PM

Si je comprends, je devrais faire mes développements comme si je voulais créer un plugin sauf que je ne fais jamais l'étape de création du ZIP final ?
Je créé un plugin "de base" (partie 3.2 de la doc "JCMS 5.7 : Développement de modules"), je fais mes développements et basta.

Autre question : je vais faire comme vous dites mais néanmoins je ne comprends pas pourquoi après avoir déploié mon datacontroller (et donc le JAR dans /WEB-INF/lib/ - c'est le déploiement du plugin qui l'a déposé là), quand je demande les changements qui ont eu lieu, ce fichier JAR n'apparait pas ?

Arnaud Maillard - on 6/11/07 at 3:33 PM

Oups ! Je reviens un peu sur ce que vous avez dit.
Je viens de penser que j'ai installer le plugin pour les espaces de travail hiérarchisés et que je n'ai eu aucune difficulté à le diffuser via un déploiement classique. Donc j'en reviens à ma première question : pourquoi je n'arrive pas à diffuser mon plugin de la même manière ?
Désolé d'insister mais je ne comprends pas.

Jean-Phillipe Encausse - on 6/11/07 at 3:41 PM

Effectivement si vous faite un unique gros plugin de site le mieux est de suivre la section 3.2.

Maintenant Jalios encourage tous les développeurs JCMS de la planète à développer des plugins JCMS générique afin d'en faire profiter toute la communauté des utilisateurs de JCMS.

C'est la raison pour laquelle si vous avez des parties de votre gros plugin qui peuvent être rendu générique, n'hésitez pas à le faire.

Concernant votre seconde question, lors du packaging d'un plugin on déplace toutes les classe dans un .jar uniquement pour être plus propre. Mais ce "jar" n'est pas listé dans les fichiers du plugin il est ajouté dynamiquement.

Il y a peut-être un bug ? Mais globalement il y a deux approches:

  1. Déployer, packager, diffuser un plugin et donc fabriquer ce .jar qui sera visible dans les autres instance de JCMS qui utiliseront le plugin
  2. Utiliser le gestionnaire de déploiement. Et dans ce cas le .jar n'existe pas, les fichiers du plugin ne sont que des développements organisés et structurés.

Que se passe-t-il si:

  1. on dépose un plugin générique
  2. on effectue des développements sur une copie de travail
  3. on veux faire un déploiement

Théoriquement, le gestionnaire de déploiement est censé prendre tous les fichiers des plugin et donc écraser les fichiers de la webapp cible. Comme ce sont les même tout doit bien se passer

Jean-Phillipe Encausse - on 6/11/07 at 3:49 PM

Quand vous dites:

Le plugin pour les espaces de travail hiérarchisés et que je n'ai eu aucune difficulté à le diffuser via un déploiement classique.

Quand vous parlez de "déploiement classique" vous parlez du gestionnaire de déploiement ou du gestionnaire de plugin ?

Dans le gestionnaire de déploiement on a certainement du copier tous les fichiers du plugin et donc tout s'est bien passé.

Deux pistes:

  • Tous les fichiers avec lesquels on travail sont les fichiers qui sont décrit dans le fichier plugin.xml. Vérifiez que tout est bien déclaré.
  • Un fichier signature.xml est généré dans le répertoire du plugin au démarrage de l'appli. Il contient la signature des fichiers du plugin pour vérifier qu'ils n'ont pas été modifiés. Essayez de le supprimer, peut être qu'il y a une interaction du faite que votre plugin est en cours de développement.

Arnaud Maillard - on 6/11/07 at 6:29 PM

Oui, quand je parle de "déploiement classique", je pense au gestionnaire de déploiement.

J'ai fait plusieurs tests avec mon plugin (qui est des plus simples puisqu'il n'y a qu'un datacontroller qui se contente de renseigner un champ avant enregistrement).
" Voici ce que contient plugin.xml :

...
<plugincomponents>
  <datacontroller class="com.jalios.jcmsplugin.fsucontroller.FSUController" types="FSU" />
</plugincomponents>
...


Je constate que dans le paquetage du plugin, j'ai bien un JAR qui contient la classe voulue.
Quand, ensuite, je fais un delta, je n'ai plus ce JAR; mais le ZIP du plugin contient lui-même le JAR donc pas de problème.
Quand j'applique mon delta sur une instance, après redémarrage, j'ai bien mes répertoires plugin mais mon JAR reste dans le ZIP et n'est pas placé dans /WEB-INF/lib/ !
J'ai constaté qu'il fallait que j'aille dans "Gestion des modules" et que je clique sur "Mettre à jour..." pour que le JAR soit effectivement déployé. Ensuite tout va bien.

J'ai essayé de voir, en utilisant votre plugin JPoints, si j'obtenais la même chose mais lorsque je mets mon delta et que je demande à redémarrer l'appli, celle-ci reste perpétuellement sur la page "Veuillez patientez...". Je précise que dans le delta il y a également mon propre plugin décrit plus haut. Si j'arrête mon serveur d'appli et que je le redémarre, je ne peux plus accéder à l'instance. J'ai un message m'indiquant qu'il y a eu des erreurs pendant compilation. Mais, là n'est pas le problème, ce n'est qu'une instance de test pour moi.
J'ai donc regardé ce qui avait été déployé malgré tout et je vois que le fichier JPointsPlugin.jar n'est pas non plus dans /WEB-INF/lib.
Donc j'en viens à me demander s'il n'y a pas un bug quelque part ?

Jean-Phillipe Encausse - on 6/12/07 at 9:54 AM

Si vous avez un .jar qui se trouve dans un .zip c'est que vous avez packagé votre plugin avec la solution 1. Ce qui ne sert a rien étant donné que vous le déployé avec la solution 2. Dans la solution 2 (si je fais un raccourcie) on ne s'intéresse qu'aux fichiers du plugin on se fiche du zip, du jar, ...

Par contre si l'on dépose un plugin, qu'on le dézippe puis plus tard on le prends dans les fichier à déployer peut être qu'on oublie de prendre le .jar je vais tester.

Arnaud Maillard - on 6/12/07 at 10:34 AM

Désolé, je me suis sans doute embrouillé et je n'ai pas été très clair (mais je pense avoir compris les solutions 1 et 2 dont vous avez parlé).

Mon idée est :
- Je fais un plugin comme pour la solution 1
- J'installe ce plugin sur une instance JCMS
- Depuis cette instance, je fais un delta et je le déploie

Tout cela revient donc à faire un mixe des solutions 1 et 2.

Pourquoi je fais des plugins que je ne diffuserais de toute façon jamais en dehors de mon projet ?
- Pour me conformer aux nouvelles méthodes de développements que vous souhaitez avec JCMS 5.7 (et que je trouve très bien d'ailleurs)
- Parce que je me dis que lorsqu'il faudra faire de la maintenance, s'il s'agit juste d'un problème avec un plugin, je n'aurai qu'à le corriger et envoyer le plugin corrigé. Pas besoin de passer par une la phase classique (copie de travail, pré-expo,...) qui est particulièrement (trop) contraignante selon moi (mais ça, c'est un autre débat)
En résumé, j'espère que les plugins me permettront de limiter plus tard les déploiements par delta.

Jean-Phillipe Encausse - on 6/12/07 at 10:43 AM

Pour me conformer aux nouvelles méthodes de développements que vous souhaitez avec JCMS 5.7 (et que je trouve très bien d'ailleurs)

Très bien

Parce que je me dis que lorsqu'il faudra faire de la maintenance, s'il s'agit juste d'un problème avec un plugin, je n'aurai qu'à le corriger et envoyer le plugin corrigé.

C'est l'idéal dans ce cas c'est la solution 1. Théoriquement avec cette approche vous n'avez pas besoin de prendre les fichiers des plugins lors d'un déploiement.

Globalement, un problème possible est peut être qu'on oublie de prendre les jar des plugins lors de la création du zip de déploiement, comme je le disais précédement je vais regarder si il y a un bug.

Login   Home   fr en
JALIOS SA - SIREN 440 126 035