Apache Olingo 5.0.0 介绍与选型指南
Apache Olingo 5.0.0 介绍与选型指南:已退役的 OData 协议 Java 实现(2025-12 决议退役、2026-06 完成向 Apache Attic 迁移),讲清 OData V2/V4 双产品线架构、最后稳定版 5.0.0 的模块组成与归档制品获取路径,并以 ASP.NET Core OData、odata4j、SAP CAP 为替代方案给出量化选型对比,不建议新项目采用。
Apache Olingo 5.0.0 介绍与选型指南
⚠️ 项目已退役,请勿用于新项目。 Apache Olingo 于 2025-12 作出退役决议、2026-06 完成向 Apache Attic 的迁移,最后稳定版为 5.0.0(OData V4 线),此后不再有任何维护与安全更新。本文为认知篇,面向存量系统维护者与选型评估者,全部论断基于 Apache Attic 页面、Maven Central 元数据与官方站点联网溯源(查询日期 2026-10-19),不做本地安装实测。
一、信息基准
本节给出本文全部关键数据的基准与来源,所有版本号与状态信息均在 2026-10-19 联网核验。
- 查询日期:2026-10-19。
- 基准版本:5.0.0(OData V4 产品线的最后稳定版;OData V2 产品线最后稳定版为 2.0.13)。Olingo 已退役,5.0.0 即为该项目的最终版本,不存在更新版本。
- 维护方:原为 Apache 软件基金会顶级项目(TLP);2025-12 经董事会决议退役,2026-06 完成向 Apache Attic 的迁移(工单 ATTIC-251),现为无任何维护活动的归档项目。
- 许可:Apache License 2.0(ASF 项目统一许可)。
- 发行形态:Java 库(Maven Central 制品)+ 归档源码发行件(archive.apache.org)。
- 版本依据(含来源 URL,查询日期 2026-10-19):
- 退役状态与时间线:https://attic.apache.org/projects/olingo.html (明确记载 "became a Top Level Project in March 2014, retired in December 2025 and the move to the Attic was completed in June 2026 (ATTIC-251)")。
- OData V4 线最后版本 5.0.0:https://repo1.maven.org/maven2/org/apache/olingo/odata-server-core/maven-metadata.xml (版本列表终止于 5.0.0,元数据最后更新 2023-12-18)。
- OData V2 线最后版本 2.0.13:https://repo1.maven.org/maven2/org/apache/olingo/olingo-odata2-core/maven-metadata.xml (版本列表终止于 2.0.13,元数据最后更新 2023-10-22)。
- 官方站点(仍可访问,内容停更):https://olingo.apache.org/
💡 说明:Olingo 的 GitHub 仓库(github.com/apache/olingo)在退役迁移后已不可访问(2026-10-19 实查返回 404),社区星标数据因此不可得;官方源码归档位置以 Attic 页面列出的 Apache gitbox 仓库为准。
二、软件概述
2.1 项目定位
Apache Olingo 是一个用 Java 实现 OData(Open Data Protocol,开放数据协议) 的库,同时覆盖 OData 的 client(客户端)与 server(服务端)两侧能力。OData 是由 OASIS 标准化的基于 REST 与 HTTP 的数据访问协议,通过统一的 $metadata 描述、CRUD 动词与查询选项(如 $filter、$select、$expand)暴露结构化数据服务,微软 SharePoint/PowerBI 生态与 SAP 产品线均有广泛使用。
💡 技术拓展:OData 协议存在两个主要版本代际——
版本 标准化状态 主要差异 Olingo 支持情况 OData 2.0 微软事实标准(未成 OASIS 标准) 元数据模型较简单,生态最早 olingo-odata2 产品线(终版 2.0.13) OData 4.0 OASIS 正式标准 类型系统与批处理更完整,JSON 格式化 olingo-odata4 产品线(终版 5.0.0) OData 4.01/4.1 OASIS 后续修订 补充 JSON 批处理等能力 Olingo 未跟进 本篇介绍的 5.0.0 属于 OData V4 线,是 Olingo 的最终产品形态。
2.2 双产品线与终版
Olingo 长期维护两条产品线:OData 2.0 线(制品前缀 olingo-odata2-*,终版 2.0.13,2023-10 发布)与 OData 4.0 线(制品前缀 odata-*,终版 5.0.0,2023-12 发布)。两条线在退役决议前均已多年处于低活跃状态:4.x 系列在 2023 年完成 4.10.0 后转向 5.0.0,此后再无发布。2025-12 董事会决议将其送入 Attic,2026-06 迁移完成,项目官网与归档制品仍可访问,但社区邮件列表、缺陷跟踪均已冻结。
三、核心架构
3.1 OData V4 线模块结构
以 Maven Central 上 org.apache.olingo groupId 下的制品组织(目录结构实查于 2026-10-19,来源:https://repo1.maven.org/maven2/org/apache/olingo/ ):
- odata-commons-api / odata-commons-core:客户端与服务端共享的通用类型与工具,包括 OData 版本协商、URL 解析、序列化基础。
- odata-server-api / odata-server-core:服务端实现。核心抽象是 EDM(Entity Data Model,实体数据模型)——通过实现
CsdlAbstractEdmProvider提供实体类型、实体集、导航属性的元数据,由调度器(ODataDispatcher)将 HTTP 请求路由到对应的处理器(EntityProcessor 等),开发者按ODataHandler管线接入。 - odata-client-api / odata-client-core / odata-client-proxy:客户端实现。
odata-client-core负责构造请求与解析响应(含$metadata解析与类型化对象生成),odata-client-proxy提供基于动态代理的强类型访问方式。 - odata-karaf / odata-karaf-features:面向 Apache Karaf(OSGi 运行环境)的部署特性包。
3.2 OData V2 线模块结构
V2 线以 olingo-odata2-* 前缀组织,核心为 olingo-odata2-api(服务端 SPI 与模型抽象)与 olingo-odata2-core(实现),另有面向 JPA 的注解处理器(olingo-odata2-annotation-processor-*),可把 JPA 实体直接映射为 OData 2.0 服务。该线长期只维护 client 部分(client-api/client-core 在 2019-02 仍有目录更新记录,终版停在 2.0.13)。
3.3 架构特征小结
Olingo 是纯 Java 库,无独立进程与运行时控制面:服务端侧以 Servlet(或等价 HTTP 框架)承载,客户端侧以普通依赖嵌入应用。这决定了它的部署形态简单,但也意味着协议合规、安全修补、性能优化全部依赖上游库版本——退役后这一点成为不可修复的固有风险。
四、关键特性
以下特性依据官方站点(olingo.apache.org)与 Maven Central 制品清单归纳(查询日期 2026-10-19):
- OData V4 协议核心支持:元数据文档(
$metadata)、实体 CRUD、系统查询选项($filter/$select/$expand/$orderby/$top/$skip)、批处理与 JSON 格式化,官方文档入口 https://olingo.apache.org/doc/odata4/index.html 。 - OData V2 协议支持:完整的 V2 生产者与消费者能力,含 JPA 到 OData 2.0 的注解处理器映射,官方文档入口 https://olingo.apache.org/doc/odata2/index.html 。
- JavaScript 端库(odatajs):官方还维护过浏览器端 OData 消费库 datajs 的衍生版 odatajs(归档目录
archive.apache.org/dist/olingo/odatajs/可查)。 - Karaf/OSGi 部署支持:V4 线提供 Karaf 特性包。
- 固有限制(退役导致):零安全更新、零缺陷修复;未跟进 Jakarta EE 命名空间迁移(V4 线面向 Java 8 时代的 javax.servlet 生态)、未跟进 OData 4.01/4.1 修订、JDK 兼容性停留在旧版本。存量系统若无法升级,需自行承担补丁维护责任。
五、快速上手(获取归档制品路径)
Olingo 已退役,上手路径即"从归档渠道获取最后稳定版制品",不涉及任何新部署形态。以下坐标与 URL 均实查有效(查询日期 2026-10-19)。
1)Maven Central 依赖坐标(OData V4 线,最后版 5.0.0):
<!-- 服务端实现(含 api) -->
<dependency>
<groupId>org.apache.olingo</groupId>
<artifactId>odata-server-core</artifactId>
<version>5.0.0</version>
</dependency>
<!-- 客户端实现(含 api) -->
<dependency>
<groupId>org.apache.olingo</groupId>
<artifactId>odata-client-core</artifactId>
<version>5.0.0</version>
</dependency>
2)Maven Central 依赖坐标(OData V2 线,最后版 2.0.13):
<dependency>
<groupId>org.apache.olingo</groupId>
<artifactId>olingo-odata2-core</artifactId>
<version>2.0.13</version>
</dependency>
3)源码归档:Apache 归档发行目录 https://archive.apache.org/dist/olingo/ 下按产品线分为 odata2/、odata4/、odatajs/ 三个子目录(另含签名用 KEYS 文件),各子目录内存放对应版本的 source-release 归档包,用于离线审阅与自建重打包。
4)学习材料:官方教程仍可访问——V4 教程见 https://olingo.apache.org/doc/odata4/index.html (服务端与客户端系列教程),V2 教程见 https://olingo.apache.org/doc/odata2/index.html 。
⚠️ 注意:以上制品仅适用于存量系统的兼容性验证与维护评估。任何"基于 Olingo 5.0.0 启动新开发"的方案都意味着从第一天起就使用一个无安全维护的协议库,不建议。
六、适用场景与限制
适用场景(仅存量):
- 存量 Java 系统仍以 Olingo 作为 OData server/client 运行,需要理解其模块与版本边界以制定维护策略;
- 遗留系统对接老旧 OData 2.0 服务(V2 线 2.0.13)时的协议行为确认;
- 合规与安全审计中确认"项目已退役、最后版本、无补丁渠道"这一事实基线。
限制与明确建议:
- 不建议任何新项目采用:项目已入 Attic,CVE 不会得到修复,OData 4.01/4.1、Jakarta EE、新版 JDK 均不支持;
- 若确需在 Java 生态消费/生产 OData,应评估替代实现(见第七章)或改用普通 REST/gRPC 自行建模;
- 若选择留在 OData 生态,.NET 侧的 ASP.NET Core OData 活跃度远高于任何 Java 实现;Java 侧可评估 odata4j(但同样停更)或以 SAP CAP 为代表的框架级方案;
- 对外暴露的 OData 服务若仍由 Olingo 承载,建议尽快制定迁移计划并在网关层增加针对性防护。
七、同类选型对比
面向"实现/消费 OData 服务"这一需求的横向对比(星标数为 GitHub 仓库实查值,查询日期 2026-10-19,取自 shields.io 的 github stars 徽章接口;版本为各仓库 Releases 实查):
| 方案 | 生态/语言 | 当前状态 | 最新版本 | GitHub Stars | 关键差异 |
|---|---|---|---|---|---|
| Apache Olingo 5.0.0 | Java | 已退役(2026-06 入 Attic) | 5.0.0(2023-12) | 仓库已删除(404) | 唯一同时覆盖 OData V2/V4 的 Apache Java 库;零维护 |
| ASP.NET Core OData(OData/WebApi) | .NET(C#) | 活跃 | 7.8.1(2026-10-19 实查为最新 Release) | 864 | 微软官方 .NET 实现,与 ASP.NET Core 管线深度集成,OData 新特性跟进最快 |
| odata4j | Java | 停更 | 0.7(多年未更新) | 42 | Java 侧轻量实现,但同样长期无维护,不能作为 Olingo 的"接盘"选择 |
| SAP CAP(Cloud Application Programming Model) | Node.js / Java | 商业主导持续演进 | 由 SAP 发布节奏管理(官网 https://cap.cloud.sap/docs ) | 无单仓库星标口径 | CDS 建模语言原生产出 OData V4 服务,面向 SAP 生态的应用框架,含数据库与部署工具链 |
数据来源:各仓库 Releases 页与 shields.io(查询日期 2026-10-19);SAP CAP 信息来源:https://cap.cloud.sap/docs 。
选型建议:OData 是一个"生态重心在 .NET 与 SAP 体系"的协议。若你的技术栈是 .NET,直接选 ASP.NET Core OData;若在 SAP 业务体系内新建服务,CAP 是官方推荐路径;Java 生态目前没有活跃的 OData 实现——继续留在 Java 时应考虑放弃 OData 改用普通 REST/gRPC,或把 OData 服务边界放在 .NET/SAP 平台侧;Olingo 本体仅值得作为存量维护对象存在。
八、参考链接
- Apache Attic 项目页(退役状态与时间线):https://attic.apache.org/projects/olingo.html
- Attic 迁移工单 ATTIC-251:https://issues.apache.org/jira/browse/ATTIC-251
- 官方站点(停更):https://olingo.apache.org/
- V4 教程:https://olingo.apache.org/doc/odata4/index.html
- V2 教程:https://olingo.apache.org/doc/odata2/index.html
- Maven Central 制品目录:https://repo1.maven.org/maven2/org/apache/olingo/
- 源码归档目录:https://archive.apache.org/dist/olingo/
- 替代方案:ASP.NET Core OData https://github.com/OData/WebApi ;odata4j https://github.com/odata4j/odata4j ;SAP CAP https://cap.cloud.sap/docs