将Javamail与SOAP一起使用时获取NoSuchProviderException

时间:2018-01-10 12:55:40

标签: java soap javamail ibm-odm nosuchproviderexception

我已经编写了一个基本上登录到邮件帐户并在收件箱文件夹中搜索未读电子邮件的软件,并查看该主题是否是指定的主题,然后使用它的附件并对其进行操作。然后将该软件部署到IBM Rule Execution Server上并通过SOAP启动。

因为这个原因我正在使用Javamail 1.6。以下代码段在本地正常工作:

Session session = Session.getInstance(mailProperties);

    try (Store store = session.getStore(mailProperties
        .getProperty("mail.store.protocol"))) {

        store.connect(mailProperties.getProperty("mail.imap.host"),
                mailProperties.getProperty("mail.user"),
                mailProperties.getProperty("mail.password"));

事先已正确初始化了mailProperties,依旧等等。部署完整代码后,SOAPUI提供了以下NoSuchProviderException:

Caused by: javax.mail.NoSuchProviderException: imaps
    at javax.mail.Session.getService(Session.java:842)
    at javax.mail.Session.getStore(Session.java:626)
    at javax.mail.Session.getStore(Session.java:602)

我尝试将提供商包含在

Provider provider = new Provider(...);
store.connect(provider);

虽然这导致了同样的例外。

之后我试图通过将商店初始化为IMAPSSLStore来完全避免提供商,但是向我投了java.lang.LinkageError。试图以不同的方式解决这个问题(包括将ClassLoader设置为另一个)并没有帮助。

老实说我现在对如何处理这个问题有点失意。

在我看来,找到应该包含在javax.mail.jar中的提供程序时遇到了麻烦。

2 个答案:

答案 0 :(得分:0)

您可能遇到this JDK bug,这是在较新版本的JDK中修复的。您的服务器使用的是什么版本的JDK?

答案 1 :(得分:0)

我自己找到了问题的答案。 IBM包含的Liberty服务器在server.xml中有一个featureManager。你需要输入:

<feature>javaMail-1.5</feature>

让它发挥作用-.-