IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

Impossible de démarrer une application Swing depuis Tomcat sous Linux


Sujet :

Administration système

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Par défaut Impossible de démarrer une application Swing depuis Tomcat sous Linux
    Bonsoir la team,

    je viens vers vous ce soir, car cela fait des jours que j'essaie de trouver une solution pour démarrer sans succès une application Swing depuis un serveur Tomcat sous Linux, en particulier sous CentOs7. Le serveur Linux est un serveur configuré avec une configuration minimum, sans environnement graphique.
    La même installation Tomcat fonctionne pourtant sous Windows.

    Voici la trace de l'erreur que j'obtiens au démarrage de mon application :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    2018-12-30 20:54:35,430 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report] Exception in thread "main" java.awt.AWTError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
    2018-12-30 20:54:35,431 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
    2018-12-30 20:54:35,431 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65)
    2018-12-30 20:54:35,431 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:115)
    2018-12-30 20:54:35,431 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at java.security.AccessController.doPrivileged(Native Method)
    2018-12-30 20:54:35,431 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74)
    2018-12-30 20:54:35,431 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    2018-12-30 20:54:35,431 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    2018-12-30 20:54:35,435 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    2018-12-30 20:54:35,435 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at java.lang.reflect.Method.invoke(Method.java:498)
    2018-12-30 20:54:35,435 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at org.webswing.toolkit.WebToolkit.init(WebToolkit.java:132)
    2018-12-30 20:54:35,435 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at main.Main.initializeExtLibServices(Main.java:120)
    2018-12-30 20:54:35,436 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at main.Main.main(Main.java:50)
    J'ai essayé toutes le solutions imaginables, mais je commencer à être à cours d'idées les amis ...

    Je peux vous exposer les différentes pistes que j'ai essayées si cela vous intéresse.

    Voici une bonne piste à exploiter je pense :
    - j'ai configuré serveur X sur Linux (côté serveur) et également sur Windows (côté client).
    Lorsque je me connecte en SSH -X (X : option d'activation de transit des données via Putty) depuis mon poste Windows et que je lance mon application côté serveur Linux via : "java -jar <mon_appli>.jar" (dans mon serveur Tomcat), les données binaires sont envoyées depuis Linux vers Windows et grâce à X serveur mon application lancée depuis Linux s'affiche sur mon poste Windows.

    La variable "DISPLAY" sous Linux présente dans la stack d'erreur vaut pourtant : "localhost:10.0" (en faisant "echo $DISPLAY").

    Pourquoi vaut-elle ":0.0" sous Tomcat ? Que dois-je configurer ?
    J'ai essayé de rajouter le paramètre "-Djava.awt.headless=true" à la JVM comme préciser ici : https://community.pivotal.io/s/artic...Tomcat-2010240, mais rien y fait ...

    Je commence à baisser les bras, si quelqu'un pouvait me donner une petite piste les amis ...

    Bernard.

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour Bernard

    Tu as fait une application autonome (standalone) en java Swing, et tu veux la faire passer par un serveur tomcat, distributeur de services web. Peux-tu confirmer ?
    A priori, ça ne marche pas.

    La première réaction est que tu devrais transformer ton application en applet, et en faire un vrai service web pour navigateur.

    Ce que tu es en train de faire est super-louche : tu exécutes une appli sur le serveur comme si c'était ton ordi, et tu bidouilles des solutions pour récupérer le résultat et/ou l'interface.
    Si 500 utilisateurs appellent ton appli, alors 500 versions de ton application Swing tourneront sur le serveur ? Allons ...

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2005
    Messages : 38
    Par défaut
    Bonjour,
    Une piste très vague : dans une vie antérieure, j'avais un logiciel de sauvegarde sur un serveur Linux qui fonctionnait aussi en X11. Du coup, au lieu de me mettre sur la console du serveur (en salle climatisée et bruyante), depuis mon PC j'ouvrais une fenêtre putty en SSH sur ce serveur. En ligne de commande je faisais :
    > export DISPLAY="<l'adresse IP de mon PC>:0.0"
    > startX
    ==> et sur mon écran de PC j'avais une fenêtre qui souvrait, qui contenait le bureau Linux. Je pouvais ainsi lancer mon soft de sauvegarde depuis mon PC.

    Ce sont de très vagues souvenirs... la syntaxe est sans doute approximative.
    Mais si ça peut donner des idées.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Par défaut
    Bonsoir Flodelarab et JeanMiG,

    tout d'abord merci beaucoup pour votre contribution les amis.

    Flodelarab,

    l'application en Java Swing est une application Desktop à la base.
    Cependant je souhaiterais aussi la rendre accessible depuis un navigateur Web à un nombre d'utilisateur limité (2 au maximum).
    Il y a une APi existante (webswing) qui permet de rendre cela possible en transformant le code Java en javascript.
    J'ai configuré Tomcat pour pouvoir l'utiliser sur Windows et cela fonctionne bien.
    Je souhaiterais faire de même sous Linux.
    J'arrive bien à lancer l'application en ssh à distance pourtant. Pourquoi dis-tu que cela n'est pas possible de l'exécuter sous Linux ?

    Ce que tu es en train de faire est super-louche : tu exécutes une appli sur le serveur comme si c'était ton ordi, et tu bidouilles des solutions pour récupérer le résultat et/ou l'interface.
    -> Le test que j'ai effectué avait seulement pour but de lancer l'application à distance pour validre la configuration mise en place. La récupération du résultat graphique sur mon ordinateur était seulement un bonus que j'ai découvert pour visualiser l'application sur mon ordinateur puisque le serveur distant sous Linux n'a pas d'environnement graphique.


    JeanMiG,

    Ce que tu dis correspond exactement au test que j'ai effectué.
    En me connectant en SSH avec Putty, l'option Forward X11 est activé, et le DISPLAY est ainsi valorisé sur mon serveur distant sous Linux. Les résultats de l'exécution graphique sont ainsi récupérés par mon serveur client sous Windows.
    Seulement, comme je l'ai dit à Flodelarab plus haut, ce test avait pour but uniquement de confirmer le lancement basique de mon application avec la configuration associée (fichier de configuration, connexion à la base de donnée).

    Une piste peut être, serait de savoir s'il est normal que Tomcat se connecte au serveur X installé, en occurence sur le DISPLAY ":0.0", alors qu'il est valorisé en session à "localhost:10.0". Peut être cela est aussi dû à l'absence d'environnement graphique. J'essaierais d'explorer cette piste ce weekend.

Discussions similaires

  1. Impossible de démarrer une application
    Par LauBu dans le forum PyQt
    Réponses: 1
    Dernier message: 21/05/2015, 11h20
  2. Réponses: 1
    Dernier message: 12/12/2014, 07h51
  3. Réponses: 3
    Dernier message: 06/07/2009, 09h15
  4. Impossible de démarrer une application
    Par *alexandre* dans le forum Weblogic
    Réponses: 1
    Dernier message: 03/06/2009, 22h12
  5. [DOS]impossible de démarrer une application
    Par afrikha dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 22/12/2005, 07h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo