我需要安装哪些套件?至少,这必须是一个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中根本不会改变任何内容。
答案 0 :(得分:1)
只有Jetty和webapp是不够的,必须有一些粘合剂实际上在特定的上下文中在Web服务器上注册webapp。
一个有效的例子:
org.ops4j.pax.web.pax-web-service
包中的Pax Web服务作为HTTP服务,它也运行Jetty Webapp-Context
标题出于某种原因,它必须是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添加任何内容,只是处理所有注册难题。