将 Javamail 与 SOAP 一起使用时获取 NoSuchProviderException
Getting a NoSuchProviderException when using Javamail with SOAP
我写了一个软件,基本上登录到一个邮件帐户并在收件箱文件夹中搜索未读电子邮件,并查看主题是否是指定的主题,然后获取它的附件并对其进行处理。然后将该软件部署到 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 中的提供商。
您可能 运行 喜欢 this JDK bug,这在 JDK 的较新版本中已修复。您的服务器使用的 JDK 是什么版本?
我自己找到了问题的答案。 IBM 包含的 Liberty 服务器在 server.xml 中有一个 featureManager。在那里你需要输入:
<feature>javaMail-1.5</feature>
让它发挥作用-.-
我写了一个软件,基本上登录到一个邮件帐户并在收件箱文件夹中搜索未读电子邮件,并查看主题是否是指定的主题,然后获取它的附件并对其进行处理。然后将该软件部署到 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 中的提供商。
您可能 运行 喜欢 this JDK bug,这在 JDK 的较新版本中已修复。您的服务器使用的 JDK 是什么版本?
我自己找到了问题的答案。 IBM 包含的 Liberty 服务器在 server.xml 中有一个 featureManager。在那里你需要输入:
<feature>javaMail-1.5</feature>
让它发挥作用-.-