Не удалось связать правильный пакет с моим собственным пакетом на сервере приложений wso2

Я использую сервер приложений wso2 5.1.0. Я развернул свой собственный пакет с именем demo-service, который содержит определение пакета импорта в своем манифесте, как показано ниже:

>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..

Короче говоря, любая версия стороннего jar-файла, которую я помещаю в контейнер папки WSO2_HOME\repository\components\lib, экспортирует его с версией = "0.0.0" .. что препятствует основной концепции загрузки классов OSGi

пожалуйста, предложите, возможно ли какое-либо обходное решение в этом случае .. :)

Спасибо ..


person Patel Parimal    schedule 06.09.2013    source источник


Ответы (1)


Если версия не указана при экспорте пакетов, OSGi по умолчанию использует версию 0.0.0. В этом случае, поскольку он автоматически преобразуется в пакет osgi, возможно, версия не указана явно. Иногда это также помогает гарантировать отсутствие нескольких версий пакетов.

В вашем случае, поскольку вам нужно использовать пакеты в комплекте, помещенном в папку repository\components\lib, вы можете вручную указать версию. OSGi-fied пакеты банок, которые вы поместили в repository\components\lib, можно найти в папке repository\components\dropins. Внутри этого пакета вы найдете файл манифеста OSGi. В файле манифеста вручную укажите версии необходимых пакетов в категории Export-Package следующим образом.

org.apache.commons.dbcp;version=1.4.1

Затем при запуске он будет использовать эти пакеты, и вы сможете экспортировать пакеты с указанной версией.

person Nufail    schedule 06.09.2013
comment
Я не знаю, является ли это правильным способом редактирования файла manifest.mf деформированного простого JAR.. потому что после этого мне также нужно сохранить отдельную копию каждого измененного вручную JAR для целей резервного копирования.. - person Patel Parimal; 06.09.2013