1


尝试在_ Glassfish 3.1.2.2,我收到以下 osgi 错误:

remote failure: Error occurred during deployment: Exception while loading the app: 
  org.osgi.framework.BundleException: Unresolved constraint in bundle war-bundle [344]:
  Unable to resolve 344.0: missing requirement [344.0] osgi.wiring.package; (&(osgi.wiring.package=com.sun.jersey.api.core)(version>=1.18.0)(!(version>=2.0.0))).
  Please see server.log for more details.
  Command deploy failed

为什么 maven felix 插件没有在战争中嵌入库?
提前感谢,M。

4

1 回答 1

2

直接原因是在您的应用程序中它没有被配置为这样做,并且它不是的原因是在 OSGi 世界中它不应该这样做。

pom它在提供的范围内:

<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
<classifier>cobertura</classifier>

它只会嵌入运行时和编译范围:

<Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>

并使用 OSGi 标准 import-package 将 jersey-servlet 依赖项导入为 OSGi 服务:

<Import-Package>com.sun.jersey.api.core,com.sun.jersey.spi.container.servlet,*</Import-Package>

在 OSGi 世界中,依赖项应该部署为单独的 OSGi 包,而不是嵌入到战争中。这就是你的例子正在做的事情。因此,您应该将 jersey 部署为单独的 OSGi 包。

于 2013-02-18T16:51:38.723 回答