我有一个基于Felix的简单OSGI环境,我在其上部署了一个包含嵌入式ActiveMQ代理的软件包。我希望在同一个OSGI环境中部署另一个bundle,该环境应该有一个嵌入式jetty,将在其上部署ActiveMQ Web Console War文件。 我尝试通过生成嵌入式jetty并将war文件部署为此bundle的一部分(bundleActivator Start Method),但它给了我以下异常 -
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:431)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:393)
我在bundle classpath中有Servlet-API jar(导入包并在bundle部署时解析)。我还注意到activemq-web-console-5.10.0.war文件的lib文件夹也包含Servlet-API jar。
所以,我认为可能是因为Servlet-API jar的重复,它抛出了这个异常并从我的bundle类路径中删除了Servlet-API jar(删除了导入,也尝试通过取消部署导出该包的bundle)但在这种情况下,我的捆绑包没有部署,我收到了布线异常(因为Jetty依赖关系显然需要jar)。
我不想打开包装并再次打包war文件并尝试。
请注意:这个war文件已成功部署在Karaf上,但是我没有在基于普通Felix和我自己的felix启动器的OSGI env上进行部署。
请帮忙!
修改
包含嵌入式jetty的bundle被部署,但是当我启动它时,Jetty正在启动(部署war文件)以上异常被抛出
结束编辑
答案 0 :(得分:0)