我正在使用Tomcat和Hudson运行JUnit测试,并且在测试电子邮件发送时遇到问题。在Hudson上运行测试时,出现以下错误:
javax.naming.NamingException: Lookup failed for 'java:comp/env' in SerialContext
at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.getComponentId(GlassfishNamingManagerImpl.java:773)
at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:655)
at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:156)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:428)
at javax.naming.InitialContext.lookup(InitialContext.java:411)
at com.mycompany.extmon.authentication.ChangePasswordForm.<init>(ChangePasswordForm.java:43)
at com.mycompany.extmon.authentication.ChangePasswordFormTest.changePasswordTestMissingUser(ChangePasswordFormTest.java:42).
我不明白为什么它会丢弃与Glassfish相关的异常,因为我以这种方式使用tomcat:
Context initCtx;
Context envCtx;
Session mailSession;
public ChangePasswordForm() throws NamingException {
initCtx = new InitialContext();
envCtx = (Context) initCtx.lookup("java:comp/env");
mailSession = (Session) envCtx.lookup("mail/[email protected]");
在实时构建中一切正常,没有错误,已发送电子邮件,但在单元测试中失败。我忘记设置什么或应该在哪里寻找问题?到目前为止,我发现没有任何用处。我想这与Hudson配置有关,但我找不到问题所在。
包含的context.xml部分:
<Resource name="mail/[email protected]" auth="Container"
type="javax.mail.Session"
mail.smtp.auth="true"
mail.smtp.host="mail.mycompany.net"
mail.smtp.port="25"
mail.smtp.user="admin"
mail.transport.protocol="smtp"
password="password"
mail.smtp.from="[email protected]"/>
最佳答案
看起来您在查找中有错字:
<Resource name="mail/[email protected]"
与
envCtx.lookup("mail/[email protected]");
.......................................^