回答
一种方法是创建一个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捆绑包的访问