diff --git a/pom.xml b/pom.xml index 2ecfad30..9899d275 100644 --- a/pom.xml +++ b/pom.xml @@ -207,6 +207,12 @@ 2.1.3 + + com.google.guava + guava + 20.0 + + com.alibaba.fastjson2 diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java index d52f4f6a..d983d410 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java @@ -3,6 +3,7 @@ package com.genersoft.iot.vmp.gb28181.transmit.event.request; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; import com.genersoft.iot.vmp.gb28181.transmit.SIPSender; import com.genersoft.iot.vmp.gb28181.utils.SipUtils; +import com.google.common.primitives.Bytes; import gov.nist.javax.sip.message.SIPRequest; import gov.nist.javax.sip.message.SIPResponse; import org.apache.commons.lang3.ArrayUtils; @@ -196,15 +197,14 @@ public abstract class SIPRequestProcessorParent { result.add(rawContent[i]); } } - Byte[] bytes = new Byte[0]; - byte[] bytesResult = ArrayUtils.toPrimitive(result.toArray(bytes)); + byte[] bytesResult = Bytes.toArray(result); Document xml; try { xml = reader.read(new ByteArrayInputStream(bytesResult)); }catch (DocumentException e) { - logger.warn("[xml解析异常]: 愿文如下: \r\n{}", new String(bytesResult)); - logger.warn("[xml解析异常]: 愿文如下: 尝试兼容性处理"); + logger.warn("[xml解析异常]: 原文如下: \r\n{}", new String(bytesResult)); + logger.warn("[xml解析异常]: 原文如下: 尝试兼容性处理"); String[] xmlLineArray = new String(bytesResult).split("\\r?\\n"); // 兼容海康的address字段带有<破换xml结构导致无法解析xml的问题 diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java index b67fcc5b..f3b4fc90 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java @@ -233,19 +233,17 @@ public class PlatformServiceImpl implements IPlatformService { try { commanderForPlatform.keepalive(parentPlatform, eventResult -> { // 心跳失败 - if (eventResult.type == SipSubscribe.EventResultType.timeout) { - // 心跳超时 - ParentPlatformCatch platformCatch = redisCatchStorage.queryPlatformCatchInfo(parentPlatform.getServerGBId()); - // 此时是第三次心跳超时, 平台离线 - if (platformCatch.getKeepAliveReply() == 2) { - // 设置平台离线,并重新注册 - logger.info("[国标级联] 三次心跳超时, 平台{}({})离线", parentPlatform.getName(), parentPlatform.getServerGBId()); - offline(parentPlatform, false); - } - - }else { + if (eventResult.type != SipSubscribe.EventResultType.timeout) { logger.warn("[国标级联]发送心跳收到错误,code: {}, msg: {}", eventResult.statusCode, eventResult.msg); } + // 心跳失败 + ParentPlatformCatch platformCatch = redisCatchStorage.queryPlatformCatchInfo(parentPlatform.getServerGBId()); + // 此时是第三次心跳超时, 平台离线 + if (platformCatch.getKeepAliveReply() == 2) { + // 设置平台离线,并重新注册 + logger.info("[国标级联] 三次心跳超时, 平台{}({})离线", parentPlatform.getName(), parentPlatform.getServerGBId()); + offline(parentPlatform, false); + } }, eventResult -> { // 心跳成功