MyBatis中关于SSL/TLS配置

前提服务端已经配置好TLS,客户端拥有访问证书、证书密码等基本数据

问题原因:

 mybatis-config.xml 配置文件中不支持TLS初始值设定

<?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>
	   <environments default="sample_id">
	        <environment id="sample_id">
	            <transactionManager type="JDBC" />
	            <dataSource type="POOLED">
	                <property name="driver" value="${driver}" />
	                <property name="url" value="${url}" />
	                <property name="username" value="${username}" />
	                <property name="password" value="${password}" />
	                <property name="javax.net.ssl.trustStore" value="${trustStore}" />
			        <property name="javax.net.ssl.trustStoreType" value="${trustStoreType}" />
			        <property name="javax.net.ssl.trustStorePassword" value="${trustStorePassword}" />
	            </dataSource>
	        </environment>
	    </environments>
</configuration>

运行程序后,会出现如下错误

Exception in thread "main" 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: javax.net.ssl.trustStorePassword

解决办法:

去除mybatis-config.xml中的environments分支,通过代码自行配置

<?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>

</configuration>

java代码示例,根据实际情况更改

// Driver 
String driver = "oracle.jdbc.driver.OracleDriver";
// jdbc连接url
String url = "jdbc:oracle:thin:@tcps://[ip]:[port]/[sid]?ssl_server_dn_match=off";
// DB 连接参数
Properties props = new Properties();
props.setProperty("user", "DB用户");
props.setProperty("password", "DB密码");
props.setProperty("javax.net.ssl.trustStore", "证书路径");
props.setProperty("javax.net.ssl.trustStoreType","证书类型");
props.setProperty("javax.net.ssl.trustStorePassword", "创建证书的密钥");
// MyBatis PooledDataSource作成
PooledDataSource pooledDataSource = new PooledDataSource(driver, url, props);

// MyBatis Environment作成(参考原来的mybatis-config.xml 里的分支配置)
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("sample_id", transactionFactory, pooledDataSource);
// mybatis-config.xml中的environments部分删除,SqlSessionManager作成
SqlSessionManager sessionManager = SqlSessionManager.newInstance(in);

// Environment的SqlSessionManager配置
Configuration configuration = sessionManager.getConfiguration();
configuration.setEnvironment(environment);
SqlSession sqlSession = sessionManager.openSession(false);

// DB连接生成
Connection conn = sqlSession.getConnection();

System.out.println(conn.isClosed());
conn.close();

运行结果控制台输出false,连接成功;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值