2017-05-06 170 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

會做。謝謝! –