如何在XPages中使用JavaMail的更新版本?

如何在XPages中使用JavaMail的更新版本?,xpages,jakarta-mail,Xpages,Jakarta Mail,我有一个XPage应用程序,在其中一个托管bean中使用JavaMail。目前,我已经将jar文件C:\program\IBM\Notes\framework\shared\eclipse\plugins\com.IBM.designer.lib.javamail\u 9.0.0.20130301-1431\lib\mail.jar添加到管理bean的构建路径中。这很有效。但是现在我想使用更新版本的JavaMail,因为Domino服务器使用1.3版,但我需要1.4.x版。 我已经从Oracl

我有一个XPage应用程序,在其中一个托管bean中使用JavaMail。目前,我已经将jar文件
C:\program\IBM\Notes\framework\shared\eclipse\plugins\com.IBM.designer.lib.javamail\u 9.0.0.20130301-1431\lib\mail.jar
添加到管理bean的构建路径中。这很有效。但是现在我想使用更新版本的JavaMail,因为Domino服务器使用1.3版,但我需要1.4.x版。 我已经从Oracle下载了新的JavaMail jar文件。在DominoDesigner(版本9)中,我将这个jar文件添加到新的设计元素“Code/Jars”中,并从构建路径中删除旧的jar文件。
我的托管bean仍然按照预期编译和运行,但是如果我检查bean使用的版本,它仍然报告版本1.3。为了检查版本号,我使用JavaMail的debug属性,它向domino服务器控制台报告版本1.3。 有没有办法告诉domino服务器在应用程序(即nsf)中使用jar文件而不是他自己的?是否有其他方法来更新JavaMail版本

我希望使用更新版本的JavaMail的原因如下:我希望使用ssl从imap服务器读取邮件。为了避免导入ssl证书的问题,我只想信任所有主机。这可以通过MailSSLSocketFactory完成,但这仅在版本1.4.2之后可用。因此,我想使用更新版本的JavaMail


我想使用更新版本的另一个原因如下:“IMAPFolder”的方法“getSortedMessages”仅在版本1.4.4之后可用。(还有JavaMail的一些其他功能)。

我在这里遇到了同样的问题,但找到了解决方案。请注意,这不是最好的答案,但它会起作用。只需下载最新的javamail jar并将jar文件重命名为“mail.jar”。只需将IBM\Notes\framework\shared\eclipse\plugins\com.IBM.designer.lib.javamail_9.0.0.20130301-1431\lib\mail.jar中的当前文件替换为此文件即可。退出http任务并重新启动它。代码现在可以使用最新版本。

这对您来说可能有点太晚了。。。我认为正确的方法可能是将jar文件作为OSGi插件包含在内

我花了一些时间来弄清楚如何做到这一点——最近我成功了:——我在两篇文章中描述了实现这一点的步骤。第一个是关于将JAR包装到插件中的:第二个是关于部署(第一个插件中有一个链接)


/John

您可以通过创建一个OSGi插件来解决这个问题,该插件将取代使用JavaMail库的插件:com.ibm.designer.lib.JavaMail。 为此,请执行以下操作:

  • 创建一个id为com.ibm.designer.lib.javamail的OSGi插件
  • 将其版本设置为高于Domino服务器附带的版本(要知道版本类型,请告诉http osgi ss com.ibm.designer.lib.javamail)。到目前为止,使用9.0.1.1.0应该还可以
  • 通过更新站点或直接将插件复制到domino\workspace\applications\eclipse\plugins文件夹下来部署插件
  • 重新启动HTTP服务。现在将使用您创建的更高版本

  • 您是否检查过Jar是否正确添加到NSF中的构建路径?(除此之外,您还可以将MIME直接写入mail.box,这可能会消除1.4版的需求)是的,Jar位于NSF的构建路径中。它显示在选项卡库下,路径为/WebContent/WEB-INF/libIt无法工作。当XPages引擎启动时,Java类加载器启动并加载mail.jar的系统版本。您可以使用类加载器(请参阅),但我真的认为没有理由这样做。我认为,如果您能稍微扩展一下您的问题,这将更有帮助,因为您不太清楚为什么要尝试使用Java Mail而不是Domino内置功能(例如),请更新我的原始问题,以明确我为什么要使用较新版本,您是否要使用功能来降低安全性,因为[insert reason here]。这将使您的代码受到当前流行的中间人攻击#prism,具体取决于您所在的行业,这可能违反合规性测试方法。但对于客户现场的生产环境来说,这是没有选择的。我可以确认这种方法完全有效。对我来说,最重要的部分是选中feature项目中的“安装后解压缩插件归档”框。如果没有这个,它将不适用于Javamail。是的,我发现。。。我的指南在一段时间前已经更新,以确保按照您的指定“解压缩插件…”。我最初被一个开放插件项目欺骗了:-@FerryKranenburg你是如何设法避免类装入器出现问题的?我尝试了这个方法,在将javamail插件添加到domino/designer之后,xpgaes仍然加载1.3版(设计师从插件中识别库,所以我认为它构建正确)