我想部署2个不同的bundle,一个拥有所有其他服务,另一个拥有相同Karaf实例中的所有HTML / JSP页面。请帮助我如何做到这一点。
(我能够成功安装捆绑包,但我无法访问网页,但其余的工作正常在同一个Web-ContextPath上)
答案 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.