Osgi 无法在wso2应用程序服务器中将正确的捆绑包与我自己的捆绑包连接

Osgi 无法在wso2应用程序服务器中将正确的捆绑包与我自己的捆绑包连接,osgi,wso2,wso2carbon,apache-commons-dbcp,osgi-bundle,Osgi,Wso2,Wso2carbon,Apache Commons Dbcp,Osgi Bundle,我使用的是wso2应用服务器5.1.0。 我已经部署了自己的捆绑包,其名称为演示服务,其清单中包含导入包定义,如下所示: >Bundle-SymbolicName = demo-service Import-Package = javax.sql,org.apache.commons.dbcp;version="[1.4,2)" 我试着为我的案例诊断OSGi世界中最流行的“使用冲突”,我发现commons-dbcp_1.4.0.wso2v1.jar和commons-dbcp-1.4.ja

我使用的是wso2应用服务器5.1.0。 我已经部署了自己的捆绑包,其名称为演示服务,其清单中包含导入包定义,如下所示:

>Bundle-SymbolicName = demo-service
Import-Package = javax.sql,org.apache.commons.dbcp;version="[1.4,2)"
我试着为我的案例诊断OSGi世界中最流行的“使用冲突”,我发现commons-dbcp_1.4.0.wso2v1.jarcommons-dbcp-1.4.jar都通过容器转换为OSGi包,并导出版本为“0.0.0”的包可以从以下输出中观察到:

>osgi> packages org.apache.commons.dbcp
org.apache.commons.dbcp; version="0.0.0"<commons-dbcp_1.4.0.wso2v1 [49]>
  compass_2.0.1.wso2v2 [60] imports
  org.wso2.carbon.core_4.1.0 [256] imports
  org.wso2.carbon.registry.core_4.1.0 [377] imports
  org.wso2.carbon.tenant.mgt_2.1.0 [434] imports
  synapse-commons_2.1.1.wso2v3 [528] imports
  synapse-core_2.1.1.wso2v3 [529] imports
org.apache.commons.dbcp; version="0.0.0"<commons_dbcp_1.4_1.0.0 [57]>
>osgi>包org.apache.commons.dbcp
org.apache.commons.dbcp;version=“0.0.0”
compass_2.0.1.wso2v2[60]导入
org.wso2.carbon.core_4.1.0[256]导入
org.wso2.carbon.registry.core_4.1.0[377]导入
org.wso2.carbon.tenant.mgt_2.1.0[434]导入
synapse-commons_2.1.1.wso2v3[528]导入
synapse-core_2.1.1.wso2v3[529]导入
org.apache.commons.dbcp;version=“0.0.0”
根据我的演示服务包的要求,它无法找到 org.apache.commons.dbcp;version=“[1.4,2)”

在将非osgi捆绑包转换为osgi捆绑包后,是否有任何方法导出commons-dbcp-1.4.jar的包,因为我需要确保我的演示服务捆绑包与commons-dbcp-1.4.jar连接

简而言之,我放在WSO2\u HOME\repository\components\lib文件夹容器中的第三方jar的任何版本都会以version=“0.0.0”导出它。这不利于OSGi类加载的主要概念

在这种情况下,请建议是否有任何解决方法……)


谢谢..

当导出包时未指定版本时,OSGi默认为0.0.0版本。在这种情况下,由于它自动转换为OSGi捆绑包,可能没有明确指定版本。有时这也有助于确保包的多个版本不存在

在您的情况下,当您需要使用放入
repository\components\lib
文件夹中的捆绑包时,您可以手动指定版本。您放入
repository\components\lib
文件夹中的JAR的OSGi绑定捆绑包可以在
repository\components\dropins
文件夹中找到。在该捆绑包中,您可以找到OSGi manifest文件。在清单文件中,手动指定
导出包
类别下所需包的版本,如下所示

org.apache.commons.dbcp;version=1.4.1

然后在启动时,它将使用这些捆绑包,您应该能够导出具有指定版本的包。

我不知道这是否是编辑扭曲的普通JAR的manifest.mf文件的正确方法。因为在这样做之后,我还需要保留每个手动修改的JAR的单独副本以备备份。。