Monthly Archives: avril 2018

25Avr/18

Leader Alfresco/Nuxeo

H/F Leader Alfresco/Nuxeo / Nantes / 25/04/2018

Pour accélérer notre développement, nous recherchons des leaders techniques Alfresco et Nuxeo. BlueXML, expert reconnu Alfresco, accompagne ses clients dans l’optimisation de leur cycle documentaire. Vous accompagnerez nos équipes dans les missions de choix des solutions, réponse aux AO, soutenance, conseil pour le déploiement de solutions de gestion documentaire, gestion des processus métiers, archivage intermédiaire et définitif. Nos expertises sont réalisées autour des logiciels Alfresco Content Services, Nuxeo, Alfresco Process Services, Flowable, Vitam… Et Angular pour construire les interfaces métier/utilisateur d’accès ECM/BPM/Archivage.

1 poste est à pourvoir. Postulez.

Vous évoluerez dans une organisation collaborative. Et nous attendons de vous une participation active à la définition de la stratégie produit, vision d’avenir pour l’accompagnement de nos clients dans leurs problématiques de digitalisation, votre participation à des conférences comme l’Alfresco DevCon ou le BlueSummit.

Votre rémunération et Avantages

En fonction de votre profil et de vos expériences, il vous sera proposé une rémunération brute annuelle de

45 à 60 K€.

