不提供JavaServlet功能的Servlet-API包 - felix.http.jetty无法运行

时间:2015-10-27 21:51:02

标签: java osgi apache-felix osgi-http-service

我试图让org.apache.felix.http.jetty包工作,为我的OSGi环境提供HTTP服务。

我还部署了servlet-api软件包,它导出了版本化的软件包,但没有提供JavaServlet功能(因为它可能应该基于参考合同的OSGi Alliance页面)。

这是servlet-api包的MANIFEST的一部分

Export-Package: javax.servlet;uses:="javax.servlet.descriptor,javax.se
 rvlet.annotation";version="3.1.0",javax.servlet.descriptor;version="3
 .1.0",javax.servlet.annotation;uses:="javax.servlet";version="3.1.0",
 javax.servlet.http;uses:="javax.servlet";version="3.1.0"
Implementation-Version: 3.1.0
Specification-Vendor: Oracle Corporation
Bundle-Name: Java Servlet API
Bundle-Vendor: GlassFish Community
Import-Package: javax.servlet;version="3.1.0",javax.servlet.annotation
 ;version="3.1.0",javax.servlet.descriptor;version="3.1.0",javax.servl
 et.http;version="3.1.0"

根本没有指定Provide-Capability标头。

因此,当我启动OSGi容器时,它会抱怨此错误:

 Unresolved requirements: [[org.apache.felix.http.jetty [28](R 28.0)]
  osgi.contract; (&(osgi.contract=JavaServlet)(version=3.1))]

任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

你应该使用Felix本身的org.apache.felix.http.servlet-api捆绑包。