1

我正在构建一个 IBM Domino OSGi 插件,它打包了一个包含HttpServlet.

我想从using和(从 OSGi 包中提取)进行 Http 调用( get,post等)。Servletorg.apache.httpcomponents.httpclient_4.2.3org.apache.httpcomponents.httpcore_4.2.3

我已将这两个jar文件添加到domino\jvm\lib\ext,对 file* 进行了通常的更改java.policy,并将 jar 添加到构建路径中。

当我添加代码来创建和使用DefaultHttpClient服务器时会抛出错误:

java.lang.NoClassDefFoundError: org.apache.commons.logging.Logfactory

我知道在 Domino 的 java 实现中记录是一个有点棘手的主题。奇怪的是,我使用 NSF 包含的 Servlet 运行相同的代码,它运行得很好。但是在我的 OSGi 上下文中,它会中断。如果我使用包含说它/log.nsf/仍然中断的 url 调用 servlet。

任何帮助都感激不尽!

grant {
permission java.security.AllPermission;
};
4

2 回答 2

0

我之前在 XPages 中遇到过 org.apache 包的问题,​​主要是因为它们尝试登录到文件系统并且安全策略不喜欢那样。将其添加为引用库等,它使用与 XPages 运行时相同的 ClassLoader,因此尝试使用来自服务器的 ClassLoader,这时您会收到 NoClassDefFoundError。

尝试将其添加到您的 OSGi 插件的 WebContent\WEB-INF\lib 文件夹中。将它添加到该路径在 NSF 中有效,因为它使用不同的 ClassLoader。它也可以很好地规避您在 OSGi 插件中遇到的问题。

于 2013-02-13T17:46:36.633 回答
0

我不确定为什么它在您的 NSF 实现中有效,但看起来您需要commons-logging-1.1.1.jar。这应该包含在httpcomponents下载中。或者你可以从这里下载:

http://commons.apache.org/logging/download_logging.cgi

于 2013-02-12T18:01:40.987 回答