开发者社区> 问答> 正文

JFinal配置Druid的防注入功能启动报错

public void configPlugin(Plugins me) {
    DruidPlugin druidPlugin = new DruidPlugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password"),
"oracle.jdbc.driver.OracleDriver","wall");
    me.add(druidPlugin);
    // 配置ActiveRecord插件
    ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
    me.add(arp);
    arp.setDialect(new OracleDialect());
    arp.addMapping("blog","ID", Blog.class);    // 映射blog 表到 Blog模型
    arp.addMapping("TBL_CODE_AREA","AREA_UUID", NumberAreaInfo.class);
    arp.addMapping("TBL_CODE_AREA_MOBILE","ID", MobileTitle.class);
}

代码是这样的。

报错如下:
screenshot

展开
收起
小旋风柴进 2016-06-08 13:14:33 3343 0
1 条回答
写回答
取消 提交回答
  • 这个是Druid的一个 bug 导致的,解决办法是不要使用别名来应用过滤器,转而直接使用过滤器,具体见如下代码:

    // DruidPlugin
    DruidPlugin dp = new DruidPlugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password"));
    dp.addFilter(new StatFilter());
    WallFilter wall = new WallFilter();
    wall.setDbType("mysql");
    dp.addFilter(wall);
    me.add(dp);
     
    // ActiveRecordPlugin
    ActiveRecordPlugin arp = new ActiveRecordPlugin(dp);

    Druid 的bug 导致在使用别名过滤器时无法识别数据库类型,所以需要wall.setDbType("mysql");

    2019-07-17 19:31:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第16讲】:Spring Boot 2.0 实战Apache Kafka百万级高并发消息中间件与原理解析 立即下载
Java Spring Boot开发实战系列课程【第7讲】:Spring Boot 2.0安全机制与MVC身份验证实战(Java面试题) 立即下载
Java Spring Boot开发实战系列课程【第15讲】:Spring Boot 2.0 API与Spring REST Docs实战 立即下载