Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

utilisation de librairies AWT et nécessité de XWindow

7 réponses
Avatar
Joe
bonjour,
je cherche à faire fonctionner une webapp, sous Tomcat, sur un
serveur linux qui ne dispose pas de XWindow (logique pour un serveur...)

or, j'utilise des bibliothèques qui exploitent des classes awt
(telles que Image, ou IconImage), qui, pour fonctionner, cherchent
apparemment a se connecter à un serveur X

y a t'il un moyen de contourner cette connexion (je ne vois pas bien
en quoi le serveur X peut etre utile pour charger une image en mémoire)
ou y a t'il une astuce qui me permettrait d'éviter d'avoir X en mémoire
sur ce serveur ?

merci d'avance !
joe

7 réponses

Avatar
Manu
Joe wrote:
y a t'il un moyen de contourner cette connexion (je ne vois pas bien
en quoi le serveur X peut etre utile pour charger une image en
mémoire) ou y a t'il une astuce qui me permettrait d'éviter d'avoir X
en mémoire sur ce serveur ?


Bonjour,
Essaie avec cette instruction :
System.setProperty("java.awt.headless","true");

--
Manu

Avatar
jerome moliere
Manu wrote:
Joe wrote:

y a t'il un moyen de contourner cette connexion (je ne vois pas bien
en quoi le serveur X peut etre utile pour charger une image en
mémoire)
le probleme vient de la couche peer chargeant les .so ...si elle ne les


trouve pas poum :)

ou y a t'il une astuce qui me permettrait d'éviter d'avoir X
en mémoire sur ce serveur ?



Bonjour,
Essaie avec cette instruction :
System.setProperty("java.awt.headless","true");



changer de librairies....
c'est con mais certaines libs de generation de fichiers PDF a la volee
evitent ce type de probleme qui survient par exemple avec FOP...

Jerome


Avatar
Bruno Conductier
Joe wrote:
je cherche à faire fonctionner une webapp, sous Tomcat, sur un
serveur linux qui ne dispose pas de XWindow (logique pour un serveur...)

or, j'utilise des bibliothèques qui exploitent des classes awt
(telles que Image, ou IconImage), qui, pour fonctionner, cherchent
apparemment a se connecter à un serveur X

y a t'il un moyen de contourner cette connexion (je ne vois pas bien
en quoi le serveur X peut etre utile pour charger une image en mémoire)
ou y a t'il une astuce qui me permettrait d'éviter d'avoir X en mémoire
sur ce serveur ?


jusqu'a present on resolvait le probleme en installant un emulateur de
type xvbf (par exemple http://www.javasource.org/GifServlet/linux.html
ou http://chartworks.com/support/server/XvfbonUnix.html). il semblerait
http://www.jguru.com/faq/view.jsp?EID"2296 que l'on peut depuis le JDK
1.4 utiliser une propriete java.awt.headless=true (j'ai pas teste cette
derniere option - en revanche la premiere fonctionne a coup sur)
Bruno

Avatar
Patrick Ruzand
"Bruno Conductier" wrote in message
news:bnpchi$9ni$
Joe wrote:
je cherche à faire fonctionner une webapp, sous Tomcat, sur un
serveur linux qui ne dispose pas de XWindow (logique pour un serveur...)

or, j'utilise des bibliothèques qui exploitent des classes awt
(telles que Image, ou IconImage), qui, pour fonctionner, cherchent
apparemment a se connecter à un serveur X

y a t'il un moyen de contourner cette connexion (je ne vois pas bien
en quoi le serveur X peut etre utile pour charger une image en mémoire)
ou y a t'il une astuce qui me permettrait d'éviter d'avoir X en mémoire
sur ce serveur ?


jusqu'a present on resolvait le probleme en installant un emulateur de
type xvbf (par exemple http://www.javasource.org/GifServlet/linux.html
ou http://chartworks.com/support/server/XvfbonUnix.html). il semblerait
http://www.jguru.com/faq/view.jsp?EID"2296 que l'on peut depuis le JDK
1.4 utiliser une propriete java.awt.headless=true (j'ai pas teste cette
derniere option - en revanche la premiere fonctionne a coup sur)
Bruno


Le support headless du jdk 1.4 fonctionne tres bien.
Par contre, la propriete java.awt.headless=true doit etre passee
au lancement de la VM (via -Djava.awt.headless=true). Je ne pense
pas qu'un System.setProperty() marche apres avoir lancer la vm. A moins
peut-etre de le faire avant l'initialisation du Toolkit (a confirmer ?).

Sinon, en jdk < 1.4, tu as aussi la solution PJA (dispo sur eteks.com), une
implementation
de AWT en pure java.

--
Patrick


Avatar
Manu
Patrick Ruzand wrote:
Par contre, la propriete java.awt.headless=true doit etre passee
au lancement de la VM (via -Djava.awt.headless=true). Je ne pense
pas qu'un System.setProperty() marche apres avoir lancer la vm. A
moins peut-etre de le faire avant l'initialisation du Toolkit (a
confirmer ?).


Perso je le fais dans une servlet qui est initialisée au démarrage de ma
webapp et cela fonctionne très bien avec JFreeChart. Comme ca pour le
deploiement il me suffit de déposer mon war, pas besions de toucher au
lancement de la VM.

--
Manu

Avatar
Patrick Ruzand
Patrick Ruzand wrote:
Par contre, la propriete java.awt.headless=true doit etre passee
au lancement de la VM (via -Djava.awt.headless=true). Je ne pense
pas qu'un System.setProperty() marche apres avoir lancer la vm. A
moins peut-etre de le faire avant l'initialisation du Toolkit (a
confirmer ?).


Perso je le fais dans une servlet qui est initialisée au démarrage de ma
webapp et cela fonctionne très bien avec JFreeChart. Comme ca pour le
deploiement il me suffit de déposer mon war, pas besions de toucher au
lancement de la VM.


Merci pour ta confirmation. Pour info, tu appel setProperty a quel moment
dans ton code ?

--
Patrick


Avatar
Manu
Patrick Ruzand wrote:
Perso je le fais dans une servlet qui est initialisée au démarrage
de ma webapp et cela fonctionne très bien avec JFreeChart. Comme ca
pour le deploiement il me suffit de déposer mon war, pas besions de
toucher au lancement de la VM.


Merci pour ta confirmation. Pour info, tu appel setProperty a quel
moment dans ton code ?


En fait j'ai créé une servlet Init qui ne sert à qu'à initialiser divers
composants. La méthode public void init() est invoquée par tomcat au
lancement de la webapp car j'ai renseigné le paramètre <load-on-startup>
dans web.xml
C'est donc dans cette méthode init que j'ai placé mon setProperty.
J'utilise également la méthode destroy() qui est elle invoquée lorsque
l'on stoppe la webapp, ce qui me permet de stopper certains composants
"proprement".

Je ne sais pas si c'est la meilleure facon de faire mais en tout cas
elle répond à mes besoins ;)

--
Manu