From 724b288232e1614de1b789d0910fe3e3db765e52 Mon Sep 17 00:00:00 2001 From: 648540858 <18010473990@163.com> Date: 星期三, 04 八月 2021 18:00:22 +0800 Subject: [PATCH] 优化内存溢出的问题 优化zlm集群默认zlm的存储 添加报警的存储以及相关接口 添加单元测试 --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java | 71 +++++++++++++++++++++++------------ 1 files changed, 46 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java index 9d282c6..bd7bfd5 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java @@ -4,17 +4,12 @@ import java.text.ParseException; import java.util.*; +import javax.sip.*; import javax.sip.address.SipURI; import javax.sip.header.FromHeader; import javax.sip.header.HeaderAddress; import javax.sip.header.ToHeader; -import javax.sip.InvalidArgumentException; -import javax.sip.ListeningPoint; -import javax.sip.ObjectInUseException; -import javax.sip.RequestEvent; -import javax.sip.SipException; -import javax.sip.SipProvider; import javax.sip.message.Request; import javax.sip.message.Response; @@ -35,6 +30,7 @@ import com.genersoft.iot.vmp.gb28181.utils.DateUtil; import com.genersoft.iot.vmp.gb28181.utils.NumericUtil; import com.genersoft.iot.vmp.gb28181.utils.XmlUtil; +import com.genersoft.iot.vmp.service.IDeviceAlarmService; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; import com.genersoft.iot.vmp.utils.GpsUtil; @@ -83,6 +79,8 @@ private DeferredResultHolder deferredResultHolder; private DeviceOffLineDetector offLineDetector; + + private IDeviceAlarmService deviceAlarmService; private final static String CACHE_RECORDINFO_KEY = "CACHE_RECORDINFO_"; @@ -282,7 +280,7 @@ //String result = XmlUtil.getText(rootElement, "Result"); // 鍥炲200 OK responseAck(evt); - if (rootElement.getName().equals("Response")) {//} !XmlUtil.isEmpty(result)) { + if (rootElement.getName().equals("Response")) {//} !StringUtils.isEmpty(result)) { // 姝ゅ鏄鏈钩鍙板彂鍑篋eviceControl鎸囦护鐨勫簲绛� JSONObject json = new JSONObject(); XmlUtil.node2Json(rootElement, json); @@ -299,7 +297,7 @@ String platformId = ((SipURI) ((HeaderAddress) evt.getRequest().getHeader(FromHeader.NAME)).getAddress().getURI()).getUser(); String targetGBId = ((SipURI) ((HeaderAddress) evt.getRequest().getHeader(ToHeader.NAME)).getAddress().getURI()).getUser(); // 杩滅▼鍚姩鍔熻兘 - if (!XmlUtil.isEmpty(XmlUtil.getText(rootElement, "TeleBoot"))) { + if (!StringUtils.isEmpty(XmlUtil.getText(rootElement, "TeleBoot"))) { if (deviceId.equals(targetGBId)) { // 杩滅▼鍚姩鏈钩鍙帮細闇�瑕佸湪閲嶆柊鍚姩绋嬪簭鍚庡厛瀵筍ipStack瑙g粦 logger.info("鎵ц杩滅▼鍚姩鏈钩鍙板懡浠�"); @@ -337,7 +335,7 @@ } } // 浜戝彴/鍓嶇鎺у埗鍛戒护 - if (!XmlUtil.isEmpty(XmlUtil.getText(rootElement,"PTZCmd")) && !deviceId.equals(targetGBId)) { + if (!StringUtils.isEmpty(XmlUtil.getText(rootElement,"PTZCmd")) && !deviceId.equals(targetGBId)) { String cmdString = XmlUtil.getText(rootElement,"PTZCmd"); Device device = storager.queryVideoDeviceByPlatformIdAndChannelId(platformId, deviceId); cmder.fronEndCmd(device, deviceId, cmdString); @@ -421,7 +419,7 @@ String deviceId = XmlUtil.getText(rootElement, "DeviceID"); // 鍥炲200 OK responseAck(evt); - if (rootElement.getName().equals("Response")) {// !XmlUtil.isEmpty(result)) { + if (rootElement.getName().equals("Response")) {// !StringUtils.isEmpty(result)) { // 姝ゅ鏄鏈钩鍙板彂鍑篋eviceControl鎸囦护鐨勫簲绛� JSONObject json = new JSONObject(); XmlUtil.node2Json(rootElement, json); @@ -718,7 +716,7 @@ deviceAlarm.setLatitude(0.00); } - if (!XmlUtil.isEmpty(deviceAlarm.getAlarmMethod())) { + if (!StringUtils.isEmpty(deviceAlarm.getAlarmMethod())) { if ( deviceAlarm.getAlarmMethod().equals("4")) { MobilePosition mobilePosition = new MobilePosition(); mobilePosition.setDeviceId(deviceAlarm.getDeviceId()); @@ -738,7 +736,9 @@ storager.insertMobilePosition(mobilePosition); } } - // TODO: 闇�瑕佸疄鐜板瓨鍌ㄦ姤璀︿俊鎭�佹姤璀﹀垎绫� + System.out.println("瀛樺偍鎶ヨ淇℃伅銆佹姤璀﹀垎绫�"); + // 瀛樺偍鎶ヨ淇℃伅銆佹姤璀﹀垎绫� + deviceAlarmService.add(deviceAlarm); if (offLineDetector.isOnline(deviceId)) { publisher.deviceAlarmEventPublish(deviceAlarm); @@ -756,7 +756,6 @@ deferredResultHolder.invokeResult(msg); } } catch (DocumentException | SipException | InvalidArgumentException | ParseException e) { - // } catch (DocumentException e) { e.printStackTrace(); } } @@ -771,19 +770,33 @@ Element rootElement = getRootElement(evt); String deviceId = XmlUtil.getText(rootElement, "DeviceID"); Device device = storager.queryVideoDevice(deviceId); - // 妫�鏌ヨ澶囨槸鍚﹀瓨鍦ㄥ苟鍦ㄧ嚎锛� 涓嶅瓨鍦ㄥ垯涓嶅洖澶� - if (device != null && device.getOnline() == 1) { + + // 妫�鏌ヨ澶囨槸鍚﹀瓨鍦ㄥ苟鍦ㄧ嚎锛� 涓嶅湪绾垮垯璁剧疆涓哄湪绾� + if (device != null ) { // 鍥炲200 OK responseAck(evt); - if (offLineDetector.isOnline(deviceId)) { - publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE); - } else { - } - }else { - logger.warn("鏀跺埌[ "+deviceId+" ]蹇冭烦淇℃伅, 浣嗘槸璁惧" + (device == null? "涓嶅瓨鍦�":"绂荤嚎") + ", 鍥炲401"); - Response response = getMessageFactory().createResponse(Response.UNAUTHORIZED, evt.getRequest()); - getServerTransaction(evt).sendResponse(response); + publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE); + }else{ + logger.warn("鏀跺埌[ "+deviceId+" ]蹇冭烦淇℃伅, 浣嗘槸璁惧涓嶅瓨鍦�, 鍥炲404"); + Response response = getMessageFactory().createResponse(Response.NOT_FOUND, evt.getRequest()); + ServerTransaction serverTransaction = getServerTransaction(evt); + serverTransaction.sendResponse(response); + if (serverTransaction.getDialog() != null) serverTransaction.getDialog().delete(); } + +// if (device != null && device.getOnline() == 1) { +// +// if (offLineDetector.isOnline(deviceId)) { +// publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE); +// } else { +// } +// }else { +//// logger.warn("鏀跺埌[ "+deviceId+" ]蹇冭烦淇℃伅, 浣嗘槸璁惧" + (device == null? "涓嶅瓨鍦�":"绂荤嚎") + ", 鍥炲401"); +//// Response response = getMessageFactory().createResponse(Response.UNAUTHORIZED, evt.getRequest()); +//// getServerTransaction(evt).sendResponse(response); +// publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE); +// +// } } catch (ParseException | SipException | InvalidArgumentException | DocumentException e) { e.printStackTrace(); } @@ -976,7 +989,9 @@ */ private void responseAck(RequestEvent evt) throws SipException, InvalidArgumentException, ParseException { Response response = getMessageFactory().createResponse(Response.OK, evt.getRequest()); - getServerTransaction(evt).sendResponse(response); + ServerTransaction serverTransaction = getServerTransaction(evt); + serverTransaction.sendResponse(response); + if (serverTransaction.getDialog() != null) serverTransaction.getDialog().delete(); } /*** @@ -988,7 +1003,9 @@ */ private void response404Ack(RequestEvent evt) throws SipException, InvalidArgumentException, ParseException { Response response = getMessageFactory().createResponse(Response.NOT_FOUND, evt.getRequest()); - getServerTransaction(evt).sendResponse(response); + ServerTransaction serverTransaction = getServerTransaction(evt); + serverTransaction.sendResponse(response); + if (serverTransaction.getDialog() != null) serverTransaction.getDialog().delete(); } private Element getRootElement(RequestEvent evt) throws DocumentException { @@ -1038,4 +1055,8 @@ public void setCmderFroPlatform(SIPCommanderFroPlatform cmderFroPlatform) { this.cmderFroPlatform = cmderFroPlatform; } + + public void setDeviceAlarmService(IDeviceAlarmService deviceAlarmService) { + this.deviceAlarmService = deviceAlarmService; + } } -- Gitblit v1.8.0