package com.dsideal; import Plugin.LogBackLogFactory; import com.alibaba.druid.filter.logging.Slf4jLogFilter; import com.alibaba.druid.filter.stat.StatFilter; import com.alibaba.druid.wall.WallFilter; import com.jfinal.config.*; import com.jfinal.kit.PropKit; import com.jfinal.log.Log; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.druid.DruidPlugin; import com.jfinal.server.undertow.UndertowServer; import com.jfinal.template.Engine; import com.dsideal.Const.OsSystemConst; import com.dsideal.sso.server.controller.AppLoginController; import com.dsideal.sso.server.controller.CommomController; import com.dsideal.sso.server.controller.ThirdLoginController; import com.dsideal.sso.server.controller.WebLoginController; import com.dsideal.sso.server.core.util.CommonUtil; import com.dsideal.sso.server.core.util.JedisUtil; import java.io.File; public class Start extends JFinalConfig { private static Log log = Log.getLog(Start.class); public static void main(String[] args) { UndertowServer.create(Start.class, "undertow.properties").start(); } //在jfinal启动完成后马上执行 public void onStart() { //打印 启动Logo String path = Start.class.getClassLoader().getResource("dsideal.txt").getPath(); File file = new File(path); System.out.println(CommonUtil.txt2String(file)); } /** * 配置常量 */ public void configConstant(Constants me) { //配置日志框架logback me.setLogFactory(new LogBackLogFactory()); PropKit.use("application.properties"); } /** * 配置路由 */ public void configRoute(Routes me) { me.add("/", WebLoginController.class); me.add("/app", AppLoginController.class); me.add("/third", ThirdLoginController.class); me.add("/common", CommomController.class); } public void configEngine(Engine me) { } /** * 配置插件 */ public void configPlugin(Plugins me) { DruidPlugin druid = new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim(), PropKit.get("driverClassName")); // 1.统计信息插件 StatFilter statFilter = new StatFilter(); statFilter.setMergeSql(true); statFilter.setLogSlowSql(true); // 2、慢查询目前设置为1s,随着优化一步步进行慢慢更改 statFilter.setSlowSqlMillis(1000); druid.addFilter(statFilter); // 3、防注入插件 WallFilter wall = new WallFilter(); wall.setDbType("mysql"); druid.addFilter(wall); //数据源配置 druid.setInitialSize(20); druid.setMinIdle(10); druid.setMaxActive(50); druid.setMaxWait(600000); druid.setTimeBetweenEvictionRunsMillis(60000); druid.setMinEvictableIdleTimeMillis(300000); druid.setValidationQuery("SELECT 'x'"); druid.setTestWhileIdle(false); druid.setTestOnBorrow(false); druid.setTestOnReturn(false); druid.setMaxPoolPreparedStatementPerConnectionSize(20); //增加回收机制 druid.setRemoveAbandonedTimeoutMillis(300); druid.setLogAbandoned(false); me.add(druid); // 配置ActiveRecord插件 ActiveRecordPlugin arp = new ActiveRecordPlugin(druid); File sqlDir; if (CommonUtil.getOsSystemType() == OsSystemConst.WINDOWS) { sqlDir = new File(PropKit.get("WindowsSqlPath")); log.info("========================Windows===================="); } else { sqlDir = new File(PropKit.get("CentosSqlPath")); log.info("========================Centos====================="); } File[] sqlFiles = sqlDir.listFiles(); for (int i = 0; i < sqlFiles.length; i++) { //只加载.sql文件 if (sqlFiles[i].getName().indexOf(".sql") > 0) { arp.addSqlTemplate("/Sql/" + sqlFiles[i].getName()); } } //加载 me.add(arp); JedisUtil.init(PropKit.get("redis.ip") + ":" + PropKit.get("redis.port")); } /** * 配置全局拦截器 */ public void configInterceptor(Interceptors me) { } /** * 配置处理器 */ public void configHandler(Handlers me) { } }