在Felix上部署Active MQ Web控制台

时间:2014-12-11 19:12:01

标签: osgi activemq embedded-jetty apache-felix web-console

我有一个基于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文件)以上异常被抛出

结束编辑

1 个答案:

答案 0 :(得分:0)

嗯,从头开始重建卡拉夫? 无论如何,你需要一个运行你的felix环境的webcontainer来运行web控制台。 因此,您需要运行felix http-service,或者使用Pax Web Bundles(如Karaf)。 您将遇到的下一件事就是获得令人满意的轻松记录。您需要自己创建或部署Pax Logging包(再次在Karaf中)。 有什么理由不坚持使用所有基础设施捆绑的Karaf?