在 Karaf 中部署 2 个具有相同 Web-ContextPath 的包

Deploy 2 bundles with same Web-ContextPath in Karaf

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

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

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

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

对于 Web Fragment,您有一个标准。 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.