2011-06-16 8 views
8

Paso varios días para descubrir cómo configurar una javax.mail.Session en Tomcat a través de JNDI con autenticación, ahora lo consigo, pero solo después de una inmersión profunda en el código.Documentación de la configuración de Java Mail API para JNDI en Tomcat

En este tiempo he visto lo peor de código nunca: javax.mail.Service # Connect Versión (String, String, String, String) 1.4.1

if (user == null) { 
    user = url.getUsername(); 
    if (password == null) // get password too if we need it 
     password = url.getPassword(); 
    } else { 
    if (password == null && user.equals(url.getUsername())) 
     // only get the password if it matches the username 
     password = url.getPassword(); 
    } 

Cuando se asigna la contraseña ? y ¿por qué se compara con null dos veces? - y luego darse cuenta de que el otro no pertenece al si anterior. (Esta es la sangría original). Regresar al tema

Al menos me encontré con que la definición del recurso es correcta: la atención

<Resource name="email/session" 
    type="javax.mail.Session" 
    auth="Container" 
    password="secret" 

    mail.debug="false" 
    mail.transport.protocol="smtp" 

    mail.smtp.auth="true" 
    mail.smtp.user="testi" 
    mail.smtp.host="smtp.xxx.org" 
    mail.smtp.from="[email protected]"  
    /> 

pago al hecho de que es “contraseña” y “mail.smtp.user” o “mail.user”, pero no "Mail.smtp.password" o "usuario".

Al menos la magia se realiza en Tomcats org.apache.naming.factory.MailSessionFactory. Esta fábrica agrega un javax.mail.Authenticator a la sesión de correo si sale una propiedad password y una propiedad mail.smtp.user o mail.user.

Ahora mi pregunta es dónde está la documentación para todas esas cosas. ¿Especialmente sobre la configuración de nombre de usuario y contraseña?

Btw: Lo he explicado un poco más detalladamente para ayudar a los demás a que tengan el mismo problema.

+2

Se ha informado un problema en agosto de 2012 para esto en https://issues.apache.org/bugzilla/show_bug.cgi?id=53665 –

+0

Diría que el 'else' final debería haberse eliminado. Sobre todo este tipo de cosas se debe a la evolución del código durante largos períodos de tiempo. – EJP

Respuesta

0
+0

Sí, lo sé. Yo mi pregunta ya he señalado qué clases de magia hacen. - Pero aceptaré la respuesta debido a la primera parte ("La documentación de Tomcat es limitada") - Parece ser la única respuesta correcta. – Ralph

+0

FYI los documentos de Tomcat se han actualizado. Los cambios se realizarán en 7.0.42 en adelante: http://svn.apache.org/r1495016 –

Cuestiones relacionadas