Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2799 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Serveur X & Ja va sous Linux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Serveur X & Ja va sous Linux

n°900376
mic74
Posté le 17-11-2004 à 09:36:17  profilanswer
 

Quelqu'un sait-il comment accéder au serveur X avec  une Servlet, par l'intermédiaire  
d'un Frame, dans le but d'afficher une image dynamiquement !
Lorsque, dans la servlet, j'appelle Frame.addNotify(), le serveur tomcat me renvoie une erreur !!!
 
Voici le code :
 
import java.io.*;
import java.awt.*;
import javax.servlet.*;
import javax.servlet.http.*;
 
import Acme.JPM.Encoders.GifEncoder;
 
public class HelloWorldGraphics extends HttpServlet {
 
  public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    ServletOutputStream out = res.getOutputStream();  // binary output!
 
    Frame frame = null;
    Graphics g = null;
 
    try {
      // Create an unshown frame
      frame = new Frame();
      frame.addNotify();
 
      // Get a graphics region, using the Frame
      Image image = frame.createImage(400, 60);
      g = image.getGraphics();
 
      // Draw "Hello World!" to the off-screen graphics context
      g.setFont(new Font("Serif", Font.ITALIC, 48));
      g.drawString("Hello World!", 10, 50);
 
      // Encode the off-screen image into a GIF and send it to the client
      res.setContentType("image/gif" );
      GifEncoder encoder = new GifEncoder(image, out);
      encoder.encode();
    }
    finally {
      // Clean up resources
      if (g != null) g.dispose();
      if (frame != null) frame.removeNotify();
    }
  }
}
 
Et voici l'erreur renvoyée :
 
java.awt.HeadlessException
 at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
 at java.awt.Window.(Window.java:310)
 at java.awt.Frame.(Frame.java:419)
 at java.awt.Frame.(Frame.java:384)
 at HelloWorldGraphics.doGet(HelloWorldGraphics.java:18)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:450)
 at org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:180)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
 at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:98)
 at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:176)
 at java.security.AccessController.doPrivileged(Native Method)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:172)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)
 at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)
 at java.lang.Thread.run(Thread.java:595
 
J'ai essayé avec xhost +localhost, mais rien n'y fait !!
Merci d'avance de vos réponses

mood
Publicité
Posté le 17-11-2004 à 09:36:17  profilanswer
 

n°900441
the real m​oins moins
Posté le 17-11-2004 à 10:57:30  profilanswer
 

[:recherche]

n°902650
pascal34
one point !
Posté le 19-11-2004 à 11:02:28  profilanswer
 

Utiliser AWT dans une Servlet, j'aurais jamais osé !!!

n°902702
the real m​oins moins
Posté le 19-11-2004 à 11:54:40  profilanswer
 

pourtant ça marche fort bien. comment tu crois qu'on genere des charts et autres graphiques sur le web?
 
bon.
pour la 25eme fois, je vais donner la solution :o
il faut demarrer le serveur avec les options:

JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true -Dsun.java2d.fontpath=$JAVA_HOME/jre/lib/fonts/"


 
(et encore, l'option des fonts, chuis meme pas sur que ça soit encore utile)


Message édité par the real moins moins le 19-11-2004 à 11:55:26
n°902874
mic74
Posté le 19-11-2004 à 15:42:55  profilanswer
 

Merci, je vais essayer de suite, et vous donne la réponse aussitôt que possible !!!

n°904166
mic74
Posté le 21-11-2004 à 16:06:53  profilanswer
 

Oui, et bien en fait, chez moi (sous Debian Sarge), il  faut mettre l'option java.awt.headless à false, et en plus il faut taper: "xhost local:", pour autoriser les connection en local, pour l'utilisateur de Tomcat, puis il faut redémarrer le serveur tomcat, pour qu'il puisse prenfre en compte les 'modifs'.
Par ailleurs, suite à cette manipulation, j'ai constaté bcp de plantage du serveur X lors de ma deconnexion, donc ja suis passé à tomcat 5.5.4, et là, cela semble fonctionner mieux, car je n'ai plus de plantage du serveur X à ma deconnexion !!!
Donc, pour ceux que ça intéresse .... Je les engage à ne plus utiliser Tomcat4, mais plutôt Tomcat5.
Voilou


Message édité par mic74 le 21-11-2004 à 16:08:39
n°904193
the real m​oins moins
Posté le 21-11-2004 à 17:27:26  profilanswer
 

étrange ton histoire, à priori y'a aucune raison de mettre headless à false...


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°904968
mic74
Posté le 22-11-2004 à 21:04:16  profilanswer
 

Ben oui, moi aussi, je ne comprends pas trop pourquoi.
Si tu as des infos, qui pourraient me permettre une configuration "normale", je suis preneur !!!
merci d'avance.

n°905047
the real m​oins moins
Posté le 22-11-2004 à 22:11:49  profilanswer
 

ben faut voir comment tu demarre ton tomcat, c'est pê betement que tu as mal setté l'option

n°906047
mic74
Posté le 23-11-2004 à 21:11:24  profilanswer
 

En fait, le tomcat que je démarre, est celui fourni par jakarta: j'ai juste suivi les instructions dans le paquet !
En fait, avec ce Tomcat (5.5.4), l'option java.awt.headless=true, est absente de la conf. de démarrage, et ça marche. J' ai essayé en la mettant, et les servlets me signalent une exception: java.awt.headless Exception ... , donc je l'ai retirée ... Ah oui, l'option "-Djava.awt.headless=true" n'est pas à false, mais carrément absente de la ligne de démarrage, si tu veux je faire un copier-coller de cette ligne, cela t'éclairera peut-être ?
Merci d'avance de ton aide !

mood
Publicité
Posté le 23-11-2004 à 21:11:24  profilanswer
 

n°906051
the real m​oins moins
Posté le 23-11-2004 à 21:18:34  profilanswer
 

gni...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Serveur X & Ja va sous Linux

 

Sujets relatifs
ServerSocket et Linux[C] thread sur SUN et sur linux
[ASP] Pas de code sources en clair sur le serveur web ?SQL serveur 2000 : Crypter mots de passe
copie de tables d'un serveur à un autreERREUR au lancement du serveur MYSQL
[C] Compiler un code C (from linux) avec un compiler winJDBC, SQL Serveur et Unicode
l'asp.net, que me faut il comme serveur ?tester l'existence d'un fichier sur le serveur [résolu]
Plus de sujets relatifs à : Serveur X & Ja va sous Linux


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)