Skip to content

Commit 6730adc

Browse files
committed
refactor(native-image): 优化数据库驱动的原生镜像配置
- 移除手动注册 MySQL JDBC 反射配置,改用 quarkus-jdbc-mysql 扩展自动处理 - 保留 SQLite JDBC 的手动反射注册配置以支持原生驱动 - 从原生镜像运行时初始化列表中移除 MySQL 相关类 - 更新依赖配置以使用 Quarkus 官方 MySQL 扩展
1 parent d7dbd8c commit 6730adc

3 files changed

Lines changed: 9 additions & 16 deletions

File tree

‎flexmodel-server/pom.xml‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,15 @@
7171
<version>1.18.44</version>
7272
<scope>compile</scope>
7373
</dependency>
74+
<!-- Quarkus JDBC 扩展 — MySQL 官方扩展内置 native-image 元数据 -->
7475
<dependency>
75-
<groupId>org.xerial</groupId>
76-
<artifactId>sqlite-jdbc</artifactId>
76+
<groupId>io.quarkus</groupId>
77+
<artifactId>quarkus-jdbc-mysql</artifactId>
7778
</dependency>
79+
<!-- SQLite JDBC — Quarkus 3.x platform 已移除该扩展,使用原生驱动 -->
7880
<dependency>
79-
<groupId>com.mysql</groupId>
80-
<artifactId>mysql-connector-j</artifactId>
81+
<groupId>org.xerial</groupId>
82+
<artifactId>sqlite-jdbc</artifactId>
8183
</dependency>
8284
<dependency>
8385
<groupId>io.agroal</groupId>

‎flexmodel-server/src/main/java/dev/flexmodel/common/config/nativeimage/FlexmodelNativeProcessor.java‎

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -222,14 +222,8 @@ ReflectiveClassBuildItem registerThirdPartyClasses() {
222222
return ReflectiveClassBuildItem.builder(
223223
// Auth0 JWT — 无 Quarkus 扩展
224224
"com.auth0.jwt.exceptions.JWTVerificationException",
225-
// MySQL JDBC — DataSource、Driver、异常/协议类(Util.getInstance 反射加载)
226-
"com.mysql.cj.jdbc.MysqlDataSource",
227-
"com.mysql.cj.jdbc.Driver",
228-
"com.mysql.cj.exceptions.**",
229-
"com.mysql.cj.conf.url.**",
230-
"com.mysql.cj.conf.ConnectionUrl",
231-
"com.mysql.cj.conf.HostInfo",
232-
// SQLite JDBC — 原生镜像需要 DataSource 反射
225+
// MySQL JDBC 反射由 quarkus-jdbc-mysql 扩展自动处理
226+
// SQLite JDBC — 原生驱动需要手动注册 DataSource 反射
233227
"org.sqlite.SQLiteDataSource",
234228
// Agroal 连接池 — 原生镜像需要反射访问 DataSource 接口实现
235229
"io.agroal.pool.DataSource",

‎flexmodel-server/src/main/resources/application.properties‎

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,7 @@ quarkus.s3.sync-client.type=url
3838
# 否则 GraalVM 构建期会因 Random 实例进入 image heap 报错。
3939
quarkus.native.additional-build-args=\
4040
--initialize-at-run-time=dev.flexmodel.auth.service.ApiKeyGenerator,\
41-
--initialize-at-run-time=graphql.util.IdGenerator,\
42-
--initialize-at-run-time=com.mysql.cj.util.Util,\
43-
--initialize-at-run-time=com.mysql.cj.exceptions.CJException,\
44-
--initialize-at-run-time=com.mysql.cj.exceptions.WrongArgumentException
41+
--initialize-at-run-time=graphql.util.IdGenerator
4542
quarkus.s3.devservices.enabled=false
4643
flexmodel.datasource.dev_test.db-kind=sqlite
4744
flexmodel.datasource.dev_test.url=jdbc:sqlite:file:database/sqlite_dev_test.db

0 commit comments

Comments
 (0)