【问题标题】:How to configure Oracle's Database Network Encryption with MyBatis?如何使用 MyBatis 配置 Oracle 的数据库网络加密?
【发布时间】:2017-10-04 13:35:41
【问题描述】:

我有一个需求,使用 Mybatis 作为持久化框架,对 Web 服务器和数据库服务器之间传输的数据进行加密。

数据库服务器为 Oracle 12c Enterprise Edition Release 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_ENCRYPTION_TYPES

有人知道怎么解决吗?

【问题讨论】:

    标签: oracle encryption jdbc connection mybatis


    【解决方案1】:

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

    编辑:正如克里斯在此 cmets 中解释的那样,MyBatis 要求驱动程序的属性名称以“驱动程序”为前缀。

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

    【讨论】:

    • 我找到了丢失的东西。我在 MyBatis 用户组上问了这个问题,Jeff Butler 告诉我你必须在驱动程序特定的属性前面加上“驱动程序”。 ` ` 当我这样做时,它工作。 @Jean,您非常接近正确答案,如果您只是通过更正来编辑您的答案,我会检查您的答案是否正确。此外,您需要在元素的末尾添加结束标记“/>”。
    • 会的。谢谢!
    猜你喜欢
    • 2014-08-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多