廖彗云 发表于 2025-6-7 10:10:18

wso2~product-apim的定位与组成

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 的元数据管理模块。
若需深入分析数据库持久化或修改核心逻辑,需定位到对应的子组件仓库并遵循多模块构建流程。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: wso2~product-apim的定位与组成