找回密码
 立即注册
首页 业界区 科技 wso2~product-apim的定位与组成

wso2~product-apim的定位与组成

廖彗云 2025-6-7 10:10:18
4.5版本新功能


  • admin服务,添加AI/LLM Vendors功能
  • 服务的界面无变化
  • helm-apim的distributed版添加对openTelemetry
WSO2 API Manager(APIM)的代码仓库采用了模块化设计,其核心功能和持久化代码并未直接存放在 product-apim 主仓库中,而是分布在多个子组件仓库中。以下是具体分析:
1. product-apim 仓库的定位


  • 功能定位
    product-apim 仓库主要作为 产品集成层,负责将各子组件(如 carbon-apimgt、carbon-kernel)的模块整合为完整的 API Manager 发行包。它包含构建脚本、配置文件、集成测试及最终产品打包逻辑,而非核心业务代码。
  • 代码内容
    该仓库中可见的代码多为 资源文件(如 JSP 页面、配置文件)、测试用例Maven 构建配置。例如,modules/distribution 目录负责生成最终的可执行 ZIP 包,而核心功能(如 API 发布、网关路由)通过依赖其他组件实现。


  • carbon-apimgt https://github.com/wso2/carbon-apimgt.git
  • carbon-kerne https://github.com/wso2/carbon-kernel.git
2. 核心代码与持久化组件的分布


  • product-apim

    • carbon-apimgt
    • carbon-registry
    • carbon-analytics
    • carbon-kernel



  • carbon-apimgt 仓库
    这是 核心业务逻辑 的存储库,包含 API 管理、密钥生成、数据库交互等关键功能。例如:

    • 数据库持久化逻辑位于 components/apimgt/org.wso2.carbon.apimgt.impl 模块中,涉及 DAO 层和 Hibernate 配置。
    • 核心类如 APIConsumerImpl(API 消费逻辑)、APIPublisherImpl(API 发布逻辑)也在此仓库中实现。

  • carbon-kernel 仓库
    提供 WSO2 产品的运行时基础(如 OSGi 容器、日志框架),并包含部分 通用持久化支持(如 JDBC 连接池、事务管理)。
  • 其他相关仓库

    • carbon-registry:元数据存储(如 API 配置、策略文件)的持久化实现。
    • carbon-analytics:事件流处理与状态持久化(如 Siddhi 引擎集成 Cassandra)。

3. 构建与依赖管理


  • Maven 依赖机制
    product-apim 通过 Maven 从 WSO2 私有仓库(Nexus)拉取预编译的子组件 JAR 包(如 carbon-apimgt-6.1.66.jar),而非直接包含源码。因此,用户需单独克隆子仓库以查看或修改核心代码。
  • 构建流程示例
    若需自定义持久化逻辑(如修改数据库操作),需:

    • 克隆 carbon-apimgt 并切换到对应版本标签(如 v6.1.66)。
    • 修改代码后执行 mvn clean install 安装到本地 Maven 仓库。
    • 重新构建 product-apim,使新编译的 JAR 被集成到最终产品包中。

4. 持久化代码的具体位置


  • 数据库交互层
    在 carbon-apimgt 仓库中,数据库操作主要位于:

    • org.wso2.carbon.apimgt.persistence.dao:DAO 接口及实现类(如 APIDAO、SubscriptionDAO)。
    • resources/dbscripts:各数据库的 DDL 脚本(如 apimgt/mysql.sql)。

  • 配置文件
    数据源定义(如 JDBC 连接)在 product-apim 的部署包中通过 repository/conf/datasources/master-datasources.xml 配置。
5. 用户常见误解与解决方案


  • 误解:认为 product-apim 包含完整源码。
    原因:WSO2 的模块化设计导致核心代码分散在多个仓库。
    解决:通过官方文档或构建脚本追踪子组件依赖关系。
  • 调试自定义代码未生效
    需确保修改的子组件版本与 product-apim 的依赖版本一致,并重新构建所有相关模块。
总结


  • product-apim 仓库:产品集成层,不包含核心代码,仅负责打包。
  • 核心代码:分布于 carbon-apimgt、carbon-kernel 等子仓库。
  • 持久化实现:需查看 carbon-apimgt 的 DAO 层及 carbon-registry 的元数据管理模块。
若需深入分析数据库持久化或修改核心逻辑,需定位到对应的子组件仓库并遵循多模块构建流程。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册