我的应用程序中运行在fuse esb内的osgi捆绑包需要bouncycastle提供的pgp加密。Bouncycastle提供程序不应影响其他应用程序捆绑包/fuse esb功能。既然bouncycastle不是OSGI jar,那么如何将其添加到fuse ESB环境中呢?
我将bouncycastle罐子重新打包为OSGI罐子,但它给出了签名错误。我将jar复制到JDK安全目录,但我的应用程序捆绑包并没有开始说找不到bouncycastle类。与复制到karaf外部库目录相同。
您没有指定Fuse ESB(当时称为JBoss Fuse,现在称为Red Hat Fuse(的版本。我用的是保险丝7.6。
我检查了一个琐碎的pgp示例,所需要的只是将bcpg-jdk15on-164.jar
添加到$FUSE_HOME/lib/ext
——这个目录已经包含了bcpkix
和bcprov
库。然而,bcpg
库提供了对OpenPGP的支持。
从OSGi的角度来看,您只需要适当的导入(或动态导入(。无需安装任何捆绑包,因为一切都在$FUSE_HOME/etc/config.properties
:中配置
org.osgi.framework.bootdelegation =
...
sun.*,
org.bouncycastle,
org.bouncycastle.*,
...
如果您使用的是JBoss Fuse 6.x,那也是一样的。仅$FUSE_HOME/lib/ext
包含bcprov-jdk15on.jar
。
1(将bouncycastle jar文件添加到lib/ext
2( 将bouncycastle包添加到etc/config.properties中的bootdelegation(如上第一个答案(
3( 从maven捆绑包插件的导入部分显式删除bouncycastle包
<Import-Package>
!org.bouncycastle.jce.*,
!org.bouncycastle.bcpg.*,
!org.bouncycastle.openpgp.*,
!org.bouncycastle.openpgp.operator.*,
!org.bouncycastle.openpgp.operator.bc.*,
!org.bouncycastle.openpgp.operator.jcajce.*,
*
</Import-Package>
4( 在动态导入部分中导入这些包