2

我需要安装哪些捆绑包?至少,这必须是一个 servlet 容器/Web 服务器,例如 Jetty,但是基本org.apache.felix.http.jetty包会做吗,或者是否需要其他任何东西来发现web.xml其他包中的内容?

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

还需要进行哪些其他配置?

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

我已经尝试部署该org.apache.felix.http.jetty捆绑包,我得到一个 Jetty 在 localhost:8080 上以 404 回答。接下来,我尝试了一个简单的 webapp,除了配置为welcome-file. 据我所知,Jetty 甚至没有注意到部署描述符,至少将测试 webapp 部署到 Felix 中并没有改变任何东西。

4

2 回答 2

1

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

一个有效的例子:

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

出于某种原因,它必须是 Pax 网络服务,如果我将其替换为来自 org.apache.felix 的基本码头包,它将无法正确解析 URL。

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

于 2009-10-20T13:21:46.713 回答
1

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

于 2009-11-13T14:12:59.600 回答