WSO2 API Manager 4.x中如何从自定义OSGi Bundle暴露HTTP端点并复用依赖?
WSO2 API Manager 4.6.0 自定义货币化插件HTTP端点暴露方案问题
我正在为WSO2 API Manager 4.6.0开发自定义货币化插件,该插件打包为JAR部署在/repository/components/lib/下,已通过配置成功加载并在订阅流程中使用。现在需要在同一WSO2运行时中暴露两个HTTP端点,这些端点必须调用插件已使用的现有类和依赖(Java客户端库、WSO2 MySQL数据库的JDBC连接、DAO层等)。
已尝试的方案
- OSGi HttpService servlet(部署在
/dropins/的Bundle):这是标准的OSGi方案,但将Bundle移至/dropins/会引入严格的导入解析。/lib/中的JAR被包装为OSGi Bundle,导出版本设置为0.0.0,导致依赖解析失败(如jakarta.json、org.joda.time、第三方客户端库)。嵌入完整依赖树并不现实。 - Synapse API + 类中介器:创建Synapse API并调用自定义类中介器也需要将中介器Bundle部署在
/dropins/中,这会导致相同的OSGi依赖解析问题。此外,它运行在网关端口,不适合复杂逻辑。 - 部署在
/repository/deployment/server/webapps/的WAR:通过嵌入式Tomcat可以运行,但WAR有独立的类加载器,无法直接访问插件的类。这需要重复依赖和配置。 - 独立外部服务:调用WSO2 REST API的独立服务可以工作,但会重复凭证、数据库访问、令牌管理和部署复杂度。
问题
在WSO2 API Manager 4.x中,从同一运行时暴露HTTP端点同时复用/lib/已加载的类和依赖的推荐模式是什么?或者,是否可以配置/lib/→/dropins/的OSGi包装,以保留导出包版本并正确解决依赖解析?
环境
- WSO2 API Manager 4.6.0
- Equinox OSGi
- Maven Bundle Plugin 5.1.9
- Java 19
内容的提问来源于stack exchange,提问作者Mraidi Imen
相关产品推荐
相关产品推荐

