一些实现的OSGi框架是否允许我捆绑css样式和javascript?
或者我必须使用其他方法来做到这一点?
答案 0 :(得分:2)
一种方法是创建一个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。
答案 1 :(得分:1)
你可以在jar中拥有任何资源。这不是OSGi框架的问题,而是您想要使用的技术问题。它将如何在你的jar中找到资源。
例如:如果您创建一个WAB,其行为类似于WAR。
虽然WAB可以与几个基于OSGi的Web服务器一起使用,但我个人不喜欢它们,因为它们是单一的。有提供资源的替代方案:
https://github.com/bndtools/aQute/tree/master/aQute.webserver
Peter Kriens的一个实现,它允许我们下载任何放在任何bundle的/ static /文件夹中的文件。 Servlet已在/ static / path上注册,因此如果您在/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是另一个问题。如果您使用具有JSP支持的WAB和嵌入式Servlet容器,它们应该可以工作。您还可以根据您使用的技术手动将JSP servlet注册到OSGi容器中(例如:使用白板模式)。
答案 2 :(得分:0)
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