package com.whyc.Listeners;
|
|
import com.whyc.dto.ServiceModel;
|
import com.whyc.factory.FaceEngineFactory;
|
import com.whyc.mapper.LicenseMapper;
|
import com.whyc.mapper.PageParamUserMapper;
|
import com.whyc.service.LicenseService;
|
import com.whyc.util.ActionUtil;
|
import com.whyc.util.HttpUtil;
|
import com.whyc.util.PropertiesUtil;
|
|
import javax.annotation.Resource;
|
import javax.servlet.ServletContext;
|
import javax.servlet.ServletContextEvent;
|
import javax.servlet.ServletContextListener;
|
import javax.servlet.annotation.WebListener;
|
import java.io.FileInputStream;
|
import java.io.InputStreamReader;
|
import java.nio.charset.StandardCharsets;
|
import java.util.Properties;
|
|
/**
|
* 应用启动时初始化
|
* 应用关闭时销毁
|
*/
|
@WebListener
|
public class ApplicationListener implements ServletContextListener {
|
@Resource
|
private PageParamUserMapper pageParamUserMapper;
|
/*PowerACDCDataServer powerACDCDataServer = new PowerACDCDataServer();
|
PowerAlarmServer powerAlarmServer = new PowerAlarmServer();
|
PowerInsulateServer powerInsulateServer = new PowerInsulateServer();
|
PowerChargerServer powerChargerServer = new PowerChargerServer();*/
|
|
Thread thread_calculateTimeInUse = new Thread(new CalculateTimeInUse(),"Thread_calculateTimeInUse");
|
|
|
@Override
|
public void contextInitialized(ServletContextEvent servletContextEvent) {
|
//license凭证使用时长计时
|
thread_calculateTimeInUse.start();
|
|
//载入config.properties文件数据流
|
PropertiesUtil.props = new Properties();
|
try {
|
String path = (getClass().getClassLoader().getResource("").toURI()).getPath();
|
//FileInputStream fis = new FileInputStream(path + "config.properties");
|
FileInputStream fis = new FileInputStream(path + "config.properties");
|
PropertiesUtil.props.load(new InputStreamReader(fis, StandardCharsets.UTF_8));
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
//应用启动时,检查是否存在表,不存在则新建--聚合平台,弃用
|
/*boolean exist = DAOHelper.exist("web_site", "tb_weather_city");
|
if(!exist){
|
boolean createStatus = false;
|
while (!createStatus){
|
createStatus = new WeatherCityDao().createTable();
|
}
|
}
|
//刷新 天气城市的数据--聚合平台,弃用
|
new WeatherCityService().insertBatch();*/
|
//视频token获取存入
|
String resultJson = HttpUtil.doPost(HttpUtil.VIDEO_URL, HttpUtil.VIDEO_REQUEST_BODY);
|
ServiceModel model = ActionUtil.getGson().fromJson(resultJson, ServiceModel.class);
|
ServletContext application = servletContextEvent.getServletContext();
|
application.setAttribute("videoToken",model);
|
|
//版本迭代需要打补丁,PageParamUser追加字段type,扩展表的使用范围,原来表记录的type字段统一追加为1
|
pageParamUserMapper.setOldRecord();
|
|
}
|
|
@Override
|
public void contextDestroyed(ServletContextEvent servletContextEvent) {
|
int i = FaceEngineFactory.getInstance().unInit();
|
System.out.println("faceEngine引擎卸载");
|
thread_calculateTimeInUse.interrupt();
|
System.out.println("计算时长线程终止");
|
/*try {
|
powerACDCDataServer.stop();
|
powerAlarmServer.stop();
|
powerInsulateServer.stop();
|
powerChargerServer.stop();
|
} catch (IOException | InterruptedException e) {
|
e.printStackTrace();
|
}*/
|
|
}
|
|
class CalculateTimeInUse implements Runnable{
|
@Resource
|
private LicenseMapper licenseMapper;
|
@Resource
|
private LicenseService licenseService;
|
@Override
|
public void run() {
|
boolean exist = licenseMapper.selectExist()>0;
|
if(!exist){
|
licenseMapper.createTable();
|
}else{
|
boolean existColumn = licenseMapper.existColumn()>0;
|
if(!existColumn){
|
//这里
|
licenseMapper.reCreateTable();
|
}
|
}
|
while (true){
|
//更新单位为60s
|
boolean flag = licenseService.updateTimeInUse();
|
/*if (!flag){
|
throw new LicenseTimeInUseUpdateException();
|
}*/
|
try {
|
Thread.sleep(60000);
|
} catch (InterruptedException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
}
|