You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Tomcat中配置的JDBC连接迁移至Jetty容器?

嘿,我来帮你把这个Tomcat+JAX-RS+Oracle加密数据源的配置内容整理得清晰明了,结合你的场景梳理关键要点:

核心场景回顾

你之前在项目中用Tomcat作为容器托管JAX-RS REST API,通过JDBC连接Oracle数据库,为了避免明文存储数据库密码,还自定义了加密数据源工厂,相关配置放在META-INF/context.xml文件中。

关键配置代码片段

你的context.xml数据源配置如下:

<Resource 
    name="jdbc/myconnmapping" 
    factory="my.package.EncryptedDataSourceFactory" 
    auth="Container" 
    type="javax.sql.DataSource" 
    driverClassName="oracle.jdbc.OracleDriver" 
    url="jdbc:oracle:thin:@//my.oracle.server:1555/jobctlss1" 
    username="TOM" 
    password="NQp5gwJdXs5KIts4OqiFN1qI/HhhRs9/eeO2lwVV..."
/>
配置核心要点说明
  • 自定义加密数据源工厂:factory指定的my.package.EncryptedDataSourceFactory是整个配置的核心,它负责在Tomcat初始化数据源时,解密password字段里的加密字符串,还原成真实的数据库密码,解决明文密码的安全隐患。
  • 容器级认证管理:auth="Container"表示由Tomcat容器全权负责数据源的认证逻辑,你的JAX-RS应用不需要手动处理用户名密码的校验,直接通过容器获取可用的数据源即可。
  • Oracle JDBC驱动指定:driverClassName明确了Oracle官方的JDBC驱动类,确保Tomcat能正确加载驱动,建立和Oracle数据库的连接。
  • 加密密码存储:password字段是加密后的密文,只有你的自定义工厂类能解析解密,这也是你这套配置的安全核心。
JAX-RS中使用该数据源的常规方式

在JAX-RS的资源类中,你可以通过JNDI注入的方式获取这个加密数据源,示例代码如下:

import javax.annotation.Resource;
import javax.sql.DataSource;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import java.sql.Connection;
import java.sql.SQLException;

@Path("/data")
public class DataResource {

    @Resource(name = "jdbc/myconnmapping")
    private DataSource dataSource;

    @GET
    @Path("/test")
    public String testDbConnection() {
        try (Connection conn = dataSource.getConnection()) {
            return "Oracle数据库连接成功!";
        } catch (SQLException e) {
            return "连接失败:" + e.getMessage();
        }
    }
}

内容的提问来源于stack exchange,提问作者aiman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:56:14