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

Tomcat et TomEE Java Discussion :

[Tomcat 6.0]Problème avec la classe Desktop


Sujet :

Tomcat et TomEE Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Par défaut [Tomcat 6.0]Problème avec la classe Desktop
    Bonjour

    Après avoir chercher sur votre monumentale forum la solution a mon problème sans réel résultat (j'avoue ne pas avoir tout regardé en détail), je me permet d'écrire ce post.
    Voici mon souci:
    J'utilise java.awt.Desktop dans une Servlet pour envoyer un mail avec la messagerie par défaut de l'utilisateur.

    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
     
    //ENVOIE DU MAIL
    if(Desktop.isDesktopSupported())
    {
    	if(Desktop.getDesktop().isSupported(java.awt.Desktop.Action.MAIL))
    	{
    		try {
    			String texte = "Votre%20questionnaire%20ProfilsC%20est%20maintenant%20accessible%20%E0%20l'adresse%20suivante%20:%0D%0AURL%0D%0A%0D%0ALogin%20:%20"+login+"%0D%0APassword%20:%20"+password;
    			java.awt.Desktop.getDesktop().mail(new java.net.URI("mailto:"+email+"?subject=ProfilsC&body="+texte));
    			response.sendRedirect(general.CheminsDAcces.pathApplication+"patienter.jsp");
     
    		} catch (URISyntaxException e) {
    			// TODO Bloc catch auto-généré
    			e.printStackTrace();
    		}
    	} 
    	else
    	{
    		//La fonction de mail n'est pas supportée par votre système d'exploitation
    		//MODIFIER ID_CANDIDAT
    		response.sendRedirect(general.CheminsDAcces.pathApplication+"messagerieIntrouvable.jsp?id_candidat="+id_candidat+"");
    	}
    }
    else 
    {
    	//Desktop pas supportée par votre système d'exploitation
    	//MODIFIER ID_CANDIDAT
    	response.sendRedirect(general.CheminsDAcces.pathApplication+"messagerieIntrouvable.jsp?id_candidat="+id_candidat+"");
    }
    Vous allez me dire pourquoi je poste cela sur Tomcat. Tout simplement car cela fonctionne parfaitement sous Eclipse. Quand je déploie mon .war sur mon serveur local Tomcat, la fenêtre du mail n'apparait plus.
    Pourtant j'ai vérifier, mon appli renvoie bien TRUE pour Desktop.isDesktopSupported() et Desktop.getDesktop().isSupported(java.awt.Desktop.Action.MAIL), elle rentre bien dans le TRY et fait le bon response.sendRedirect.

    Sinon tout le reste de mon application fonctionne correctement sous tomcat sauf l'ouverture d'un pdf qui utilise également la classe Desktop.
    Etant débutant dans les web application je ne vois pas d'où le problème peut venir. Peut être une mauvaise configuration du serveur Tomcat.

    Pour info j'utilise Eclipse SDK Version : 3.2.0
    avec serveur Tomcat 5.5
    Et mon serveur local Apache Tomcat/6.0.14

    Merci d'avance

    Max

    PS: je sais que la classe Desktop est plutôt nouvelle Java 6.0 (je crois), avant on utilisait l'api JDIC

  2. #2
    Membre expérimenté Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Par défaut
    Je pense que l'utilisation de la classe Desktop est réservé au développement Java standard (JSE).
    Tu ne peux donc pas utiliser cette classe dans le cadre d'un développement Java web (JEE).

    Si tu testes l'envoie de ton mail directement dans Eclipse, il est logique que cela fonctionne puisque tu restes dans le cadre du Java standard, en dehors d'un web container.

    Pour envoyer des mails depuis une application JEE, tu peux utiliser l'API JavaMail ou alors le client SMTP fourni avec l'API Commons-Net.
    En fait, l'API Commons-Net repose sur l'API JavaMail et en simplifie l'utilisation.
    Je te conseille donc d'utiliser Commons-Net.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Par défaut
    Merci je vais regarder l'API Commons-Net.

    Par contre comment se fait-il que mon appli rentre comme même dans les if(Desktop.isDesktopSupported()) et if(Desktop.getDesktop().isSupported(java.awt.Desktop.Action.MAIL)) si le JEE ne supporte pas la classe Desktop.

    Deuxième interrogation si j'ajoute une librairie externe JDIC cela pourra-t-il fonctionné sous JEE?

    Max

  4. #4
    Membre expérimenté Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Par défaut
    Citation Envoyé par el_mosquito Voir le message
    Par contre comment se fait-il que mon appli rentre comme même dans les if(Desktop.isDesktopSupported()) et if(Desktop.getDesktop().isSupported(java.awt.Desktop.Action.MAIL)) si le JEE ne supporte pas la classe Desktop.

    Deuxième interrogation si j'ajoute une librairie externe JDIC cela pourra-t-il fonctionné sous JEE?

    Max
    Malheureusement, je ne connais pas la réponse à ces questions.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Par défaut
    J'ai testé l'API JavaMail. Effectivement c'est très simple d'utilisation.
    Ca a résolu d'ailleurs un autre problème que j'avais lorsqu'il faut envoyer un Email pour un "mot de passe oublié".

    Mais pour en revenir à mon premier souci. JavaMail ne peut pas appeler la messagerie par défaut. Or c'est justement cela qui m'intéresse:
    1. L'utilisateur voit le mail qu'il envoie à son client
    2. Il peut modifier le contenu du mail
    3. Il utilise son SMTP pour l'envoi.
    4. On récupère son adresse mail par défaut
    5. Il s'aperçoit s'il y a eu une erreur lors de l'envoi du message

    Pour l'API COMMONS NET j'admets ne pas avoir compris à quoi elle sert exactement.

    Donc je continue mes recherches pour comprendre l'incompatibilité entre la classe Desktop et mon serveur Tomcat 6.0. Surtout que je l'utilise également pour ouvrir des pdf.

    Max

  6. #6
    Membre expérimenté Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Par défaut
    Est-ce qu'un simple mailto ne résout pas ton problème : http://www.thelin.net/laurent/labo/html/mailto.html.

  7. #7
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Citation Envoyé par el_mosquito Voir le message
    Donc je continue mes recherches pour comprendre l'incompatibilité entre la classe Desktop et mon serveur Tomcat 6.0. Surtout que je l'utilise également pour ouvrir des pdf.
    Ben c'est simple c'est une application web, le code est exécuté sur ton serveur d'application, pas sur la machine du client.

    Comment veux tu, dans ce cas, que la classe Desktop accède à l'ordinateur du client pour déterminer les applications par défaut à lancer?

    Desktop est prévu pour un usage local.

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

Discussions similaires

  1. [POO] PHP5 : Problème avec les classes
    Par fleur_de_rose dans le forum Langage
    Réponses: 9
    Dernier message: 06/05/2006, 19h09
  2. Problème avec une classe... "without object"
    Par z980x dans le forum C++
    Réponses: 8
    Dernier message: 27/04/2006, 16h00
  3. [PHPMailer] problème avec la classe phpmailer
    Par sansouna24 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 08/04/2006, 16h51
  4. Problème avec la classe Calendar
    Par afrikha dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 30/03/2006, 08h48
  5. Réponses: 9
    Dernier message: 25/09/2005, 16h33

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