Le déclin des serveurs d’applications Java

tomcat-dockerLes serveurs d’applications Java sont-ils en train de mourir à cause de Docker? c’est la question que s’est posé James Strachan dans son article écrit en anglais: the decline of Java application servers when using docker containers
Trouvant l’article particulièrement intéressant, j’ai demandé l’autorisation à son auteur pour le traduire afin de vous le proposer en français. L’article est traduit le plus fidèlement possible, seul la conclusion a été raccourcie et adaptée mais elle reste conforme à la vision de l’auteur initial.

Depuis des années, l’éco-système Java utilise les serveurs d’application. Le principe d’un serveur d’application Java (Servlet, JEE ou OSGi) repose sur un processus Java dans lequel on déploie & retire du code grâce à une archive de déploiement (jar, war, ear, bundle, etc). Le processus Java reste donc actif dans le temps et s’adapte au code. Les serveurs d’application ont donc le plus souvent un répertoire ou l’on dépose  une archive qui va modifier le code en cours d’exécution.

Lire la suite

Retour sur la mise en place d’une usine logicielle

Suite à un commentaire sur l’article concernant les problématiques liées à la mise en place d’une usine logicielle pour mes applications Web J2EE, je vous fait part ici des éventuels débuts de réponses que je pourrais apporter à ces problématiques.

Ce précédent article date un peu, mais ces 3 dernières années ont été concentrées à répondre à ces questions que je m’étais posées à l’époque.

J’ai quelques articles plus complet en préparation à ce sujet, mais je n’ai malheureusement pas eu le temps de les finaliser pour vous les proposer. Cet article est donc une réponse intermédiaire.

Lire la suite

Plantage Spring upgrade 3.0.x to 3.1.x NoSuchFieldError

Après une mise à jour vers la nouvelle version de Spring 3.1, si vous avez l’erreur « java.lang.NoSuchFieldError: NULL »

Il faut vérifier que la librairie spring-expression est bien à jour. Maven ne le fais pas automatiquement.

Si ce n’est pas déjà fait, inclure la dépendance spring-expression avec la bonne version.

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>3.1.2.RELEASE</version>
<scope>compile</scope>
</dependency>

Performance de la fonction SQL batchUpdate de Spring

Cette semaine, j’ai du mettre à jour un batch d’import de données d’un fichier plat dans une base de données. L’optimisation de ce script n’ayant jamais été une priorité, le batch importait environ 60000 lignes et prenait entre 15 et 20 minutes. En quelques ajustement, j’ai réussit à importer plusieurs centaines milliers de lignes en à peine quelques minutes. Aussi étonnant que cela puisse paraître, l’optimisation d’un tel script ne nécessite pas de connaissances particulières ni même de mettre en place une solution de multi-threading utilisant les ordinateurs de la NASA ou ceux de Google. Tout est proposé de manière native au sein de la librairie JDBC (depuis la version 2) et permet le traitement par lot des requêtes SQL . Par conséquent, toute les solutions reposant sur cette API de connexion à un base de donnée peuvent également utiliser cette fonctionnalité, que ce soit JdbcTemplate pour Spring ou encore Hibernate.

Lire la suite

Accéder au contexte Spring depuis une JSP TagLibs JSTL

Lors d’un développement d’un projet web Spring, si vous utilisez les JSP, il est parfois utile de créer vos propres librairie de tag (ou taglibs). Malheureusement, au sein de ces taglibs,  il ne vous est pas possible d’accéder simplement au contexte d’application Spring pour y récupérer vos beans. Spring MVC met à disposition différentes solutions pour accéder aux contextes d’application que ce soit pour vos beans, vos traduction de Messages (MessageSource), votre Locale ou encore votre Theme.

Lire la suite