From 5aee05631c7090a10ef995c178e50dbe5feab406 Mon Sep 17 00:00:00 2001 From: htjcAdmin Date: Mon, 10 Mar 2025 15:50:09 +0800 Subject: [PATCH] =?UTF-8?q?/*=E6=97=A5=E5=BF=97=E9=87=8C=E9=9D=A2=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0uuid=E8=BF=9B=E8=A1=8C=E4=B8=9A=E5=8A=A1=E4=B8=B2?= =?UTF-8?q?=E6=8E=A5=E3=80=82*/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inspect/tcpserver/tcp/BinaryModel.java | 1 + .../inspect/tcpserver/tcp/DownXml2Json.java | 11 +- .../com/inspect/tcpserver/tcp/MyDecoder.java | 5 +- .../inspect/tcpserver/tcp/NettyClient.java | 35 ++++- .../inspect/tcpserver/tcp/NettyServer.java | 125 +++++++++++------- .../tcpserver/tcp/NettyServerHandler.java | 7 +- .../com/inspect/tcpserver/tcp/UpJson2Xml.java | 3 +- 7 files changed, 123 insertions(+), 64 deletions(-) diff --git a/src/main/java/com/inspect/tcpserver/tcp/BinaryModel.java b/src/main/java/com/inspect/tcpserver/tcp/BinaryModel.java index 869d6b6..3eb4665 100644 --- a/src/main/java/com/inspect/tcpserver/tcp/BinaryModel.java +++ b/src/main/java/com/inspect/tcpserver/tcp/BinaryModel.java @@ -9,4 +9,5 @@ public class BinaryModel { public int dataLength; public ByteBuf dataBuf; public String id; + public String uuid; } diff --git a/src/main/java/com/inspect/tcpserver/tcp/DownXml2Json.java b/src/main/java/com/inspect/tcpserver/tcp/DownXml2Json.java index 9f972f2..7066976 100644 --- a/src/main/java/com/inspect/tcpserver/tcp/DownXml2Json.java +++ b/src/main/java/com/inspect/tcpserver/tcp/DownXml2Json.java @@ -19,13 +19,17 @@ public class DownXml2Json { private String deviceAlias = "PatrolDevice"; + private XStream getXmlStreamInstance() { + return new XStream(new Xpp3Driver(new NoNameCoder())); + } + public DownXml2Json(String alias) { this.alias = alias; } public String DownStreamJson2Xml(String id, String xml, Class clazz) { try { - XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); + XStream xStream = getXmlStreamInstance(); xStream.alias(alias, clazz); xStream.autodetectAnnotations(true); xStream.ignoreUnknownElements(); @@ -33,8 +37,7 @@ public class DownXml2Json { T obj = (T) xStream.fromXML(xml); return JSON.toJSONString(obj); } catch (com.thoughtworks.xstream.XStreamException e) { - logger.error("################ 客户: {}, DOWN解析失败[PatrolHost] ################", id); - logger.error("################ 客户: {}, DOWN异常堆栈 ################\n{}", id, ExceptionUtils.getStackTrace(e)); + logger.error("################ 客户: {}, UP解析失败, 异常堆栈 [PatrolHost]: {} ################", id, e.getMessage()); try { XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.alias(deviceAlias, clazz); @@ -53,7 +56,7 @@ public class DownXml2Json { //任务下发 public String TaskSendControlXml2Json(String xml) { - XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); + XStream xStream = getXmlStreamInstance(); xStream.alias(alias, TaskSendControl.class); xStream.autodetectAnnotations(true); xStream.ignoreUnknownElements(); diff --git a/src/main/java/com/inspect/tcpserver/tcp/MyDecoder.java b/src/main/java/com/inspect/tcpserver/tcp/MyDecoder.java index 909381b..6827dfd 100644 --- a/src/main/java/com/inspect/tcpserver/tcp/MyDecoder.java +++ b/src/main/java/com/inspect/tcpserver/tcp/MyDecoder.java @@ -5,6 +5,7 @@ import io.netty.buffer.ByteBufUtil; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageDecoder; +import org.apache.commons.lang3.RandomStringUtils; import org.apache.tomcat.util.buf.HexUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,8 +28,9 @@ public class MyDecoder extends ByteToMessageDecoder { in.skipBytes(in.readableBytes()); } + final String uuid = RandomStringUtils.randomAlphanumeric(32); ByteBuf forPrint = in.copy(); - log.info("################ 客户: {}, 上行原始报文 ################ \n {}", ctx.channel().id().asShortText(), ByteBufUtil.hexDump(forPrint)); + log.info("################ 会话: {}, 客户: {}, 上行原始报文 ################ \n {}", uuid, ctx.channel().id().asShortText(), ByteBufUtil.hexDump(forPrint)); int index; String flag; @@ -63,6 +65,7 @@ public class MyDecoder extends ByteToMessageDecoder { binaryModel.sourceFlag = sourceFlag; binaryModel.dataLength = xmlLength; binaryModel.dataBuf = Unpooled.copiedBuffer(payload); + binaryModel.uuid = uuid; out.add(binaryModel); } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/com/inspect/tcpserver/tcp/NettyClient.java b/src/main/java/com/inspect/tcpserver/tcp/NettyClient.java index 1365b47..924ccf8 100644 --- a/src/main/java/com/inspect/tcpserver/tcp/NettyClient.java +++ b/src/main/java/com/inspect/tcpserver/tcp/NettyClient.java @@ -18,6 +18,7 @@ import io.netty.channel.socket.nio.NioSocketChannel; import io.netty.util.CharsetUtil; import io.netty.util.internal.StringUtil; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.exception.ExceptionUtils; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; @@ -312,17 +313,37 @@ public class NettyClient { } } + private XStream getXmlStreamInstance() { + return new XStream(new Xpp3Driver(new NoNameCoder())); + } + //处理注册应答 public void dealRegister(String xml) { - XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); - xStream.alias(alias, RegisterResponseControl.class); - xStream.autodetectAnnotations(true); - xStream.ignoreUnknownElements(); - xStream.addPermission(AnyTypePermission.ANY); - RegisterResponseControl obj = (RegisterResponseControl) xStream.fromXML(xml); + RegisterResponseControl obj = new RegisterResponseControl(); + try { + XStream xStream = getXmlStreamInstance(); + xStream.alias(alias, RegisterResponseControl.class); + xStream.autodetectAnnotations(true); + xStream.ignoreUnknownElements(); + xStream.addPermission(AnyTypePermission.ANY); + obj = (RegisterResponseControl) xStream.fromXML(xml); + } catch (com.thoughtworks.xstream.XStreamException e) { + logger.error("################ 注册解析失败, 异常堆栈 [PatrolHost]: {} ################", ExceptionUtils.getMessage(e)); + try { + XStream xStream = getXmlStreamInstance(); + xStream.alias(deviceAlias, RegisterResponseControl.class); + xStream.autodetectAnnotations(true); + xStream.ignoreUnknownElements(); + xStream.addPermission(AnyTypePermission.ANY); + obj = (RegisterResponseControl) xStream.fromXML(xml); + } catch (com.thoughtworks.xstream.XStreamException e2) { + logger.error("################ 解析失败[PatrolDevice] ################"); + logger.error("################ 异常堆栈 ################\n{}", ExceptionUtils.getStackTrace(e2)); + } + } TimerSendControl(obj); - logger.info("客户端 接收到服务端注册回馈,服务注册完成"); + logger.info("################ 客户端 接收到服务端注册回馈, 服务注册完成 ################ "); } //处理心跳 diff --git a/src/main/java/com/inspect/tcpserver/tcp/NettyServer.java b/src/main/java/com/inspect/tcpserver/tcp/NettyServer.java index 13de13a..74e2a18 100644 --- a/src/main/java/com/inspect/tcpserver/tcp/NettyServer.java +++ b/src/main/java/com/inspect/tcpserver/tcp/NettyServer.java @@ -139,7 +139,7 @@ public class NettyServer { } //发送消息 - public void sendMsg(String client, boolean request, String xml) { + public void sendMsg(String uuid, String client, boolean request, String xml) { if (tcpClientMap.containsKey(client) && !StringUtil.isNullOrEmpty(xml)) { ByteBuf byteBuf = Unpooled.copiedBuffer(xml, CharsetUtil.UTF_8); int length = byteBuf.readableBytes(); @@ -154,11 +154,11 @@ public class NettyServer { allBuf.writeByte(0xEB); allBuf.writeByte(0x90); redisTemplate.opsForValue().set(String.valueOf(sendIndex), allBuf.toString(CharsetUtil.US_ASCII), 60L, TimeUnit.SECONDS); - nettyServerHandler.sendMsg(tcpClientMap.get(client), allBuf); - logger.info("################ 客户: {}, 向设备端机器人发送消息会话序列号: {}, 接收端序列号: {}, 消息体: ################\n{}", client, sendIndex, receiveIndex, xml); + logger.info("################ 会话: {}, 客户: {}, 向设备端机器人回送消息序列号: {}, 接收端序列号: {}, 消息体: ################\n{}", uuid, client, sendIndex, receiveIndex, xml); + nettyServerHandler.sendMsg(uuid, tcpClientMap.get(client), allBuf); sendIndex++; } else { - logger.warn("################ 设备端机器人: [{}] 离线!!! ################", client); + logger.warn("################ 会话: {}, 设备端机器人: [{}] 离线!!! ################", uuid, client); } } @@ -179,7 +179,7 @@ public class NettyServer { String msg = redisTemplate.opsForValue().get(String.valueOf(sendIndex)); if (!StringUtil.isNullOrEmpty(msg)) { ByteBuf allBuf = Unpooled.copiedBuffer(msg, CharsetUtil.US_ASCII); - sendMsg(sendCode, true, msg); + sendMsg("", sendCode, true, msg); } } @@ -201,7 +201,7 @@ public class NettyServer { command = Integer.parseInt(root.element("Command").getText()); } - logger.info("################ 客户: {}, 消息类型: {}, 消息体: ################ \n{}", binaryModel.id, type, xml); + logger.info("################ 会话: {}, 客户: {}, 消息类型: {}, 命令:{}, 消息体: ################ \n{}", binaryModel.uuid, binaryModel.id, type, command, xml); //判断是否重发 if (type == SystemType.system) { if (command == SystemType.has_response || command == SystemType.no_response) { @@ -218,13 +218,13 @@ public class NettyServer { switch (command) { case SystemType.register_request: // 收到接入侧注册信息 - logger.info("################ 客户: {}, 客户端注册信息 ################ \n {} ", binaryModel.id, xml); - dealRegister(xml); + logger.info("################ 会话: {}, 客户: {}, 客户端注册信息 ################", binaryModel.uuid, binaryModel.id); + dealRegister(binaryModel.uuid, xml); break; case SystemType.heart_request: // 处理心跳请求响应 - logger.info("################ 客户: {}, 客户端心跳 ################ \n {} ", binaryModel.id, xml); - sendHeartBeat(xml); + logger.info("################ 会话: {}, 客户: {}, 客户端心跳 ################", binaryModel.uuid, binaryModel.id); + sendHeartBeat(binaryModel.uuid, xml); break; case SystemType.has_response: // 处理有返回值的消息响应 @@ -232,7 +232,7 @@ public class NettyServer { // 处理设备上报的模型同步响应 if (null != root.element("Items").element("Item").attribute("device_file_path")) { // 收到接入侧模型同步数据 - logger.info("################ 客户: {}, 客户端模型同步数据 ################ \n{}", binaryModel.id, xml); + logger.info("################ 会话: {}, 客户: {}, 客户端模型同步数据 ################", binaryModel.uuid, binaryModel.id); // json = downXml2Json.ModelControlXml2Json(xml); json = downXml2Json.DownStreamJson2Xml(binaryModel.id, xml, ModelControl.class); JSONObject jsonObject = JSONObject.parseObject(json); @@ -242,7 +242,7 @@ public class NettyServer { // 任务控制响应任务执行ID if (null != root.element("Items").element("Item").attribute("task_patrolled_id")) { // 收到接入侧任务下发或控制回复数据 - logger.info("################ 客户: {}, 设备端任务下发或控制回复数据 ################\n{}", binaryModel.id, xml); + logger.info("################ 会话: {}, 客户: {}, 设备端任务下发或控制回复数据 ################", binaryModel.uuid, binaryModel.id); // json = downXml2Json.ModelControlXml2Json(xml); json = downXml2Json.DownStreamJson2Xml(binaryModel.id, xml, ModelControl.class); JSONObject jsonObject = JSONObject.parseObject(json); @@ -262,66 +262,66 @@ public class NettyServer { case PushType.patrolDeviceState: // json = downXml2Json.PatrolDeviceStateControlXml2Json(xml); json = downXml2Json.DownStreamJson2Xml(binaryModel.id, xml, PatrolDeviceStateControl.class); - logger.info("################ 客户: {}, 客户端设备状态数据 ################ \n{}", binaryModel.id, json); + logger.info("################ 会话: {}, 客户: {}, 客户端设备状态数据 ################", binaryModel.uuid, binaryModel.id); break; case PushType.patrolDeviceRunning: // json = downXml2Json.PatrolDeviceRunningControlXml2Json(xml); json = downXml2Json.DownStreamJson2Xml(binaryModel.id, xml, PatrolDeviceRuningControl.class); - logger.info("################ 客户: {}, 客户端设备运行数据 ################ \n{}", binaryModel.id, json); + logger.info("################ 会话: {}, 客户: {}, 客户端设备运行数据 ################", binaryModel.uuid, binaryModel.id); break; case PushType.nestState: // json = downXml2Json.NestStateControlXml2Json(xml); json = downXml2Json.DownStreamJson2Xml(binaryModel.id, xml, NestStateControl.class); - logger.info("################ 客户: {}, 客户端机巢状态数据 ################ \n{}", binaryModel.id, json); + logger.info("################ 会话: {}, 客户: {}, 客户端机巢状态数据 ################", binaryModel.uuid, binaryModel.id); break; case PushType.nestRunning: // json = downXml2Json.NestRunningControlXml2Json(xml); json = downXml2Json.DownStreamJson2Xml(binaryModel.id, xml, NestRuningControl.class); - logger.info("################ 客户: {}, 客户端机巢运行数据 ################ \n{}", binaryModel.id, json); + logger.info("################ 会话: {}, 客户: {}, 客户端机巢运行数据 ################", binaryModel.uuid, binaryModel.id); break; case PushType.location: // json = downXml2Json.LocationControlXml2Json(xml); json = downXml2Json.DownStreamJson2Xml(binaryModel.id, xml, LocationControl.class); - logger.info("################ 客户: {}, 客户端设备坐标 ################ \n{}", binaryModel.id, json); + logger.info("################ 会话: {}, 客户: {}, 客户端设备坐标 ################", binaryModel.uuid, binaryModel.id); break; case PushType.route: // json = downXml2Json.RouteControlXml2Json(xml); json = downXml2Json.DownStreamJson2Xml(binaryModel.id, xml, RouteControl.class); - logger.info("################ 客户: {}, 客户端设备路线 ################ \n{}", binaryModel.id, json); + logger.info("################ 会话: {}, 客户: {}, 客户端设备路线 ################", binaryModel.uuid, binaryModel.id); break; case PushType.alarm: // json = down.AlarmControlXml2Json(xml); json = downXml2Json.DownStreamJson2Xml(binaryModel.id, xml, AlarmControl.class); - logger.info("################ 客户: {}, 客户端设备异常告警 ################ \n{}", binaryModel.id, json); + logger.info("################ 会话: {}, 客户: {}, 客户端设备异常告警 ################", binaryModel.uuid, binaryModel.id); break; case PushType.environment: // json = downXml2Json.EnvironmentControlXml2Json(xml); json = downXml2Json.DownStreamJson2Xml(binaryModel.id, xml, EnvironmentControl.class); - logger.info("################ 客户: {}, 客户端设备上报环境数据 ################ \n{}", binaryModel.id, json); + logger.info("################ 会话: {}, 客户: {}, 客户端设备上报环境数据 ################", binaryModel.uuid, binaryModel.id); break; case PushType.taskState: // json = downXml2Json.TaskStateControlXml2Json(xml); json = downXml2Json.DownStreamJson2Xml(binaryModel.id, xml, TaskStateControl.class); - logger.info("################ 客户: {}, 客户端设备任务状态 ################ \n{}", binaryModel.id, json); + logger.info("################ 会话: {}, 客户: {}, 客户端设备任务状态 ################", binaryModel.uuid, binaryModel.id); break; case PushType.result: // json = downXml2Json.TaskResultControlXml2Json(xml); json = downXml2Json.DownStreamJson2Xml(binaryModel.id, xml, TaskResultControl.class); - logger.info("################ 客户: {}, 客户端巡视结果 ################ \n{}", binaryModel.id, json); + logger.info("################ 会话: {}, 客户: {}, 客户端巡视结果 ################", binaryModel.uuid, binaryModel.id); break; default: // server-handle-接收到的type:{},不在处理范围内,不予处理 - logger.info("################ 客户: {}, 非法的消息不予处理, 类型{}, 消息体 ################ \n {}", binaryModel.id, type, xml); + logger.info("################ 会话: {}, 客户: {}, 非法的消息不予处理, 类型{}, 消息体 ################", binaryModel.id, type, xml); } if (type != SystemType.system && !StringUtil.isNullOrEmpty(json)) { //rabbitmq推送到消息队列中基于springboot_xggd rabbitTemplate.convertAndSend(Constant.EX_CHANGE_NAME, Constant.ROUTING_KEY_NAME, json); String receiveCode = root.element("ReceiveCode").getText(); - responseMsg(receiveCode, sendCode); + feedbackToDevice(binaryModel.uuid, receiveCode, sendCode); } } - public void responseMsg(String sendCode, String receiveCode) { + public void feedbackToDevice(String uuid, String sendCode, String receiveCode) { XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.alias(aliasHost, ResponseControl.class); xStream.autodetectAnnotations(true); @@ -334,11 +334,11 @@ public class NettyServer { responseControl.Time = CommonUtils.GetNowDateString(); responseControl.Items = ""; String xml = xStream.toXML(responseControl); - sendMsg(receiveCode, false, xml); + sendMsg(uuid, receiveCode, false, xml); } //处理注册应答 - public void dealRegister(String xml) { + public void dealRegister(String uuid, String xml) { BaseControl obj = new BaseControl(); try { XStream xStream = getXmlStreamInstance(); @@ -348,8 +348,7 @@ public class NettyServer { xStream.addPermission(AnyTypePermission.ANY); obj = (BaseControl) xStream.fromXML(xml); } catch (com.thoughtworks.xstream.XStreamException e) { - logger.error("################ 解析失败[PatrolHost] ################"); - logger.error("################ 异常堆栈 ################\n{}", ExceptionUtils.getStackTrace(e)); + logger.error("################ 注册解析失败, 异常堆栈[PatrolHost] {} ################", e.getMessage()); try { XStream xStreamEx = getXmlStreamInstance(); xStreamEx.alias(aliasDevice, BaseControl.class); @@ -387,9 +386,9 @@ public class NettyServer { } responseControl.Items.add(model); - // 推送消息到mq JSONObject jsonObject = new JSONObject(); + jsonObject.put("uuid", uuid); jsonObject.put("patroldevice_code", obj.SendCode); jsonObject.put("Type", "heartbeat"); jsonObject.put("eventType", "connect"); @@ -400,7 +399,7 @@ public class NettyServer { // 鉴权不通过 responseControl.Code = ResponseType.fault; } - sendRegisterResponse(responseControl, obj.SendCode); + sendRegisterResponse(uuid, responseControl, obj.SendCode); } private XStream getXmlStreamInstance() { @@ -434,26 +433,58 @@ public class NettyServer { } - public void sendRegisterResponse(RegisterResponseControl responseControl, String sendCode) { - XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); - xStream.alias(aliasHost, RegisterResponseControl.class); - xStream.autodetectAnnotations(true); - String xml = xStream.toXML(responseControl); - sendMsg(sendCode, false, xml); + public void sendRegisterResponse(String uuid, RegisterResponseControl responseControl, String sendCode) { + String xml = ""; + try { + XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); + xStream.alias(aliasHost, RegisterResponseControl.class); + xStream.autodetectAnnotations(true); + xml = xStream.toXML(responseControl); + } catch (com.thoughtworks.xstream.XStreamException e) { + logger.error("################ DOWN REGISTER 解析失败, 异常堆栈 [PatrolHost]: {} ################", ExceptionUtils.getMessage(e)); + try { + XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); + xStream.alias(aliasDevice, RegisterResponseControl.class); + xStream.autodetectAnnotations(true); + xml = xStream.toXML(responseControl); + } catch (com.thoughtworks.xstream.XStreamException e2) { + logger.error("################ DOWN REGISTER 解析失败[PatrolDevice] ################"); + logger.error("################ DOWN REGISTER 异常堆栈[PatrolDevice] ################\n{}", ExceptionUtils.getStackTrace(e2)); + } + } + sendMsg(uuid, sendCode, false, xml); } - public void sendHeartBeat(String xml) { - logger.info("[NETTY] 设备端机器人系统心跳消息: {}", xml); - XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); - xStream.alias(aliasHost, BaseControl.class); - xStream.autodetectAnnotations(true); - xStream.ignoreUnknownElements(); - xStream.addPermission(AnyTypePermission.ANY); - BaseControl obj = (BaseControl) xStream.fromXML(xml); - responseMsg(obj.ReceiveCode, obj.SendCode); + public void sendHeartBeat(final String uuid, String xml) { + //logger.info("################ 设备端机器人系统心跳消息 ################\n{}", xml); + BaseControl obj = new BaseControl(); + try { + XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); + xStream.alias(aliasHost, BaseControl.class); + xStream.autodetectAnnotations(true); + xStream.ignoreUnknownElements(); + xStream.addPermission(AnyTypePermission.ANY); + obj = (BaseControl) xStream.fromXML(xml); + } catch (com.thoughtworks.xstream.XStreamException e) { + logger.error("################ HEARTBEAT TO MQ 解析失败, 异常堆栈[PatrolHost]: {} ################", e.getMessage()); + try { + XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); + xStream.alias(aliasDevice, BaseControl.class); + xStream.autodetectAnnotations(true); + xStream.ignoreUnknownElements(); + xStream.addPermission(AnyTypePermission.ANY); + obj = (BaseControl) xStream.fromXML(xml); + } catch (com.thoughtworks.xstream.XStreamException e2) { + logger.error("################ HEARTBEAT TO MQ 解析失败[PatrolDevice] ################"); + logger.error("################ HEARTBEAT TO MQ 异常堆栈[PatrolDevice] ################\n{}", ExceptionUtils.getStackTrace(e2)); + } + } + + feedbackToDevice(uuid, obj.ReceiveCode, obj.SendCode); // 推送消息到mq JSONObject jsonObject = new JSONObject(); + jsonObject.put("uuid", uuid); jsonObject.put("SendCode", obj.SendCode); jsonObject.put("Type", "heartbeat"); jsonObject.put("eventType", "heart"); @@ -519,7 +550,7 @@ public class NettyServer { } if (!StringUtils.isEmpty(xml)) { logger.info("################ 向设备端下发命令 ################\n{}", xml); - sendMsg(receiveCode, true, xml); + sendMsg("", receiveCode, true, xml); } } } diff --git a/src/main/java/com/inspect/tcpserver/tcp/NettyServerHandler.java b/src/main/java/com/inspect/tcpserver/tcp/NettyServerHandler.java index e048ca5..761078c 100644 --- a/src/main/java/com/inspect/tcpserver/tcp/NettyServerHandler.java +++ b/src/main/java/com/inspect/tcpserver/tcp/NettyServerHandler.java @@ -20,10 +20,10 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter { this.nettyServer = nettyServer; } - public void sendMsg(String id, ByteBuf byteBuf) { + public void sendMsg(String uuid, String id, ByteBuf byteBuf) { if (ids.containsKey(id)) { ByteBuf forPrint = byteBuf.copy(); - logger.info("################ 客户: {}, 下行原始报文 ################\n [{}]", id, ByteBufUtil.hexDump(forPrint)); + logger.info("################ 会话: {}, 客户: {}, 下行原始报文 ################\n [{}]", uuid, id, ByteBufUtil.hexDump(forPrint)); ids.get(id).writeAndFlush(byteBuf); } } @@ -60,7 +60,8 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter { String id = ctx.channel().id().asShortText(); BinaryModel binaryModel = (BinaryModel) msg; binaryModel.id = id; - logger.info("################ 客户:{}, 客户序列号:{}, 服务序列号:{}, 长度:{} ################", + logger.debug("################ 会话: {}, 客户:{}, 客户序列号:{}, 服务序列号:{}, 长度:{} ################", + binaryModel.uuid, binaryModel.id, binaryModel.sendIndex, binaryModel.receiveIndex, diff --git a/src/main/java/com/inspect/tcpserver/tcp/UpJson2Xml.java b/src/main/java/com/inspect/tcpserver/tcp/UpJson2Xml.java index aa0568d..6115a59 100644 --- a/src/main/java/com/inspect/tcpserver/tcp/UpJson2Xml.java +++ b/src/main/java/com/inspect/tcpserver/tcp/UpJson2Xml.java @@ -39,8 +39,7 @@ public class UpJson2Xml { T obj = JSON.parseObject(json, clazz); return xStream.toXML(obj); } catch (com.thoughtworks.xstream.XStreamException e) { - logger.error("################ UP解析失败[PatrolHost] ################"); - logger.error("################ UP异常堆栈 ################\n{}", ExceptionUtils.getStackTrace(e)); + logger.error("################ UP解析失败, 异常堆栈 [PatrolHost]: {} ################", ExceptionUtils.getMessage(e)); try { XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true);