Et vous bénéficierez des avantages mis en place par BlueXML :
[list style=”list12″ color:”#6699ff”]

  • Mutuelle familiale, Tickets Restaurant, Repos compensatoires de 11 jours/an
  • Blue Friday : vendredi pm réservé à vos projets open source, veille, formation, GT méthodologie, outils, produits…
  • Un cadre de travail haussmannien en plein centre ville de Nantes
  • Prise en charge transports / Bicloo
  • Télétravail
[/list]

Voir notre politique de recrutement et d’intégration

Nous contacter.

25Avr/18

Ingénieur Etudes & Développement

H/F ingénieur Etudes & Développement / Nantes / 25/04/2018

Pour accompagner notre développement, nous recherchons de nouvelles forces vives pour renforcer nos équipes. Réalisées en mode projet, les missions qui nous sont confiées sont le déploiement de solutions de gestion documentaire, gestion des processus métiers, archivage intermédiaire et définitif. Nos expertises sont réalisées autour des logiciels Alfresco Content Services, Nuxeo, Alfresco Process Services, Flowable, Vitam… Et Angular pour construire les interfaces métier/utilisateur d’accès ECM/BPM/Archivage.

3 postes sont à pourvoir. Postulez.

Vous évoluerez dans une organisation collaborative. Et nous attendons de vous une participation active à l’amélioration des processus, à la communication de vos travaux par des publications, votre participation à des conférences comme l’Alfresco DevCon ou le BlueSummit.
Il vous sera aussi proposé, au delà des projets de développement clients :
[list style=”list12″ color:”#6699ff”]

  • Le développement de modules Alfresco
  • L’exploration de nouvelles solutions techniques
  • La communication de vos travaux et contribution à des projets open source
[/list]

Votre rémunération et Avantages

En fonction de votre profil et de vos expériences, il vous sera proposé une rémunération brute annuelle de

30 à 42 K€.

Et vous bénéficierez des avantages mis en place par BlueXML :
[list style=”list12″ color:”#6699ff”]

  • Mutuelle familiale, Tickets Restaurant, Repos compensatoires de 11 jours/an
  • Blue Friday : vendredi pm réservé à vos projets open source, veille, formation, GT méthodologie, outils, produits…
  • Un cadre de travail haussmannien en plein centre ville de Nantes
  • Prise en charge transports / Bicloo
  • Télétravail
[/list]

Voir notre politique de recrutement et d’intégration

Nous contacter.

24Avr/18

Hot Reloading en Alfresco avec HotswapAgent

Pour développer en Java sur Alfresco, il faut absolument mettre en place une solution de hot reloading, car le temps de redémarrage du serveur de la plateforme est bien trop long pour pouvoir tester facilement les changements au code. Cela concerne aussi le développement de scripts serveur en JavaScript qui sont exécutés par le moteur Rhino : il n’est pas normal pour un dev JavaScript de devoir attendre quelques minutes avant de tester une petite modification du code.

Alfresco propose deux solutions : JRebel (payante) et HotswapAgent (open source). Pour l’instant j’ai choisi de ne pas investir dans JRebel et de bien tester son concurrent gratuit pour voir s’il suffit. Alfresco nous donne un tutoriel officiel pour l’utiliser, mais il manque quelque passage (notamment l’utilisation dans Eclipse qu’on ne trouve que pour JRebel), donc je vais refaire le tour pour arriver a un petit projet basé sur l’archétype Maven et le code démo qu’il contient.

La liste de courses

Nous allons utiliser un correctif pour la machine virtuelle Java (ne paniquez pas, il s’installe à côté, sans modifier la VM originale). Téléchargez donc la version pour Java 8 de DCEVM (version 8u152 à l’heure).

Bien évidemment, il faut avoir exactement la même version de Java, donc si vous utilisez une version différente, allez fouiller dans l’archive Oracle pour trouver la bonne.

Enfin, le vrai HotswapAgent. Inutile de télécharger la version la plus récente : pour Alfresco il faut utiliser la 1.0.

Voici un résumé des fichiers que j’ai utilisés dans Linux :

L’installation

Après avoir installé le JDK (pas besoin de l’installer en tant que administrateur), appliquez le correctif en utilisant cette commande :

$ java -jar DCEVM-8u152-installer.jar

En Windows on peut aussi taper deux fois sur DCEVM-8u152-installer.

Il s’agit d’un installateur qui vous donne une interface utilisateur assez simple :

Ajoutez la VM que vous venez d’installer et après tapez sur Install DCEVM as altjvm :

Quant au JAR du HotswapAgent, il faut tout simplement le mettre quelque part et se souvenir de son parcours.

Creation d’un projet

Créez un projet Maven comme indiqué dans la documentation Alfresco :

mvn archetype:generate -Dfilter=org.alfresco:

Choisissez l’archétype « All-in-One » et configurez les paramètres comme vous voulez.

Configuration d’Eclipse

Après avoir rajouté le JDK installé à la liste des JREs disponibles dans Eclipse (Window > Preferences > Java > Installed JREs), importez le projet (la documentation officielle explique comment faire et vous l’avez déjà fait plusieurs fois, donc je vous évite les détails).

Exécution du projet en mode hot reloading

Enfin, vous êtes prêts à créer une configuration pour exécuter le code. Dans les configurations de debug, créez-en une nouvelle de type Maven. Les paramètres à définir sont :

  • Base directory ${project_loc}
  • Goals clean install alfresco:run
  • Dans l’onglet JRE, sélectionnez le JRE avec le correctif DCEVM
  • VM arguments -Xms256m -Xmx2G -javaagent:/<parcours du HotswapAgent>/hotswap-agent-1.0.jar -XXaltjvm=dcevm

(Je vous conseille aussi de sélectionner Skip Tests, parce que la VM Hotswap est plus lente, donc c’est mieux de vérifier les tests séparément.)

Cette configuration peut être exécuté en mode DEBUG. Il faudra attendre un peu plus que d’habitude avant de pouvoir se connecter à Alfresco, mais il vaut le coup.

Cela donne quoi ?

Nous allons faire le test proposé par Alfresco dans le tutoriel JRebel : en se connectant à http://localhost:8080/alfresco/s/sample/helloworld, ou ici ;  le résultat sera Message: ‘Hello from JS!’ ‘HelloFromJava’

Sans arrêter le processus de debug, nous allons modifier ce message qui est généré par trois fichiers du projet platform-jar (on peut les ouvrir en tapant Ctrl+R et helloworld) : helloworld.get.js, helloworld.get.html.ftl et HelloWorldWebScript.java. Habituellement, un changement à chacun de ces fichiers entraine un redémarrage du projet.

Allons donc changer les messages :

  • dans helloworld.get.js remplacez model["fromJS"] = "Hello from JS!"; avec model["fromJS"] = "Bonjour de JS !";
  • dans helloworld.get.html.ftl remplacez Message: '${fromJS}' '${fromJava}' avec Messages : '${fromJS}' et '${fromJava}'
  • dans HelloWorldWebScript.java remplacez model.put("fromJava", "HelloFromJava"); avec model.put("fromJava", "Bonjour de Java");

À noter que chaque fois que vous tapez Ctrl+S, les changements sont pris en charge à l’instant et le log vous en donne confirmation. Un coup de F5 dans Firefox vous donne le nouveau message qui arrive des trois fichiers modifiés : pour l’instant rien à envier à JRebel.

Conclusion

Je trouve encore plus intéressante de pouvoir exécuter mes tests d’intégration en mode debug hot reloading, ce qui donne la possibilité de redémarrer à la volée une méthode qu’on vient de changer. Cela sera peut-être le sujet d’une autre article si cela vous intéresse.