部署球衣/ GlassFish上的3.1.2.2的HelloWorld OSGi的web应用程序时的

2019-10-17 18:00发布


当尝试部署的样品球衣战束码(在混帐的HelloWorld OSGi的web应用: https://github.com/jersey/jersey-1.x/tree/master/jersey/samples/helloworld-osgi-webapp )上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

为什么行家菲利克斯插件未嵌入在战争中库?
Thanx提前,M.

Answer 1:

直接的原因是,在您的应用程序它没有配置为做到这一点,它是不是这个原因是,在OSGi的世界不应该。

从聚甲醛 ,它是在规定范围:

<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的标准进口包装进口的球衣,servlet的依赖关系为OSGi服务:

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

在OSGi世界,依赖关系应该被部署为单独的OSGi包,并没有嵌入战争。 这就是你的榜样做。 所以,你应该部署的球衣作为一个单独的OSGi bundle。



文章来源: error when deploying jersey/helloworld-osgi-webapp on glassfish 3.1.2.2