文章更新时间:2023-09-20 14:40
组件简介
维护者 | swaldman 个人 | 许可证类型 | LGPL-2.1+,SSPL-1.0,EPL-1.0 |
首次发布 | 2012 年 5 月 18 日 | 最新发布时间 | 2019 年 12 月 12 日 |
GitHub Star | 1256 | GitHub Fork | 337 |
依赖包 | 532 | 依赖存储库 | 17,523 |
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。
官网:https://www.mchange.com/projects/c3p0/
官方仓库:https://github.com/swaldman/c3p0
参考链接:
https://packages.ecosyste.ms/registries/repo1.maven.org/packages/com.mchange:c3p0
组件健康度
技术健康度 | c3p0 提供了实现 jdbc3 和 jdbc2 扩展规范说明的 Connection 和 Statement 池的 DataSources 对象,可以有效地管理数据库连接和语句的创建、释放和重用。c3p0 还支持自定义连接生命周期管理、连接测试、故障恢复、语句缓存等功能,提高了性能和稳定性。c3p0 的技术健康度较高,可以满足多种场景的需求。 |
社区健康度 | c3p0 的主要开发者是 Steve Waldman,他在 GitHub 上维护了 c3p0 的源码和文档。c3p0 在 GitHub 上有 1.5k 个星标,113 个分支,271 个提交,表明它有一定的关注度和活跃度。c3p0 还有一个 Twitter 账号 @c3p0_jdbc,不过最近一次更新是在 2019 年 11 月。c3p0 的社区健康度一般,可以通过 GitHub 提交问题和反馈,但可能不会得到及时的回复和解决。 |
更新和维护频率 | c3p0 的最新版本是 0.9.5.5,发布于 2019 年 12 月。这个版本修复了一些 bug,并增加了对 Java 11 的支持。c3p0 的更新和维护频率较低,可能是因为它已经比较成熟和稳定,没有太多的新功能需求或者重大的问题。 |
兼容性 | c3p0 支持多种数据库驱动,如 PostgreSQL, MySQL, Oracle 等。c3p0 还支持与 Hibernate, Apache Tomcat, JBoss 等框架和服务器集成。c3p0 的兼容性较好,可以适应不同的数据库和应用环境。 |
文档和支持 | c3p0 在官网上提供了详细的文档,包括安装、使用、配置、性能、问题等方面的说明。文档中还包含了一些示例代码和配置文件,方便用户参考和学习。c3p0 的文档和支持较好,可以帮助用户快速上手和解决问题。 |
com.mchange:c3p0 是一个技术健康度较高、兼容性较好、文档和支持较好的 JDBC 连接池库,但是社区健康度一般,更新和维护频率较低。它支持多种数据库和框架的集成,提供了高并发和高性能的数据库连接和语句管理功能。它是一个适合多种场景的开源项目,值得用户考虑和使用。
参考链接:
https://www.mchange.com/projects/c3p0/
https://github.com/swaldman/c3p0
https://blog.csdn.net/qq_44778023/article/details/109473676
https://www.cnblogs.com/whhjava/p/10083910.html
组件许可证解读
这个项目的许可证信息可能比较复杂,因为它涉及到了三种不同的许可证:LGPL-2.1+,SSPL-1.0和EPL-1.0。这些许可证都是开源许可证,但有一些区别和兼容性问题。
- LGPL-2.1+是GNU Lesser General Public License的缩写,它是一种弱化的GPL许可证,允许你将LGPL许可的库与任何类型的软件一起使用,但要求你在修改该库时遵循LGPL的规则,比如提供源代码和保留原始版权信息等。LGPL-2.1+还允许你选择后续版本的LGPL(例如LGPL-3.0)来重新分发或修改该库。
- SSPL-1.0是Server Side Public License的缩写,它是一种类似于AGPL的许可证,要求你在提供基于SSPL许可的软件的服务时,必须公开该软件及其所有修改和依赖的源代码。SSPL-1.0是由MongoDB公司制定的,目的是防止云服务提供商利用其软件而不贡献回馈。
- EPL-1.0是Eclipse Public License的缩写,它是一种灵活的开源许可证,允许你将EPL许可的软件与任何类型的软件一起使用,但要求你在修改该软件时遵循EPL的规则,比如提供源代码和通知其他贡献者等 。
这三种许可证之间的兼容性如下:
- LGPL-2.1+和SSPL-1.0之间不兼容,因为SSPL-1.0对网络使用有更严格的限制 。如果你将LGPL许可的库与SSPL许可的软件一起使用,并通过网络提供服务,那么你必须遵守SSPL-1.0的要求,并公开所有相关的源代码,包括LGPL许可的库。这可能违反了LGPL许可的原意,因为它只要求你公开修改过的库,而不是整个软件。
- LGPL-2.1+和EPL-1.0之间不兼容,因为EPL-1.0要求你在修改EPL许可的软件时,在派生作品中保留EPL许可 。如果你将LGPL许可的库与EPL许可的软件一起使用,并对其中任何一部分进行了修改,那么你必须遵守EPL-1.0的要求,并在派生作品中使用EPL许可。这可能违反了LGPL许可的原意,因为它允许你在派生作品中使用其他类型的许可证。
- SSPL-1.0和EPL-1.0之间不兼容,因为SSPL-1.0对网络使用有更严格的限制 。如果你将SSPL许可的软件与EPL许可的软件一起使用,并通过网络提供服务,那么你必须遵守SSPL-1.0的要求,并公开所有相关的源代码,包括EPL许可的软件。这可能违反了EPL许可的原意,因为它只要求你公开修改过的软件,而不是整个软件。
综上所述,如果一个项目同时使用了这三种许可证,那么它可能会面临很多法律风险和挑战。建议你在使用该项目之前,仔细阅读各个组件的许可证,并咨询专业的法律意见。
许可证原文链接:
https://github.com/swaldman/c3p0/blob/master/LICENSE-EPL
https://github.com/swaldman/c3p0/blob/master/LICENSE-LGPL
https://github.com/swaldman/c3p0/blob/master/LICENSE
参考链接:
https://future-architect.github.io/articles/20200821/
https://opensource.stackexchange.com/questions/2486/compatibility-between-epl-and-lgpl
组件漏洞版本及修复方案
漏洞编号 | 漏洞标题 | 漏洞等级 | 影响版本 | 修复版本 |
MPS-2019-4274 | c3p0 存在拒绝服务漏洞 | 高危 | (-∞,0.9.5.4) | 0.9.5.4 |
MPS-2018-16252 | c3p0 存在 XXE 漏洞 | 严重 | (-∞,0.9.5.3) | 0.9.5.3 |
同类型可替代组件
- Apache Commons DBCP:这是一个由 Apache 组织提供的连接池库,它实现了 JDBC 3 和 JDBC 2 扩展规范,支持多种数据库驱动和框架。它的优点是成熟和稳定,缺点是更新和维护频率较低,性能和功能不如其他一些新的连接池库。官网:https://commons.apache.org/proper/commons-dbcp/
- HikariCP:这是一个由 Brett Wooldridge 创建的连接池库,它声称是最快的 JDBC 连接池库,具有高性能和低开销的特点。它的优点是轻量级和简单,支持 Java 8 和 Lambda 表达式,缺点是配置选项较少,功能较为基础。官网:https://github.com/brettwooldridge/HikariCP
- Tomcat JDBC:这是一个由 Tomcat 服务器提供的连接池库,它基于 Apache Commons DBCP 的代码,但是做了一些改进和优化。它的优点是功能丰富和性能良好,支持异步连接释放和验证,缺点是与 Tomcat 服务器耦合较紧,不太适合其他应用环境。官网:https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html
组件SBOM
组件名称 | 版本 | 是否直接依赖 | 仓库 |
com.mchange:mchange-commons-java | @mchange-commons-java.version.maven@ | 是 | maven |
该SBOM清单仅展示部分内容
完整SBOM清单及检测报告:
https://www.murphysec.com/console/report/1704381912721440768/1704381912889212928?allow=1