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

Servlets/JSP Java Discussion :

Impression sur la sortie standard et point d'arrêt qui ne fonctionne dans une servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 728
    Points : 250
    Points
    250
    Par défaut Impression sur la sortie standard et point d'arrêt qui ne fonctionne dans une servlet
    Bonjour,

    j'ai une enterprise application project sous eclipse Luna où il y a un module client et un module web.

    Sur mon module client, j'ai un programme Main (Main.java) qui appelle un Thread (TestThread.java). Ce thread appel de manière programmatique une servlet qui se trouve dans mon module web (ServletCallSessionBean.java)

    Voici un screenshoot de mon projet

    Nom : Capture d’écran 2014-10-08 à 15.05.28.png
Affichages : 256
Taille : 78,7 Ko


    Voici un extrait de ma classe Main

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    public class Main {
    
    	BufferedReader brConsoleReader = null;
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Main ejbTester = new Main();
    		ejbTester.testHttpRequest();
    
    	}
    
    
    
    	/*
    	 * (non-Java-doc)
    	 *
    	 * @see java.lang.Object#Object()
    	 */
    	public Main() {
    		super();
    		brConsoleReader = new BufferedReader(new InputStreamReader(System.in));
    	}
    
    	private void showGUI() {
    		System.out.println("**********************");
    		System.out.println("Welcome to Book Store");
    		System.out.println("**********************");
    		System.out.print("Options \n1. Add Book\n2. Exit \nEnter Choice: ");
    	}
    
    	private void testHttpRequest() {
    		TestThread thread = new TestThread("A");
    	}
    Voici un extrait de mon Thread

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    public class TestThread extends Thread {
     
     
     
    	static Logger log = LogManager.getLogger(TestThread.class.getName());    //getLogger(
    	//Main.class.getName());
     
     
     
    	public String postURL(URL a_Url, String a_sParamsToPost)
    	{
    		StringBuilder o_oSb = new StringBuilder();
     
    		//recup du saut de ligne
    		String o_sLineSep = null;
    		try
    		{
    			o_sLineSep = System.getProperty("line.separator");
    		}
    		catch (Exception e)
    		{
    			o_sLineSep = "\n";
    		}
     
    		try
    		{
    			HttpURLConnection o_oUrlConn = (HttpURLConnection) a_Url.openConnection();
    			o_oUrlConn.setRequestMethod("POST");
    			o_oUrlConn.setAllowUserInteraction(false);
    			//envoyer des params
    			o_oUrlConn.setDoOutput(true);
     
    			//poster les params
    			PrintWriter o_oParamWriter = new PrintWriter(o_oUrlConn.getOutputStream());
     
    			o_oParamWriter.print(a_sParamsToPost);
    			//fermer le post avant de lire le resultat ... logique
    			o_oParamWriter.flush();
    			o_oParamWriter.close();
     
    			//Lire la reponse
    			InputStream  o_oResponse = o_oUrlConn.getInputStream();
    			BufferedReader o_oBufReader = new BufferedReader(new InputStreamReader(o_oResponse));
    			String sLine;
     
    			while ((sLine = o_oBufReader.readLine()) != null)
    			{
    				o_oSb.append(sLine);
    				o_oSb.append(o_sLineSep);
    			}
    			//deconnection
    			o_oUrlConn.disconnect();
    		}
    		catch(ConnectException ctx)
    		{
    			log.fatal("Connection lost : server may be down");
    			ctx.printStackTrace();
    		}
    		catch (Exception e)
    		{
    			log.error("postURL : "+e.getMessage());
    			e.printStackTrace();
    		}
    		log.debug("retour url="+o_oSb.toString());
    		return o_oSb.toString();
    	}
     
     
    	public TestThread(String name, Context ctx){
    		System.out.println("statut du thread " + name + " = " +this.getState());
    		this.start();
    		System.out.println("statut du thread " + name + " = " +this.getState());
    	}
     
     
    	@Override
    	public void run(){
     
    		try {
    			URL urlForServletTesting = new URL("http://localhost:8080/EJBTutorialWeb/test");
    			postURL(urlForServletTesting, "test");
    		} catch (MalformedURLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    Voici ma servlet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    @WebServlet(name="ServletCallSessionBean", urlPatterns={"/test"})
    public class ServletCallSessionBean extends HttpServlet {
     
    	@EJB(beanName = "LibrarySessionBean")
    	private LibrarySessionBeanLocal monBean;
     
    	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		response.setContentType("text/html;charset=UTF-8");
    		//PrintWriter out = response.getWriter();
    		System.out.println("DEBUT ATTENTE");
    		try {
    			Thread.sleep(60000);
    		} catch (InterruptedException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		System.out.println("FIN ATTENTE");
    		PrintWriter out = new PrintWriter (response.getOutputStream());
    		try {
    			out.println("<html>");
    			out.println("<head>");
    			out.println("<title>Servlet MaServlet</title>");
    			out.println("</head>");
    			out.println("<body>");
    			out.println("</body>");
    			out.println("</html>");
    		} finally {
    			out.close();
    		}
     
    	}
    J'ai les problèmes suivants:

    Dans ma servlet
    1) Quand je suis en mode debug, eclipse le système ne s'arrete pas sur des points d'arret mis dans ma servlet.
    2) Quand j'écris des System.out.println dans ma servlet, je n'ai aucune impression dans ma console

    Avez vous une idée ? Merci d'avance pour vos réponses.

  2. #2
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 30
    Points : 56
    Points
    56
    Par défaut
    Salut,

    Tu as, à vue de nez, un problème d'exécution ... j'ai donc refait le parcours de ton algo et j'ai trouvé quelque chose :

    Le constructeur que t'appelles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private void testHttpRequest() {
    	TestThread thread = new TestThread("A");
    }
    Le constructeur que tu as déclaré avec le démarrage de ton Thread à l'intérieur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public TestThread(String name, Context ctx){
    	System.out.println("statut du thread " + name + " = " +this.getState());
    	this.start();
    	System.out.println("statut du thread " + name + " = " +this.getState());
    }
    Les signatures ne correspondent pas ...

    Flo.
    Il n'y a pas de problème ; il n'y a que des solutions. L'esprit de l'homme invente ensuite le problème.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 728
    Points : 250
    Points
    250
    Par défaut
    Bonjour floww14 et merci pour ta réponse.

    Je suis confus d'une telle erreur et de t'avoir fait passé du temps pour si peu. Merci encore. La discussion est close

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ecrire sur la sortie standard
    Par red210 dans le forum Débuter
    Réponses: 1
    Dernier message: 14/04/2008, 11h27
  2. Réponses: 0
    Dernier message: 13/03/2008, 10h10
  3. Comment afficher sur la sortie standard ?
    Par cranama dans le forum C
    Réponses: 8
    Dernier message: 31/12/2007, 14h44
  4. ré-écriture sur la sortie standard
    Par alex'l dans le forum Langage
    Réponses: 6
    Dernier message: 14/12/2006, 19h05
  5. Réponses: 1
    Dernier message: 24/02/2006, 00h53

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