0

我正在尝试为我正在处理的项目中要使用的技术生成示例应用程序。具体来说,我想创建一个实现 JAX-RS 2 服务端点的 OSGi Web 应用程序包 (WAB)。我正在研究概念 JAX-RS 服务的 RESTful Java with JAS-RS 2 书(Bill Burke,我会发布一个链接,但我没有足够的声誉)。至此,我已经实现了第 3 章中列出的客户服务。我已经回顾了这个网站,以及其他一些关于构建 WAB 的资源。我将 eclipse Luna 与一个动态 Web 项目一起使用,我在其中添加了 BND 项目性质。我将项目导出为 .war 以保持正确的 WAR 结构。我已经手动验证了 OSGi 清单位于正确的位置并包含正确的语句(即与 IDE 中的相匹配)。

我的问题是,当我将文件作为 WAR 部署到 Glassfish(我使用 Glassfish 4)中时,它部署得很好,并且我可以访问这些服务。但是,因为它没有作为 OSGi 包加载,所以我无权访问其他 OSGi 包。

当我将文件部署为 OSGi 包(类型:其他,检查了 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

让我知道还有哪些其他信息可能有用,我会尽力将它们提供给社区。

4

1 回答 1

0

您的 Import-Packages 中有 org.osgi.service.event。

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

ERROR: org.osgi.service.event,version=[1.3,2) -- Cannot be resolved
于 2016-01-07T22:20:06.347 回答