package com.beagledata.gaea.workbench.config.listener;
import com.beagledata.gaea.common.LogManager;
import com.beagledata.gaea.workbench.entity.Account;
import com.beagledata.gaea.workbench.service.AccountService;
import com.beagledata.gaea.workbench.service.AiModelService;
import com.beagledata.gaea.workbench.service.MicroService;
import com.beagledata.utils.StringUtil;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import java.io.File;
import java.io.IOException;
/**
-
Created by liulu on 2017/12/18.
*/
@WebListener
public class InitListener implements ServletContextListener {
private static Logger logger = LogManager.getLogger(InitListener.class);@Autowired
private AccountService accountService;
@Autowired
private AiModelService aiModelService;
@Autowired
private MicroService microService;
@Value(" s e r v e r . c o n t e x t − p a t h " ) p r i v a t e S t r i n g s e r v e r C o n t e x t P a t h ; @ V a l u e ( " {server.context-path}") private String serverContextPath; @Value(" server.context−path")privateStringserverContextPath;@Value("{server.port}")
private int serverPort;
@Value(" s e r v e r . i p " ) p r i v a t e S t r i n g s e r v e r I p ; @ V a l u e ( " {server.ip}") private String serverIp; @Value(" server.ip")privateStringserverIp;@Value("{spring.resources.static-locations}")
private String staticLocations;public void contextInitialized(ServletContextEvent servletContextEvent) {
ServletContext sc = servletContextEvent.getServletContext();
sc.setAttribute(“ctx”, sc.getContextPath());logger.info("初始化超级管理员账号..."); Account superAdminAccount = accountService.initSuperAdmin(); logger.info("超级管理员初始化完成,登录用户名: " + superAdminAccount.getUsername()); logger.info("初始化AI模型方法..."); aiModelService.initModelAction(); logger.info("初始化AI模型方法成功"); logger.info("初始化微服务..."); microService.initMicros(); logger.info("初始化微服务成功"); if (StringUtil.isNotBlank(staticLocations)) { initProd(); }
}
public void contextDestroyed(ServletContextEvent servletContextEvent) {
}
private void initProd() {
logger.info(“初始化前端页面…”);
File indexFile = new File(staticLocations.substring(staticLocations.indexOf(’:’) + 1), “index.html”);
if (!indexFile.exists()) {
logger.error(“初始化前端页面失败:前端页面找不到”);
return;
}
try {
String content = FileUtils.readFileToString(indexFile);
content = content.replaceAll(
“window.apiUrl = ‘http://.*’”,
String.format(“window.apiUrl = ‘http://%s:%s%s’”, serverIp, serverPort, serverContextPath)
);
FileUtils.writeStringToFile(indexFile, content);
} catch (IOException e) {
logger.error(“初始化前端页面失败:” + e.getLocalizedMessage(), e);
}
logger.info(“初始化前端页面成功…”);
logger.info(
String.format(
“请打开浏览器访问链接:http://%s:%s%s/workbench/index.html”,
serverIp,
serverPort,
serverContextPath
)
);
}
}