Web applications 如何将webapp部署到ApacheFelix中?

Web applications 如何将webapp部署到ApacheFelix中?,web-applications,maven-2,jetty,osgi,apache-felix,Web Applications,Maven 2,Jetty,Osgi,Apache Felix,我需要安装哪些捆绑包?至少,这必须是一个servlet容器/web服务器,比如Jetty,但是基本的org.apache.felix.http.Jetty捆绑包可以吗,或者在其他捆绑包中发现web.xml还需要什么 我是否将webapp置于标准WAR中,添加OSGi头并完成了?或者OSGi环境是否需要任何特定于webapp的头文件 还需要进行哪些其他配置 使用Maven自动化这些步骤的选项有哪些 我已经尝试部署了org.apache.felix.http.jetty捆绑包,我在localhost

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

我是否将webapp置于标准WAR中,添加OSGi头并完成了?或者OSGi环境是否需要任何特定于webapp的头文件

还需要进行哪些其他配置

使用Maven自动化这些步骤的选项有哪些


我已经尝试部署了
org.apache.felix.http.jetty
捆绑包,我在localhost:8080上得到了一个用404应答的jetty。接下来,我尝试了一个简单的webapp,它只有一个配置为
欢迎文件的静态HTML文件。据我所知,Jetty甚至没有注意到部署描述符,至少将测试webapp部署到Felix中不会改变任何事情。

Jetty和webapp本身是不够的,必须有一些胶水在特定上下文下在web服务器上实际注册webapp

一个有效的例子:

  • 使用
    org.ops4j.Pax.web.paxweb服务
    捆绑包中的PaxWeb服务作为HTTP服务,它也运行Jetty
  • Webapp上下文
    标题添加到包清单中
  • 当您的包注册时,使用PaxWebExtender查找该头,然后将其连接到http服务
出于某种原因,它必须是PaxWebService,如果我用org.apache.felix中的基本jetty包替换它,它将无法正确解析URL


我离真正理解这里发生的事情还有很长的路要走,但至少我让它起作用了。如果你让你的webapp包在其bundle activator中执行连接,我想你可以不用Pax包和bundle头。

你不必使用Pax-Web,但它确实让事情变得容易多了。如果没有PaxWeb,您将需要一个实现OSGiHTTP服务的捆绑包(有一个Jetty捆绑包),然后获取对HttpService的服务引用。你可以用这个注册你的webapp,但它很乏味。如果你想看到血淋淋的细节,可以看看PaxWeb代码。Pax Web没有向HttpService添加任何内容,只是处理了所有注册难题。

也许可以通过声明性服务注入注册(如果不是,当然应该是这样)。