WSO2 APIM 3.2升级至4.3时自定义中介OSGI打包异常求助
解决WSO2 APIM 4.3自定义中介OSGI打包依赖问题
问题根源
WSO2 APIM 4.3版本中,Synapse组件已升级至3.x系列,而你的OSGI配置自动生成的依赖要求是[2.1.0,3.0.0),和当前环境的Synapse版本不匹配,导致包无法解析启动。
具体修改方案
1. 合并并修正<Import-Package>配置
你当前的pom里重复声明了多次<Import-Package>,这会导致配置冲突,需要合并成单一节点,并明确指定适配APIM4.3的Synapse版本范围:
替换所有<Import-Package>节点为以下内容:
<Import-Package> org.apache.commons.lang3.*, com.fasterxml.jackson.dataformat.xml;version="2.9.10", org.wso2.carbon.apimgt.*, org.apache.synapse.*;version="[3.0.0,4.0.0)", org.apache.axis2.*, * </Import-Package>
- 给
org.apache.synapse.*指定版本范围[3.0.0,4.0.0),匹配APIM4.3内置的Synapse版本 - 删除之前所有重复的
<Import-Package>声明,避免配置优先级问题
2. 移除不必要的内嵌依赖(推荐)
APIM4.3本身已经内置了Jackson相关组件,无需内嵌jackson-dataformat-xml,否则容易引发版本冲突:
<!-- 直接删除以下两行配置 --> <Embed-Dependency>jackson-dataformat-xml;scope=compile|runtime</Embed-Dependency> <Embed-Transitive>true</Embed-Transitive>
如果你的代码必须依赖特定版本的Jackson,可保留但需确认版本与APIM内置版本兼容。
3. 对齐APIM4.3的依赖版本(可选但关键)
在项目的dependencyManagement中引入WSO2 APIM的BOM,确保所有依赖版本与APIM4.3完全对齐:
<dependencyManagement> <dependencies> <dependency> <groupId>org.wso2.carbon.apimgt</groupId> <artifactId>org.wso2.carbon.apimgt.bom</artifactId> <version>4.3.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
修改后的完整maven-bundle-plugin配置
<plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <version>${maven-bundle-plugin.version}</version> <extensions>true</extensions> <configuration> <instructions> <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> <Bundle-Name>${project.name}</Bundle-Name> <Bundle-Version>${project.version}</Bundle-Version> <Bundle-Activator>com.trafficcollector.wso2.PluginActivator</Bundle-Activator> <Export-Package>com.trafficcollector.wso2.mediator.*</Export-Package> <Private-Package> com.trafficcollector.wso2.config, com.trafficcollector.wso2.dto*, com.trafficcollector.wso2.osgi, com.trafficcollector.wso2.publish*, com.trafficcollector.wso2.transform*, com.trafficcollector.wso2.exception, com.trafficcollector.wso2.filter, com.trafficcollector.wso2.service, com.trafficcollector.wso2.misc </Private-Package> <Import-Package> org.apache.commons.lang3.*, com.fasterxml.jackson.dataformat.xml;version="2.9.10", org.wso2.carbon.apimgt.*, org.apache.synapse.*;version="[3.0.0,4.0.0)", org.apache.axis2.*, * </Import-Package> </instructions> </configuration> </plugin>
验证步骤
- 执行
mvn clean install重新构建项目 - 将生成的bundle包放入APIM4.3的
repository/components/dropins目录 - 启动APIM,检查启动日志是否不再出现依赖解析错误
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

