环境为Jboss7 + felix osgi
已经在jboss7中部署了一个osgi bundle, web应用没有打包成osgi,依然是普通的war,现在要解决的是想在war中调用这个osgi bundle的对象和方法。
解决方案:
bundle为BUNDLENAME-1.0.jar,注意Dependencies里要在名字BUNDLENAME前面加上deployment. 后面加上:1.0.0 (不是1.0!)
这样,在web应用里可以像引用普通jar里的对象方法一样来引用这个bundle里的对象方法。
pom.xml里做一下配置,这段配置的作用是在生成的war里面的META-INF/MANIFEST.MF中添加上Dependencies: BUNDLENAME:1.0.0这个header
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
<manifestEntries>
<Dependencies>deployment.BUNDLENAME:1.0.0</Dependencies>
</manifestEntries>
</archive>
<webResources>
<resource>
<directory>src/main/webapps</directory>
<excludes>
<!-- exclude>**/*.jar</exclude -->
</excludes>
</resource>
</webResources>
<packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
</configuration>
</plugin>