2017-05-06 174 views
1

我有一个要求,使用Mybatis作为持久性框架,加密Web服务器和数据库服务器之间的传输数据。如何使用MyBatis配置Oracle的数据库网络加密?

数据库服务器是Oracle 12c企业版版本12.1.0.2.0 - 64位。我正在使用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> 

最后两个属性元素是我在配置加密连接尝试。没有它们,我可以在没有加密的情况下成功连接。与最后两个属性元素,我只是得到一个错误:

Caused by: org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession. ### The error may exist in SQL Mapper Configuration ### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.datasource.DataSourceException: Unknown DataSource property: CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPES

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

回答

1

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

编辑:正如克里斯在此评论中所解释的,MyBatis要求驱动程序的属性名称前面加上“driver”。

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

我发现缺少的东西。我问了关于MyBatis用户组的问题,Jeff Butler告诉我必须在驱动程序前面添加驱动程序特定的属性。 ' '当我这样做时,有效。 @Jean,你如此接近正确的答案,如果你只是通过纠正来编辑你的答案,我会检查你的答案是正确的解决方案。此外,您需要在元素的末尾放置结束标记“/>”。 –

+0

会做。谢谢! –