如何将Web应用程序部署到Apache Felix中?

时间:2009-10-20 12:43:09

标签: web-applications maven-2 jetty osgi apache-felix

我需要安装哪些套件?至少,这必须是一个servlet容器/ Web服务器,如Jetty,但基本的org.apache.felix.http.jetty捆绑包是否可以,或者还有什么需要发现其他捆绑包中的web.xml

我是否将webapp放入标准WAR中,添加OSGi标头并完成了吗?或者OSGi环境是否需要任何特定于Web应用程序的标头?

还有什么其他配置要做?

使用Maven自动执行这些步骤有哪些选项?

我尝试部署org.apache.felix.http.jetty捆绑包,然后在localhost:8080上让Jetty回复404。接下来,我尝试了一个简单的webapp,只有一个静态HTML文件配置为welcome-file。据我所知,Jetty甚至没有注意到部署描述符,至少将测试webapp部署到Felix中根本不会改变任何内容。

2 个答案:

答案 0 :(得分:1)

只有Jetty和webapp是不够的,必须有一些粘合剂实际上在特定的上下文中在Web服务器上注册webapp。

一个有效的例子:

  • 使用org.ops4j.pax.web.pax-web-service包中的Pax Web服务作为HTTP服务,它也运行Jetty
  • 在您的捆绑包清单中添加Webapp-Context标题
  • 使用Pax网络扩展程序在您的软件包注册时查找该标头,然后将其连接到http服务。

出于某种原因,它必须是Pax webservice,如果我用org.apache.felix中的基本jetty包替换它,它将无法正确解析URL。

我距离实际了解这里发生的事情还有很长的路要走,但至少我让它发挥了作用。如果你让你的webapp包在它的bundle激活器中做一些事情来执行连接,我怀疑你可以不使用Pax包和bundle header。

答案 1 :(得分:1)

您不必使用Pax Web,但它确实使事情变得更容易。如果没有Pax Web,你需要一个实现OSGi HTTP服务的包(这里有一个Jetty包),然后获得对HttpService的服务引用。您可以使用此注册您的webapp,但这很乏味。如果您想查看血腥细节,请查看Pax Web代码。 Pax Web不会向HttpService添加任何内容,只是处理所有注册难题。