jeudi 29 décembre 2011

Déployer une application JavaEE via l'API Cloudbees

Dans un billet précédent, j'avais fait un premier essai de Cloudbees, en utilisant son interface graphique. Un des avantages offerts par les solutions Cloud est de pouvoir manipuler toute l'infrastructure par du code. Dans le cas de Cloudbees, le SDK permet de manipuler son compte et son contenu par des scripts Shell, via le SDK, mais aussi par une API HTTP / XML. Pour faciliter le travail, une API Java a été développée au dessus de cette dernière.

J'ai donc voulu tester le déploiement d'une application Java EE 6, empaquetée dans une archive war sur Cloudbees.

lundi 10 octobre 2011

Les sorties de l'été 2011

J'ai écrit récemment deux articles, sur le site de mon entreprise, concernant les deux sorties marquantes de cet été 2011. Le premier concerne JavaSE 7 et le second parle de JBoss AS 7. J'ai un peu tardé à sortir celui-ci parce que j'ai voulu donner la priorité à la préparation d'une session à SoftShake sur le sujet ; les slides que j'ai utilisés pour la présentation sont d'ailleurs embarqués en fin d'article.

Le site de l'entreprise n'autorise pas les commentaires, je vous invite à les écrire ici. Bonne lecture et merci pour vos retours.

jeudi 18 août 2011

Versions mineures de JBoss AS

La sortie des versions mineures 6.1.0 et 7.0.1 en août 2011 est une excellente nouvelle. Ça peut paraître étrange de s'enthousiasmer sur des versions dont le seul but est de corriger des bugs, non ? En fait, ces sorties apaisent une inquiétude née il y a plusieurs mois lorsque RedHat a annoncé ses changements stratégiques pour JBoss.

vendredi 24 juin 2011

Injection de logger avec Spring

Dans mon billet précédent, j'ai mis en place de l'injection contextuelle de logger avec CDI. La solution est particulièrement simple à partir du moment où on pense à utiliser l'InjectionPoint. Comme sur la plupart de projets actuels, il y a (pour l'instant) beaucoup plus de Spring Framework que de CDI, j'ai voulu reproduire l'exemple avec de l'injection par Spring.

Malheureusement, Spring n'a pas d'équivalent à InjectionPoint. Par acquis de conscience, j'ai posé la question sur le forum developpez.net et sur le forum SpringSource. C'est sur ce dernier que j'ai eu la piste la plus concrète : créer une annotation spécifique et utiliser un BeanPostProcessor. Une chose est sûr, la solution existe probablement, mais de façon moins élégante qu'en CDI.

mardi 21 juin 2011

Injection de logger avec CDI

Cette semaine, le projet Lombok a annoncé sa version 0.10 dans laquelle une nouvelle annotation @Log est annoncée. N'étant pas fan de ce projet, à cause de son coté trop magique, j'ai regardé ce qu'il fallait mettre en place pour faire quelque chose de similaire avec CDI. Plus précisément, j'ai voulu mettre en place le mécanisme d'injection pour obtenir un logger avec le moins de code possible.

L'idée n'est pas récente, puisque Seam 1 / 2 proposait déjà un mécanisme de ce type :
@Logger
private Log log;

L'intérêt de CDI est de pouvoir choisir facilement l'utilitaire de Log et de ne dépendre d'aucune API non standard.

mardi 17 mai 2011

Découverte de Cloudbees

J'ai profité d'un passage en Suisse Romande pour assister à la réunion du 12 mai 2011 au JUG de Lausanne. Le sujet de la soirée était le plate-forme CloudBees, présentée par son fondateur, Sacha Labourey. Et bien que j'aie raté le début de la présentation, je dois dire que j'ai été convaincu par la pertinence de l'offre et par la vision de Sacha sur les services dans le nuage à apporter aux développeurs. J'ai donc fait un essai pour mieux comprendre le contenu de l'offre.



Ce billet retranscrit mon ressenti suite à la présentation et à mes premiers essais. Pour une vision plus large des solutions de développement dans le nuage, je vous renverrais vers le très bon article de Kalistic sur le sujet.

jeudi 24 février 2011

Mots de passe chiffrés pour les datasources de JBoss

Dans JBoss, les datasources sont configurées dans des fichiers XML qui contiennent les paramètres de connexion et la configuration du pool. Parmi les paramètres de connexion, on trouve le nom d'utilisateur et le mot de passe, en clair...
<local-tx-datasource>
    <jndi-name>SewaDS</jndi-name>
    <connection-url>jdbc:derby://localhost:1527/sewadb</connection-url>
    <driver-class>org.apache.derby.jdbc.ClientDriver</driver-class>
    <user-name>sewatech</user-name>
    <password>sewapwd</password>
<local-tx-datasource>
Évidemment, ce mot de passe en clair n'est pas la panacée et déclenchera une levée de bouclier au prochain audit de sécurité.

Il existe plusieurs techniques pour chiffrer le mot de passe. Je vais parler ici de la technique du SecureIdentityLoginModule, qui, si elle n'est pas la plus sécurisée, est simple et rapide à mettre en place. Si je veux en parler ici, c'est que malgré sa simplicité, je suis tombé récemment dans un vilain piège.

dimanche 30 janvier 2011

JUnit Runner pour CDI / Weld

Dans mon billet précédent, j'ai proposé d'utiliser un Rule pour tester des composants CDI. Cette technique n'est pas totalement satisfaisante, d'une part parce que l'initialisation se fait pour chaque test et d'autre part parce que son utilisation demande un peu de code. J'ai donc décidé de changer de tactique et développer un Runner.

Pour ce Runner, j'ai fait une classe qui hérite du runner par défaut et j'ai redéfini la méthode run() pour démarrer et arrêter Weld. J'ai redéfini aussi la méthode createTest() afin qu'elle retourne une instance gérée par Weld de la classe de test. Ceci permet d'injecter les objets à tester et donc de réduire sensiblement la quantité de code.

samedi 29 janvier 2011

JUnit Rule pour CDI / Weld

Arquillian est l'outil poussé en avant par les équipes de JBoss pour le tests des composants JavaEE. Je trouve que pour certains tests CDI, cet outil ressemble à de la grosse artillerie et qu'on peut se débrouiller avantageusement sans elle.

Les techniques de Rule de JUnit permettent de faire les initialisations nécessaires avec WeldSE, à condition peut-être d'avoir les bons Scopes.

lundi 17 janvier 2011

Carte des JUGs en France

Depuis quelques temps, j'ai ajouté une référence aux Java User Groups de France et d'alentours en annexe de mes supports de formation. Sur les dernières versions, j'ai trouvé plus sympa de faire ça graphiquement. En plus, avec le nombre de JUGs en France, c'est plus pratique à faire tenir sur une page.

JUGs en France

Je me suis basé sur la carte officielle et sur la liste des JUGs de Jean-Michel Doudoux. N'hésitez pas à me remonter vos remarques : mauvaise position, mauvais logo, JUG manquant,...

Sur ce dernier point, des rumeurs de création de nouveaux JUGs courent : Brest, Montpellier, Clermont-Ferrand,... Si vous avez du nouveau, je suis aussi preneur.

[Edit 06/08/2011] J'ai transféré la carte sur mon wiki, c'est plus facile à mettre à jour.