我正在尝试使用glassfish 4中的logback 1.1.2中的SMTPAppender
来发送所有已记录错误的电子邮件警报,无论它们是由glassfish本身记录,是由各种组件/模块/库记录,还是由我的代码在部署的耳中。
在不同的时间,我尝试使用JavaMail 1.5.0或1.5.1; 1.5.0因为glassfish 4在其modules目录中包含JavaMail 1.5.0。我想尽量保持一致;和1.5.1,因为它是JavaMail的当前版本。
我已经配置了SMTPAppender,但是当它尝试从我耳中部署的代码中记录错误时,当logback SMTPAppenderBase调用Transport.send(MimeMessage)时,我得到了smtp的NoSuchProviderException。
这似乎是一个ClassLoader问题,但我并不精通ClassLoader,尤其是它们在glassfish,JavaMail或logback中的使用。
在${GLASSFISH_HOME}/glassfish/domains/domain1/config
目录中,我放置了:
当我在网上阅读时(我忘记了),我将以下文件放在${GLASSFISH_HOME}/glassfish/lib/endorsed directory
中:
Logback SMTPAppender
配置失败,但未在lib/endorsed
中包含javax.mail-1.5.0.jar,或者另外包含mailapi-1.5.0.jar。使用javax.mail-api-1.5.0.jar会导致在logback配置中出现大量错误,因此这不是一个选项。
如果我使用没有smtp-1.5.0.jar的mailapi-1.5.0.jar而不是使用javax.mail-1.5.0.jar,SMTPAppenderBase
在尝试发送电子邮件时会抛出NoSuchProviderException
玻璃鱼错误(这些不是我耳边的错误,而是来自我耳外的错误)。如果我使用javax.mail-1.5.0.jar,SMTPAppenderBase
电子邮件会发现glassfish错误。
我尝试过各种包含JavaMail& amp;的排列。 logback在我耳边的战争中判断WEB-INF / lib目录,但在尝试通过电子邮件发送我的耳朵中的代码记录错误时,我一直收到NoSuchProviderExceptions。
我发现的其他与JavaMail相关的其他jar文件都在glassfish模块目录中;我不能删除它们,因为(从我听说过)它们是玻璃鱼的组成部分。
如果我在glassfish之外运行一个简单的测试java main方法,并且在类路径中使用前面提到的jar,就会正确发送错误电子邮件,没有任何例外。
非常感谢任何解决此问题的帮助。
感谢。
答案 0 :(得分:0)
在您的' $ {GLASSFISH_HOME} / glassfish / lib / endorsed'中放置包含Bug 6668 -skip unusable Store and Transport classes修正的JavaMail 1.5.3。 GlassFish使用的文件夹或升级JavaMail,通过更新您的' $ {GLASSFISH_HOME} / modules'夹。您可以从latest snapshot主页下载JavaMail reference implementation和官方发布。