You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

133 lines
4.4 KiB

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) {
}
}