我正在构建一个IBM Domino OSGi插件,它将一个包含HttpServlet
的类打包。
我想使用get
和post
从Servlet
进行Http调用(org.apache.httpcomponents.httpclient_4.2.3
,org.apache.httpcomponents.httpcore_4.2.3
等)(从OSGi包中提取) )。
我已将两个jar
文件添加到domino\jvm\lib\ext
,对java.policy
文件*进行了常规更改,并将jar添加到构建路径中。
当我添加代码来创建和使用DefaultHttpClient
时,服务器会抛出错误:
java.lang.NoClassDefFoundError: org.apache.commons.logging.Logfactory
我知道在Domino的java实现中,日志记录是一个棘手的主题。奇怪的是我有一个运行与NSF包含的Servlet相同的代码,运行得很好。但是在我的OSGi上下文中它会中断。如果我使用包含说/log.nsf/
的网址调用servlet,它仍会中断。
感激不尽的任何帮助!
grant {
permission java.security.AllPermission;
};
答案 0 :(得分:0)
我不确定为什么它在您的NSF实现中有效,但看起来您需要 commons-logging-1.1.1.jar 。这应该包含在 httpcomponents 下载中。或者你可以从这里下载:
答案 1 :(得分:0)
我之前在XPage中遇到过org.apache包的问题,主要是因为他们尝试登录到文件系统而安全策略不喜欢这样。将它添加为引用的库等,它使用与XPage运行时相同的ClassLoader,因此尝试使用服务器中的那个,当你得到NoClassDefFoundError时就是这样。
尝试将其添加到OSGi插件的WebContent \ WEB-INF \ lib文件夹中。将其添加到该路径可以在NSF中使用,因为它使用不同的ClassLoader。它也可以很好地规避你在OSGi插件中遇到的问题。