2016-11-17 26 views
0

我想要部署2個不同的包,其中一個具有所有其他服務,另一個具有所有的HTML/JSP頁面在同一個Karaf實例中。請幫助我如何做到這一點。在Karaf中部署2個具有相同Web-ContextPath的包

(我能夠成功安裝的軟件包,但我無法訪問網頁,但其餘的都是在同一個網絡的contextPath工作的罰款)

回答

1

這是不可能的,因爲它也不會對於std可能。 Web應用程序環境。您的Web-ContextPath必須是唯一的。

你可以做的是擁有一個共享的HttpContext,或者實際上最適合你的是將OSGi Fragment附加到包含Rest Servlet的bundle,或者使用web-fragment。正如你談到的是一個Web-ContextPath,它是WAB的一個屬性,你最好使用Web Fragment。 只有在使用HttpService或將資源註冊爲服務的情況下,您纔可以在它們之間共享HttpContext。

在Web碎片的情況下,你有一個std。在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.

+0

所以來看看意味着如果我想部署兩者,我需要將它們都保存在同一個捆綁包中,作爲更簡單更清晰的解決方案?或者我可以選擇2種不同的Web上下文路徑,因爲它更有可能僅由移動應用程序使用其餘部分,並且HTML/JSP將更加面向Web。 – Jayesh

+1

是的,您需要將它們放在一個WAB中,或者將兩個不同的WAB與不同的Web-ContextPath –

相關問題