我有一個要求,使用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
有沒有人知道如何解決這個問題?
我發現缺少的東西。我問了關於MyBatis用戶組的問題,Jeff Butler告訴我必須在驅動程序前面添加驅動程序特定的屬性。 ' '當我這樣做時,有效。 @Jean,你如此接近正確的答案,如果你只是通過糾正來編輯你的答案,我會檢查你的答案是正確的解決方案。此外,您需要在元素的末尾放置結束標記「/>」。 –
會做。謝謝! –