Tomcat jndi druid 配置及bug修复

使用Tomcat jndi安全连接数据库

需求概要

公司因被恶意攻击, 上级传达要求, 所有的敏感数据必须加密, 所有项目开发必须脱离数据库账号密码, 于是就有了变更数据库连接方式, 采用jndi.

运维负责在Tomcat conf下配置jdbc, 并提供一个数据源名称, 开发通过数据源名称连接数据库, 开发不沾手数据库账号密码, 保证安全由运维统一控制

代码修改

1. 原始代码(spring datasource原始配置)
  • 1.1 spring-datasource.xml

        
        
        
        

        
        
        
        

        
        
        
        
        
        
        
        
        
        
    
  • 1.2 config.properties
validationQuery=$[validationQuery]
jdbc_url=$[jdbc_url]
jdbc_username=$[jdbc_username]
jdbc_password=$[jdbc_password]
  • 1.3 vars.sit.properties
validationQuery=SELECT 1
jdbc_url=jdbc:mysql://172.16.41.156:3306/ocean?characterEncoding=utf-8
jdbc_username=ocean
jdbc_password=ocean
  • 1.4 pom.xml
...

            sit
            
                true
            
            
                
                    ./vars/vars.sit.properties
                
            
        
...
  • 1.5 maven打包命令
mvn clean package -Dmaven.skip.test=true -Psit
2. 修改后
  • 2.1 spring-datasource.xml
    
        
    
  • 2.2 config.properties
jndi.jndi-name=$[jndi.jndi-name]
  • 2.3 vars.sit.properties
jndi.jndi-name=jdbc/oceanBD
  • 2.4 pom.xml 同1.4不变
  • 2.5 Tomcat lib目录下 添加jar
druid-1.1.12.jar
mysql-connector-java-5.1.24.jar
log4j-1.2.17.jar
  • 2.6 修改Tomcat conf/context.xml
    标签下添加 标签
    如果图方便, jdbc/cboardBD 可以直接在2.1中写死

  • 2.7 maven打包 同1.5

BUG修复

bug概述
  1. 改完后在idea本地开发环境正常启动并访问,
    Tomcat jndi druid 配置及bug修复_第1张图片
  2. 测试环境正常启动且只能访问Tomcat manager项目(Tomcat 自带docs examples host-manager manager ROOT几个内置项目)
    开发的项目不能访问
    Tomcat jndi druid 配置及bug修复_第2张图片
bug排查
  1. 查看启动日志, 日志无任务报错, 且启动了wepapps下开发的项目和Tomcat自带的项目
  2. 查看本地和测试环境Tomcat版本, 本地8.0 , 测试8.5, 变更本地为8.5, 本地依旧启动成功
bug解决
  1. 方案一 删除无关项目
    删除webapps下的所有项目, 只保留开发的项目
  2. 方案二 修改Tomcat conf/server.xml文件
在\标签中添加子标签:

Tomcat jndi druid 配置及bug修复_第3张图片

bug解决补充

context.xml 里配置的jndi 改到 server.xml里, 并在context.xml 配置引用, 无法解决上述bug, 这个可以做全局DataSource与单个项目的DataSource的配置参考, 配置如下

  1. 将context.xml的 配置到server.xml的
    Tomcat jndi druid 配置及bug修复_第4张图片
  2. context.xml里配置
    Tomcat jndi druid 配置及bug修复_第5张图片
bug猜想

启动过程中, Tomcat自带项目覆盖了开发的项目

参考网址

https://www.cnblogs.com/zyxiaohuihui/p/9300282.html (私有数据源/全局配置)
https://www.cnblogs.com/xuange306/p/6398926.html (bug解决方法二操作)
https://blog.csdn.net/deniro_li/article/details/96716817(jndi druid连接参考)

你可能感兴趣的:(Tomcat,jdni)