Glassfish 4 中的 JAX-RS 2 和 OSGi 不起作用



我正试图为我正在进行的项目中要使用的技术生成一个示例应用程序。特别是,我想创建一个实现JAX-RS2服务端点的OSGi Web应用程序包(WAB)。我正在研究概念性JAX-RS服务的RESTful Java with JAS-RS 2书(Bill Burke,我会发布一个链接,但我没有足够的声誉)。在这一点上,我已经实现了第3章中列出的客户服务。我已经看过这个网站好几次了,还有其他一些关于构建WAB的资源。我正在将eclipseLuna与一个动态web项目结合使用,我在其中添加了BND项目的性质。我将该项目导出为.war,以便维护正确的war结构。我已经手动验证了OSGi清单是否在正确的位置,并且包含正确的语句(即与IDE中的内容相匹配)。

我的问题是,当我将文件部署到Glassfish(我使用的是Glassfish 4)作为WAR时,它的部署很好,我可以访问服务。然而,因为它不是作为OSGi捆绑包加载的,所以我无法访问其他OSGi捆绑。

当我将该文件部署为OSGi捆绑包(类型:Other,OSGi已检查)时,它再次部署良好,但似乎没有加载到Servlet容器中,因为所有URL都返回404错误。

显然,我只能发布2个链接,代码片段算作链接,所以我所能包括的只是我的清单文件:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: ShoppingApplication
Bundle-SymbolicName: com.restfully.shop
Bundle-Version: 1.0.0.alpha
Bundle-ClassPath: WEB-INF/classes/
Bundle-Vendor: Perform Air International Inc.
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Web-ContextPath: /OrderEntry
Export-Package: com.restfully.shop.services;uses:="javax.ws.rs.core,javax.servlet,org.osgi.service.event,org.osgi.framework"
Import-Package: javax.servlet;version="[3.0.0,4.0.0)",javax.servlet.annotation,javax.servlet.http,javax.ws.rs.core,org.osgi.framework,org.osgi.service.event
Bundle-Activator: com.restfully.shop.osgi.WebAppContextListener

让我知道其他哪些信息可能有用,我会努力向社区提供这些信息。

导入包中有org.osgi.service.event。

据我所知,这在Glassfish 4.x中并不存在。例如,我在尝试部署camel-core osgi捆绑包时遇到以下错误。。。

ERROR: org.osgi.service.event,version=[1.3,2) -- Cannot be resolved

最新更新