From 4139936ca4a2a8585997a9e76186adb40611f64e Mon Sep 17 00:00:00 2001 From: 王彬 Date: Fri, 25 Jun 2021 19:21:20 +0800 Subject: [PATCH] optimize server --- src/main/java/com/taover/bazhuayun/analysis/web/module/heartbeat/HeartbeatManagerImpl.java | 3 ++- src/main/java/com/taover/bazhuayun/analysis/web/module/heartbeat/bean/ServerInstance.java | 13 ++----------- src/main/java/com/taover/bazhuayun/analysis/web/permission/HttpHeaderFilter.java | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/taover/bazhuayun/analysis/web/permission/HttpHeaderFilterConfig.java | 26 ++++++++++++++++++++++++++ 4 files changed, 78 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/taover/bazhuayun/analysis/web/permission/HttpHeaderFilter.java create mode 100644 src/main/java/com/taover/bazhuayun/analysis/web/permission/HttpHeaderFilterConfig.java diff --git a/src/main/java/com/taover/bazhuayun/analysis/web/module/heartbeat/HeartbeatManagerImpl.java b/src/main/java/com/taover/bazhuayun/analysis/web/module/heartbeat/HeartbeatManagerImpl.java index 5a43a41..09becc0 100644 --- a/src/main/java/com/taover/bazhuayun/analysis/web/module/heartbeat/HeartbeatManagerImpl.java +++ b/src/main/java/com/taover/bazhuayun/analysis/web/module/heartbeat/HeartbeatManagerImpl.java @@ -142,7 +142,7 @@ public class HeartbeatManagerImpl implements HeartbeatManager { private void createLog(ServerInstance item) { try { AnalysisHeartbeatLogEntity log = new AnalysisHeartbeatLogEntity(); - log.setServerUrl(item.getLatestUrlWithParam()); + log.setServerUrl(item.getInstance().getUrl()); log.setInstanceCode(item.getIdentity()); if(item.getLatestServerResponse() == null) { log.setResponse("null"); @@ -281,6 +281,7 @@ public class HeartbeatManagerImpl implements HeartbeatManager { } this.analysisHeartbeatInstanceRepository.updateEntityById(form.getSQLUpdateList(), instance.getId(), null); try { + instance = this.analysisHeartbeatInstanceRepository.findEntityByID(instance.getId(), null); if(AnalysisHeartbeatInstanceRepository.STATUS_DISABLE == instance.getStatus().intValue()) { this.unregistryRuntimeInstance(instance); }else { diff --git a/src/main/java/com/taover/bazhuayun/analysis/web/module/heartbeat/bean/ServerInstance.java b/src/main/java/com/taover/bazhuayun/analysis/web/module/heartbeat/bean/ServerInstance.java index c336de4..0dfcb3a 100644 --- a/src/main/java/com/taover/bazhuayun/analysis/web/module/heartbeat/bean/ServerInstance.java +++ b/src/main/java/com/taover/bazhuayun/analysis/web/module/heartbeat/bean/ServerInstance.java @@ -15,16 +15,12 @@ public class ServerInstance implements Instance { private int errorServerResponseCount = 0; private boolean detectNewErrorServerResponse; private boolean isSendNewHeartbeat; - private String latestUrlWithParam; public ServerInstance(AnalysisHeartbeatInstanceEntity instance) throws Exception { super(); if(!instance.getUrl().toLowerCase().startsWith("http")) { throw new Exception("目前只支持http协议的URL"); } - if(instance.getFixRateSec() < 60) { - throw new Exception("固定时间间隔不允许小于60s"); - } this.instance = instance; } @@ -43,10 +39,9 @@ public class ServerInstance implements Instance { try { this.latestRequestUnixtime = this.serverUnixtimeBaseline; this.isSendNewHeartbeat = true; - this.latestUrlWithParam = this.instance.getUrl() + this.getUrlParams(); - UtilLog.infoForMessage("向code["+this.getIdentity()+"],url["+this.latestUrlWithParam+"]发送心跳请求", ServerInstance.class); + UtilLog.infoForMessage("向code["+this.getIdentity()+"],url["+this.instance.getUrl()+"]发送心跳请求", ServerInstance.class); - this.latestServerResponse = ServerResponse.createByJSONString(UtilHttpByOkHttp.sendGet(this.latestUrlWithParam, null, this.instance.getMaxWaitSec())); + this.latestServerResponse = ServerResponse.createByJSONString(UtilHttpByOkHttp.sendGet(this.instance.getUrl(), null, this.instance.getMaxWaitSec())); if(this.latestServerResponse.isCodeOk()) { this.errorServerResponseCount = 0; } @@ -114,8 +109,4 @@ public class ServerInstance implements Instance { public boolean isSendNewHeartbeat() { return isSendNewHeartbeat; } - - public String getLatestUrlWithParam() { - return latestUrlWithParam; - } } diff --git a/src/main/java/com/taover/bazhuayun/analysis/web/permission/HttpHeaderFilter.java b/src/main/java/com/taover/bazhuayun/analysis/web/permission/HttpHeaderFilter.java new file mode 100644 index 0000000..5638708 --- /dev/null +++ b/src/main/java/com/taover/bazhuayun/analysis/web/permission/HttpHeaderFilter.java @@ -0,0 +1,48 @@ +package com.taover.bazhuayun.analysis.web.permission; + +import java.io.IOException; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.taover.util.UtilLog; + +public class HttpHeaderFilter implements Filter{ + @Override + public void init(FilterConfig filterConfig) throws ServletException { + UtilLog.infoForMessage("HttpHeaderFilter:init", this.getClass()); + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { + HttpServletResponse httpResponse = (HttpServletResponse) response; + HttpServletRequest httpRequest = (HttpServletRequest) request; + + httpResponse.setHeader("Access-Control-Allow-Origin", httpRequest.getHeader("Origin")); + httpResponse.setHeader("Access-Control-Allow-Credentials", "true"); + httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT, HEAD"); + httpResponse.setHeader("Access-Control-Allow-Headers", "Authorization,content-type"); + httpResponse.setHeader("Access-Control-Expose-Headers", ""); + httpResponse.setHeader("Access-Control-Max-Age", "1728000"); + httpResponse.setHeader("Vary", "Origin"); + httpResponse.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); + + //跨域prelight options请求直接返回 + if("options".equals(httpRequest.getMethod().toLowerCase())){ + return; + } + chain.doFilter(httpRequest, httpResponse); + } + + @Override + public void destroy() { + UtilLog.infoForMessage("HttpHeaderFilter:destory", this.getClass()); + } +} diff --git a/src/main/java/com/taover/bazhuayun/analysis/web/permission/HttpHeaderFilterConfig.java b/src/main/java/com/taover/bazhuayun/analysis/web/permission/HttpHeaderFilterConfig.java new file mode 100644 index 0000000..202c985 --- /dev/null +++ b/src/main/java/com/taover/bazhuayun/analysis/web/permission/HttpHeaderFilterConfig.java @@ -0,0 +1,26 @@ +package com.taover.bazhuayun.analysis.web.permission; + +import java.util.EnumSet; + +import javax.servlet.DispatcherType; +import javax.servlet.Filter; + +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class HttpHeaderFilterConfig { + public static final int ORDER_HTTP_HEADER_FILTER = 0; + + @Bean + public FilterRegistrationBean mySsTokenFilter() { + FilterRegistrationBean registration = new FilterRegistrationBean(); + registration.setFilter(new HttpHeaderFilter()); + registration.setEnabled(true); + registration.setDispatcherTypes(EnumSet.allOf(DispatcherType.class)); + registration.setOrder(ORDER_HTTP_HEADER_FILTER); + return registration; + } +} + -- libgit2 0.21.2