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

Oracle数据库升级后,如何修改persistence.xml配置TCPS连接?

解决Oracle TCPS安全连接的Java应用配置修改

一、修改persistence.xml的核心配置

1. 更新JDBC URL

将原TCP协议的URL修改为TCPS格式,两种常用写法可选:

  • 直连格式(推荐,无需依赖tnsnames.ora):
    替换原有URL为TCPS协议的连接串,注意端口需与数据库TCPS监听端口一致(通常不是原1521,需确认新库配置,比如常见的1522):
    <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=testdb01)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=test_app)))"/>
    
  • 基于tnsnames.ora的格式:
    若复用SQL Developer的tns配置,需指定TNS别名并配置tns文件路径:
    <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@test_app_tcps"/>
    <property name="oracle.net.tns_admin" value="/path/to/tnsnames.ora所在目录"/>
    
    其中test_app_tcps是tnsnames.ora中定义的TCPS连接别名。

2. 添加SSL验证属性

TCPS为加密连接,需配置信任库验证数据库证书,在persistence.xml的properties节点下添加:

<!-- 信任库路径及密码 -->
<property name="javax.net.ssl.trustStore" value="/path/to/your/truststore.jks"/>
<property name="javax.net.ssl.trustStorePassword" value="信任库密码"/>
<!-- 双向认证场景需额外配置密钥库(单向认证无需此部分) -->
<!-- <property name="javax.net.ssl.keyStore" value="/path/to/your/keystore.jks"/> -->
<!-- <property name="javax.net.ssl.keyStorePassword" value="密钥库密码"/> -->

二、额外应用端配置要求

  • 驱动版本:确保使用的Oracle JDBC驱动(ojdbc.jar)与数据库版本兼容,推荐12c及以上版本,对TCPS支持更完善。
  • 信任库准备:
    1. 从数据库服务器获取CA证书(通常为.cer格式)。
    2. 使用Java keytool命令将证书导入信任库:
      keytool -importcert -file /path/to/db_ca.cer -keystore /path/to/truststore.jks -alias oracle_ca
      
    3. 确保应用可访问该信任库文件,路径配置准确。
  • 测试环境临时配置(生产禁用):
    若测试环境证书主机名与数据库主机不匹配,可临时添加属性跳过验证:
    <property name="oracle.net.ssl_server_dn_match" value="false"/>
    

修改后的完整persistence.xml示例(直连+单向认证)

<properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=testdb01)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=test_app)))"/>
      <property name="javax.persistence.jdbc.user" value="testuser"/>
      <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
      <property name="javax.persistence.jdbc.password" value="password01"/>
      <property name="javax.persistence.schema-generation.database.action" value="create"/>
      <!-- SSL信任库配置 -->
      <property name="javax.net.ssl.trustStore" value="/opt/app/truststore.jks"/>
      <property name="javax.net.ssl.trustStorePassword" value="changeit"/>
</properties>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:42:45