Comment faire fonctionner un programme Java avec JFreeChart si le serveur sous unix n’a pas de serveur X ?
Question d’un client: notre application J2EE utilise JFreeChart pour générer des graphiques sur des pages webs. Or lorsque l’application est déployée sur une machine ne disposant pas de serveur X sous Unix, des exceptions Java apparaissent lorsque le moteur génère des images.
Réponse: en effet sur un serveur en rack sans souris, sans clavier et à plus forte raison sans serveur X, Java doit être configuré pour fonctionner en mode headless. Si vous avez accès au code, vous pouvez ajouter une proprieté système à l’initialisation:
System.setProperty("java.awt.headless", "true");
Vous pouvez sinon passer cette proprieté système lors du démarrage de l’application:
java -Djava.awt.headless=true ...
Les classes Java de la librairie AWT sous Solaris et Linux ont des dépendances natives sur certaines classes X11. Lorsque JFreeChart génère une image PNG ou autre, il utilise (pour des raisons de performances) les librairies natives de la plateforme. Cela a un sens si votre serveur unix a une installation de ces librairies, ce qui n’est pas toujours le cas. Pour cela il est recommandé pour les applications web ou j2ee qui utilisent JFreeChart de forcer le mode headless pour éviter des soucis.
0 no like