在Karaf中使用相同的Web-ContextPath部署2个bundle

时间:2016-11-17 06:34:45

标签: java apache-karaf

我想部署2个不同的bundle,一个拥有所有其他服务,另一个拥有相同Karaf实例中的所有HTML / JSP页面。请帮助我如何做到这一点。

(我能够成功安装捆绑包,但我无法访问网页,但其余的工作正常在同一个Web-ContextPath上)

1 个答案:

答案 0 :(得分:1)

这是不可能的,因为std也是不可能的。 Web应用程序上下文您的Web-ContextPath必须是唯一的。

你可以做的是拥有一个共享的HttpContext,或者你可能更适合你的是将OSGi片段附加到包含Rest Servlet的bundle,或者使用web片段。当你谈论Web-ContextPath这是WAB的一个属性时,你最好使用Web Fragment。 只有在使用HttpService或将资源注册为服务的情况下,您才可以在它们之间共享HttpContext。

如果是Web Fragment,你有一个std。在您的第一个Bundle中的web.xml,您的第二个包将具有以下内容:

<web-fragment xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"
  version="3.0"
  id="module1">

    <error-page>
        <error-code>404</error-code>
        <location>/error.jsp</location>
    </error-page>

    <error-page>
        <exception-type>java.lang.Exception</exception-type>
        <location>/exception.jsp</location>
    </error-page>

</web-fragment>

另请参阅以下sample of Pax-Web

对于共享的HttpContext,请查看以下sample.