如何使用 MyBatis 配置 Oracle 的数据库网络加密?



我需要使用mybatis作为持久性框架加密Web服务器和数据库服务器之间的传输数据。

数据库服务器是Oracle 12C Enterprise Edition版本12.1.0.2.0-64bit。我正在使用ojdbc7.jar驱动程序。

我能够如下所述建立一个加密的连接... https://docs.oracle.com/database/121/dbseg/asojbdc.htm#dbseg9613。但是,我无法通过Mybatis这样做。我正在MyBatis-config.xml文件中设置连接属性。以下是该文件的内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC '-//mybatis.org//DTD Config 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-config.dtd'>
<configuration>
<settings>
    <setting name="lazyLoadingEnabled" value="false" />
    <setting name="jdbcTypeForNull" value="NULL"/>
</settings>
<environments default="development">     
    <environment id="development">
        <transactionManager type="JDBC" />
        <dataSource type="POOLED">
            <property name="driver" value="oracle.jdbc.OracleDriver"/>
            <property name="url" value="jdbc:oracle:thin:@//<server>:<port>/<service>"/>
            <property name="username" value="<username>"/>
            <property name="password" value="<password>"/>
            <property name="poolMaximumActiveConnections" value="20"/>
            <property name="poolMaximumIdleConnections" value="10"/>
            <property name="poolMaximumCheckoutTime" value="180000"/>
            <property name="poolPingQuery" value="select 0 from dual"/>
            <property name="poolPingEnabled" value="true"/>
            <property name="poolPingConnectionsNotUsedFor" value="1800000"/>
            <property name="CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVEL" value="REQUIRED"/>
            <property name="CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPES" value="AES256"/>
        </dataSource>
    </environment>
</environments>
</configuration>

最后两个属性元素是我尝试配置加密连接的尝试。没有它们,我就能成功连接而无需加密。在最后两个属性元素中,我只会遇到一个错误:

由:org.apache.ibatis.exceptions.persistenceException:### 错误构建SQLSession。### SQL Mapper中可能存在错误 配置###原因:org.apache.ibatis.builder.builderexception: 错误解析SQL映射器配置。原因: org.apache.ibatis.datasource.datasourceexception:未知数据 属性:connection_property_thin_net_cencryption_types

有人知道如何解决这个问题吗?

JDBC属性的名称不太正确。请注意,可以在oracle.jdbc.oracleconnection下的Javadoc中找到它们。您可以尝试这些:

编辑:正如克里斯在此评论中解释的那样

<property name="driver.oracle.net.encryption_client" value="REQUIRED"/>
<property name="driver.oracle.net.encryption_types_client" value="(AES256)"/>

最新更新