回答
一種方法是創建一個WAB(Web應用程序包),這是一個需要Web-ContextPath屬性的OSGi清單的戰爭,這不一定是一場戰爭,它也可能是一個具有類似戰爭的jar 。 可能想看看Pax Web Framework(或者使用它的Karaf)。 Pax Web框架提供了以OSGi方式部署Servlet/JSP資源等所需的全部功能。也可以通過白板方式作爲服務。另一點是Servlet 3和CDI,所有這些也都由Pax Web支持(對於CDI你還需要Pax CDI) 最好看看各種samples和integration tests。
你可以在jar中有任何資源。這不是OSGi框架的問題,而是您希望使用的技術問題。它將如何在您的jar中找到資源。
例如:如果您創建WAB,其行爲與WAR類似。
儘管WABs可以與幾個基於OSGi的Web服務器一起使用,但我個人不喜歡它們,因爲它們是單水解的。有替代品提供資源:
https://github.com/bndtools/aQute/tree/master/aQute.webserver
通過彼得柯瑞恩斯的實現,使我們能夠下載放入任何捆綁的/靜態/文件夾中的所有文件。該servlet登記/靜態/路徑上,所以如果你在/static/css/mystyle.css在你的包有一個文件,你可以通過http://foo.com/static/css/mystyle.css
https://github.com/everit-org/webresource
類似的解決方案訪問,但這個是基於捆綁功能。第一版預計將於2014年10月底發佈,但重要邏輯已經實施。自從最近一次提交以來,這個庫需要OSGi 6.0和Java 8,這可能是一段時間的限制。
JSP是其他問題。如果您使用WAB和帶有JSP支持的嵌入式Servlet容器,則它們應該可以工作。您還可以根據您使用的技術(例如:以白板模式)將JSP servlet手動註冊到您的OSGi容器中。
Amdatu在Web Resources component中支持此操作。您只需使用-Include-Resource bnd標題將您的靜態資源添加到該包中,並添加一些清單標題以直接提供文件。
一個例子可能如下。這個例子可以在Amdatu Chat example中找到。
Include-Resource: \
app=dist/app
X-Web-Resource-Default-Page: index.html
X-Web-Resource-Version: 1.1
X-Web-Resource: /chat;app
- 1. Hazelcast和OSGi在多捆綁環境中
- 2. 與osgi捆綁在一起的非osgi
- 3. Osgi捆綁無法找到osgi服務
- 4. CQ5多OSGi捆綁項目
- 5. 運行OSGI捆綁項目
- 6. OSGi中的JSP:如何從捆綁包加載TLD?
- 7. 捆綁和putExtra
- 8. Android和捆綁
- 9. Css和Js捆綁,IController異常
- 10. ASP供電CSS文件和捆綁
- 11. CSS捆綁和Internet Explorer的限制
- 12. 捆綁和捆綁安裝的區別
- 13. 捆綁CSS CDN
- 14. OSGi包在指定捆綁包上拾取系統捆綁包
- 15. OSGi捆綁解析和OBR在apache felix/sling
- 16. Fabric8:用於openshift和kubernetes的OSGI捆綁包java客戶端
- 17. Maven命令來部署和運行osgi捆綁包
- 18. ASP.NET MVC 5捆綁和縮小JavaScript ES6
- 19. 調試捆綁和版本JavaScript文件
- 20. 捆綁和Ruby 1.9.2
- 21. SWT的OSGI捆綁版本4.4.2
- 22. 缺少在osgi框架中的捆綁
- 23. 番石榴osgi捆綁下載
- 24. OSGI - 捆綁靜態方法調用
- 25. OSGi的:有兩個不同的捆綁
- 26. OSGI- Bundles自動啓動/停止捆綁
- 27. 需要用javax.persistence捆綁OSGi的
- 28. 在osgi中刪除服務捆綁
- 29. Karaf OSGI捆綁在啓動時關閉
- 30. 管理對OSGI捆綁包的訪問