zoukankan      html  css  js  c++  java
  • tomcat配置文件context加密

    近日客户要求对tomcat配置文件context的数据库用户名和密码加密。

    解密程序已写好,只需在取得用户名密码的时候调用解密程序即可。

    context配置如下:
    <Context path="/web" docBase="E:\izumi_workspace\izumi\WebContent"  reloadable="false">
      <Resource
       name="jdbc/izumidb1"
       type="javax.sql.DataSource"
       factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
        password="67461e40361806c4"
        driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
        maxIdle="10"
        maxWait="5000"
        username="67461e40361806c4"
        removeAbandoned="true"
        removeAbandonedTimeout="60"
       validationQuery="select count(*) from izumi_user" 
        logAbandoned="true"
        url="jdbc:microsoft:sqlserver://XX.XXX.XX.XXX:1433;DataBaseName=test2"
        maxActive="30"/>

      </Context> 

    为何要修改tomcat代码? 

     程序中使用这种方式取得Resource中定义的数据库

    Context ctx = (Context) new InitialContext().lookup("java:comp/env"); 

    DataSource ds = (DataSource) ctx.lookup("jdbc/izumidb1"); 

    因为javax.sql.DataSource是一个接口,是tomcat实现了这个接口,所以解密过程需要修改tomcat的代码。

    修改哪里? 

    修改org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory的createDataSource()方法即可。

    在apache.org找到 BasicDataSourceFactory的源码(最好是你当前使用的tomcat的版本的源码)

    自建 org.apache.tomcat.dbcp.dbcp包,把BasicDataSourceFactory源码扔到包里,如果源码有import到其他类,把其他类也扔到包里,做解密修改。

    修改完后放哪里? 

     在tomcat/common/lib中有关于dbcp的包,不同版本的tomcat可能包名不同。找到org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory所在的包,将编译好的我们的BasicDataSourceFactory类的.class文件放到包里,覆盖原来的BasicDataSourceFactory.class。

    大功告成。 

  • 相关阅读:
    Vue组件别名及Ctrl跳转组件问题
    Scrapy Item Loaders
    scrapy Selector
    NSSM 注册windows服务
    windows 删除注册的服务
    RedisDesktopManager软件窗口不显示
    hexo + Matery主题 + Nginx + 阿里云 搭建个人博客网站
    sublime text3 安装插件
    关于 Windows 10 时间更新
    动画 | 什么是堆排序?
  • 原文地址:https://www.cnblogs.com/mabaishui/p/2106469.html
Copyright © 2011-2022 走看看