2009-11-25 15 views
0

J'utilise Jetty 7 avec JBoss Seam et j'ai 2 sessions de messagerie Java configurées, une pour les notifications de support et une autre pour les notifications générales. Le problème que j'éprouve semble être de JBoss Seam/JSF ne pas pouvoir résoudre la session que j'ai placée dans le contexte d'événement à la bonne session de courrier de Java avant d'envoyer l'email. Comme il ne peut pas résoudre la session, il est par défaut localhost sur le port 25. La chose étrange est, j'utilise le même code pour définir la session comme avant, je viens de l'obtenir de JNDI maintenant par opposition à une couture composant.Jetée JNDI Java Mail

Je suppose que le problème provient de l'obtention de la session à partir de JNDI et que quelque chose n'est pas correctement traité.

Comment la plupart des sites configurent-ils les notifications par e-mail dans une application Web, est-ce que vous en gérez souvent plus de 1, si oui, à quoi ressemble votre configuration?

Walter

Répondre

0

Hmm, le problème était entre mon module et JBoss Seam. Encore une fois, je faisais quelque chose qui n'était pas standard (comme utiliser plus d'une adresse e-mail dans l'application, et assigner dynamiquement la session de messagerie en fonction de l'adresse de départ). Essentiellement ce qui s'est passé était que j'ai analysé l'email pour l'adresse de, puis en utilisant cela, recherché la session de messagerie dans JNDI. Avec cette session de courrier, je l'ai mis dans le contexte de l'événement actif, JBoss Seam recherche automatiquement la valeur « session » obligatoire dans l'e-mail:

...

J'ai eu plusieurs problèmes avec cela, le mailSessionGoesHere ne doit pas être nommé session. Pour une raison étrange, cela est en conflit avec un autre composant. De plus, comme j'envoyais l'e-mail de manière asynchrone, il avait son propre contexte d'événement, ce qui signifiait que je devais le passer dans une map et ne pas le définir directement dans le contexte d'événement utilisé pour déclencher l'e-mail. Une fois que j'ai trié tout cela, je peux maintenant envoyer un courriel à partir de n'importe quelle adresse que je choisis aussi longtemps que sa configuration dans web.xml, jetty-env.xml, et le modèle d'email bien sûr.

Walter

0

Avez-vous essayé cela (du documentation):

<Configure id='wac' class="org.mortbay.jetty.webapp.WebAppContext"> 
... 
<New id="mail" class="org.mortbay.jetty.plus.naming.Resource"> 
    <Arg><Ref id="wac"/></Arg> 
    <Arg>mail/Session</Arg> 
    <Arg> 
     <New class="org.mortbay.naming.factories.MailSessionReference"> 
     <Set name="user">fred</Set> 
     <Set name="password">OBF:1xmk1w261z0f1w1c1xmq</Set> 
     <Set name="properties"> 
      <New class="java.util.Properties"> 
      <Put name="mail.smtp.host">XXX</Put> 
      <Put name="mail.from">[email protected]</Put> 
      <Put name="mail.debug">true</Put> 
      </New> 
      </Set> 
     </New> 
    </Arg> 
</New> 
</Configure> 
+0

David, j'ai essayé exactement cela, mais en vain. J'utilise Jetty 7, donc j'ai changé les noms de classe pour l'équivalent de Jetty7. Je ne passe pas dans un contexte d'application web donc je devine que mes composants peuvent être disponibles pour d'autres applications (si j'en avais d'autres). Lorsque je débogue, cette session est en JNDI sinon il y aurait une exception. L'utilisateur/mot de passe sont vides dans PasswordAuthenticator. Bien que les propriétés passées avec la session de courrier soient exactement comme je l'ai défini, aucun d'entre eux ne semble être réellement utilisé. Walter –

+0

David, j'ai mis à jour la question ci-dessus. Je recevais la session de messagerie Java comme prévu, bien que tout n'ait pas été rempli. Lorsque Seam a essayé de rendre le message, c'est quand il n'a pas pu trouver la session résultant de l'apparence des propriétés ne collent pas. –