Bonjour,
je cherche un peux d'aide pour mon pb de configuration.
j'essai d'envoyer un mail de puis ma web app deployé sur tomcat.
le truc c'est que j'ai reussi a envoyé un mail avec du code et donc maintenant pour faire bien les choses je voudrais déclarer une jndi dans la conf de tomcat.
le probleme se trouve lorsque je place le mail.jar dans la lib de tomcat, eclipse (je travail sous eclipse) me pete une exception :
javax.mail.Session cannot be cast to javax.mail.Session
donc j'en deduis qu'il ya un conflit de class, le second mail.jar est importé dans ma web app via maven
1 2 3 4 5
| <dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency> |
et je ne peux pas le lever sinon ma class send mail ne peux pas fonctionner.
et lorsque je leve le mail.jar de la lib tomcat, là c'est le serveur qui plante:
staktrace :
1 2 3 4 5 6 7 8
| 8 juil. 2011 11:30:06 com.sun.faces.application.ActionListenerImpl processAction
GRAVE: java.lang.NoClassDefFoundError: javax/mail/Authenticator
javax.faces.el.EvaluationException: java.lang.NoClassDefFoundError: javax/mail/Authenticator
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:98)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98)
at javax.faces.component.UICommand.broadcast(UICommand.java:311)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781)
at |
context.xml (tomcat):
<Resource auth="Container" mail.smtp.host="ptx.smtp.corp.xxxxx" name="mail/NomDeLaRessource" type="javax.mail.Session"/>
server.xml:
<Resource mail.smtp.host="ptx.smtp.corp.xxxxx" name="mail/NomDeLaRessource" type="javax.mail.Session"/>
code webapp:
1 2 3 4 5 6 7 8 9 10
| Session session = null;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
session = (Session) envCtx.lookup("mail/NomDeLaRessource");
} catch (Exception ex) {
System.out.println("erreur au lookup");
System.out.println( ex.getMessage());
} |
c'est cette ligne qui plante:
session = (Session) envCtx.lookup("mail/NomDeLaRessource");
Partager