我正在使用 wso2 应用程序服务器 5.1.0。我已经部署了我自己的包,名称为demo-service,它的清单中包含 import-package 定义,如下所示:
>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.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]>
根据我的演示服务包的要求,它无法找到 org.apache.commons.dbcp;version="[1.4,2)"
有没有办法在commons-dbcp-1.4.jar的包从非osgi包转换为osgi包后导出它,因为我需要确保我的演示服务包应该与commons-dbcp-1.4.jar连接..
简而言之,我放在 WSO2_HOME\repository\components\lib 文件夹容器中的任何版本的第三方 jar 都会以 version="0.0.0" .. 导出它,这不利于 OSGi 类加载的主要概念
请建议在这种情况下是否有任何解决方法.. :)
谢谢 ..