我們的嵌入在Tomcat
中運行的Web應用程序的OSGi
系統中基於Apache Karaf
存在衝突HttpService
的問題。在「錯誤的」OSGi上註冊的Servlets HttpService
我們的應用程序的某些部分是非OSGi
基礎,直接通過代碼在我們WAR
響應請求,以及一些地區使用Felix Servlet Bridge
來調用Felix
OSGi
容器的servlet響應請求。我們還使用Felix
的白板捆綁來實現servlet的自動註冊。
我們也使用Karaf
中的ActiveMQ
功能,它的控制檯包含Pax Web
。其結果是,我們最終得到,Felix Servlet Bridge
與嵌入式應用服務器集成的HttpService
和來自Pax Web
的HttpService
,它們在不同的端口上運行其自己的Jetty
服務器。
所以,問題是一些初創公司的白板捆綁連接到Pax Web HttpService
,從而暴露我們的servlet在錯誤的地方。我們還沒有找到一種方法來配置白板捆綁以某種方式請求從Servlet Bridge
期望的HttpService
,並且由於所有涉及的捆綁包都是第三方的東西,我們希望避免更改它們的Java
代碼以及...
解決此問題的最佳方法是什麼?
(我們寧願在可維護性代碼配置,我們希望保持自己的端口上ActiveMQ
控制檯)
我第二次在這個彼得,我會使用卡拉夫獨立,而不是將它嵌入到一個tomcat內。除此之外,您是否已經嘗試在Pax-Web上使用servlet橋? –
內部安全規則禁止我們將管理功能放在用戶可訪問的相同端口上,即使我們已經實施了路徑保護。我希望能夠儘可能地重用盡可能多的庫功能(白板等),並保持我們自己的代碼小,但似乎我需要放入一些額外的代碼來使這項工作。所以目前解決方案(1)和(2)看起來最好。謝謝! – mikewse
最終解決方案三(ServiceHooks)證明是我們最好的解決方案。謝謝大家! – mikewse