diff --git a/logs/iip-gateway/error.log b/logs/iip-gateway/error.log new file mode 100644 index 0000000..e69de29 diff --git a/logs/iip-gateway/info.log b/logs/iip-gateway/info.log new file mode 100644 index 0000000..f7089aa --- /dev/null +++ b/logs/iip-gateway/info.log @@ -0,0 +1,3 @@ +13:57:53.617 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 2140 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +13:57:53.620 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +13:57:57.360 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 4.041 seconds (JVM running for 4.967) diff --git a/logs/inspect-tcpserver/error.log b/logs/inspect-tcpserver/error.log new file mode 100644 index 0000000..e69de29 diff --git a/logs/inspect-tcpserver/info.log b/logs/inspect-tcpserver/info.log new file mode 100644 index 0000000..3038c55 --- /dev/null +++ b/logs/inspect-tcpserver/info.log @@ -0,0 +1,51 @@ +14:07:47.223 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 44988 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +14:07:47.226 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +14:07:50.452 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 3.521 seconds (JVM running for 4.496) +14:21:28.473 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 43668 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +14:21:28.476 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +14:21:31.658 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 3.476 seconds (JVM running for 4.462) +14:54:40.471 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 4160 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +14:54:40.475 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +14:54:43.898 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 3.78 seconds (JVM running for 4.971) +15:10:12.709 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 39584 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +15:10:12.712 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +15:10:16.432 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 4.106 seconds (JVM running for 5.02) +15:12:52.484 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 18096 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +15:12:52.488 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +15:12:55.936 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 3.778 seconds (JVM running for 4.741) +15:21:59.362 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 43776 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +15:21:59.366 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +15:22:03.533 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 4.521 seconds (JVM running for 5.758) +15:25:43.817 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 15604 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +15:25:43.822 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +15:25:48.717 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 5.4 seconds (JVM running for 7.058) +15:28:49.230 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 3180 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +15:28:49.234 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +15:28:53.952 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 5.112 seconds (JVM running for 6.697) +15:31:39.383 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 33092 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +15:31:39.385 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +15:31:42.851 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 3.791 seconds (JVM running for 4.825) +15:32:01.620 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 13500 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +15:32:01.624 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +15:32:06.081 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 4.888 seconds (JVM running for 6.111) +15:42:28.742 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 10380 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +15:42:28.747 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +15:42:35.180 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 6.927 seconds (JVM running for 8.27) +15:48:15.418 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 42420 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +15:48:15.422 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +15:48:21.236 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 6.264 seconds (JVM running for 7.924) +15:56:06.655 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 37500 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +15:56:06.659 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +15:56:10.828 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 4.545 seconds (JVM running for 5.615) +16:14:34.247 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 10652 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +16:14:34.253 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +16:14:42.923 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 9.132 seconds (JVM running for 11.39) +16:22:08.116 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 29764 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +16:22:08.121 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +16:22:11.592 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 3.829 seconds (JVM running for 5.018) +16:57:01.092 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 308 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +16:57:01.097 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +16:57:04.736 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 4.005 seconds (JVM running for 5.04) +17:35:29.960 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 37836 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver) +17:35:29.963 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default +17:35:34.024 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 4.386 seconds (JVM running for 5.495) diff --git a/pom.xml b/pom.xml index aaf79eb..3468200 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.dliip + com.inspect inspect-tcpserver 1.0.0 inspect-tcpserver @@ -41,7 +41,7 @@ com.thoughtworks.xstream xstream - 1.4.19 + 1.4.21 com.alibaba diff --git a/src/main/java/com/inspect/tcpserver/tcp/DownXml2Json.java b/src/main/java/com/inspect/tcpserver/tcp/DownXml2Json.java index e4ea035..de15211 100644 --- a/src/main/java/com/inspect/tcpserver/tcp/DownXml2Json.java +++ b/src/main/java/com/inspect/tcpserver/tcp/DownXml2Json.java @@ -5,21 +5,48 @@ import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.naming.NoNameCoder; import com.thoughtworks.xstream.io.xml.Xpp3Driver; import com.thoughtworks.xstream.security.AnyTypePermission; +import org.apache.commons.lang3.exception.ExceptionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DownXml2Json { - private Logger logger = LoggerFactory.getLogger(DownXml2Json.class); + private final Logger logger = LoggerFactory.getLogger(DownXml2Json.class); /** * 默认为对上级的客户端的别名 */ private String alias; + private String deviceAlias = "PatrolDevice"; + public DownXml2Json(String alias) { this.alias = alias; } + public String DownStreamJson2Xml(String json, Class clazz) { + try { + XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); + xStream.autodetectAnnotations(true); + xStream.alias(alias, clazz); + T obj = JSON.parseObject(json, clazz); + return xStream.toXML(obj); + } catch (com.thoughtworks.xstream.XStreamException e) { + logger.error("################ DOWN解析失败[PatrolHost] ################"); + logger.error("################ DOWN异常堆栈 ################\n{}", ExceptionUtils.getStackTrace(e)); + try { + XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); + xStream.autodetectAnnotations(true); + xStream.alias(deviceAlias, clazz); + + T obj = JSON.parseObject(json, clazz); + return xStream.toXML(obj); + } catch (com.thoughtworks.xstream.XStreamException ex) { + logger.error("################ DOWN解析失败[PatrolDevice] ################"); + logger.error("################ DOWN异常堆栈 ################\n{}", ExceptionUtils.getStackTrace(ex)); + return null; + } + } + } //任务下发 public String TaskSendControlXml2Json(String xml) { @@ -34,7 +61,7 @@ public class DownXml2Json { } //联动任务下发 - public String LendonTaskControlXml2Json(String xml) { + public String LinkageTaskControlXml2Json(String xml) { XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.alias(alias, LendonTaskControl.class); xStream.autodetectAnnotations(true); @@ -130,7 +157,7 @@ public class DownXml2Json { } //巡检设备运行数据 - public String PatrolDeviceRuningControlXml2Json(String xml) { + public String PatrolDeviceRunningControlXml2Json(String xml) { XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.alias(alias, PatrolDeviceRuningControl.class); xStream.autodetectAnnotations(true); @@ -154,7 +181,7 @@ public class DownXml2Json { } //机巢运行数据 - public String NestRuningControlXml2Json(String xml) { + public String NestRunningControlXml2Json(String xml) { XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.alias(alias, NestRuningControl.class); xStream.autodetectAnnotations(true); diff --git a/src/main/java/com/inspect/tcpserver/tcp/MyDecoder.java b/src/main/java/com/inspect/tcpserver/tcp/MyDecoder.java index 9df8e95..583d55e 100644 --- a/src/main/java/com/inspect/tcpserver/tcp/MyDecoder.java +++ b/src/main/java/com/inspect/tcpserver/tcp/MyDecoder.java @@ -28,7 +28,7 @@ public class MyDecoder extends ByteToMessageDecoder { } ByteBuf forPrint = in.copy(); - log.info("[NETTY] FULL MSG: [{}]", ByteBufUtil.hexDump(forPrint)); + log.info("################ 上行原始报文 ################ \n {}", ByteBufUtil.hexDump(forPrint)); int index; String flag; diff --git a/src/main/java/com/inspect/tcpserver/tcp/NettyClient.java b/src/main/java/com/inspect/tcpserver/tcp/NettyClient.java index 29c091a..629f657 100644 --- a/src/main/java/com/inspect/tcpserver/tcp/NettyClient.java +++ b/src/main/java/com/inspect/tcpserver/tcp/NettyClient.java @@ -53,8 +53,8 @@ public class NettyClient { private long receiveIndex = 0; private String sendCode; private String receiveCode; - private UpJson2Xml up; - private DownXml2Json down; + private UpJson2Xml upJson2Xml; + private DownXml2Json downXml2Json; private NettyClientHandler client; private ScheduledExecutorService scheduledExecutor = Executors.newScheduledThreadPool(4); private ExecutorService executorService = new ThreadPoolExecutor(1, 5, 5L, TimeUnit.SECONDS, new ArrayBlockingQueue(4), Executors.defaultThreadFactory()); @@ -84,8 +84,8 @@ public class NettyClient { private String deviceAlias = "PatrolDevice"; public NettyClient() { - up = new UpJson2Xml(alias); - down = new DownXml2Json(alias); + upJson2Xml = new UpJson2Xml(alias); + downXml2Json = new DownXml2Json(alias); } //释放资源 @@ -230,32 +230,32 @@ public class NettyClient { case RobotType.robotFz: case RobotType.robotIr: case RobotType.robotPtz: - json = down.RobotControlXml2Json(xml); + json = downXml2Json.RobotControlXml2Json(xml); break; case UAVType.uav: case UAVType.uavXj: case UAVType.uavKz: case UAVType.uavYt: case UAVType.nest: - json = down.UavControlXml2Json(xml); + json = downXml2Json.UavControlXml2Json(xml); break; case TaskType.taskControl: - json = down.BaseControlXml2Json(xml); + json = downXml2Json.BaseControlXml2Json(xml); break; case TaskType.taskSend: - json = down.TaskSendControlXml2Json(xml); + json = downXml2Json.TaskSendControlXml2Json(xml); break; case TaskType.lendonTask: - json = down.LendonTaskControlXml2Json(xml); + json = downXml2Json.LinkageTaskControlXml2Json(xml); break; case TaskType.taskArea: - json = down.AreaControlXml2Json(xml); + json = downXml2Json.AreaControlXml2Json(xml); break; case ModelType.modelSync: - json = down.BaseControlXml2Json(xml); + json = downXml2Json.BaseControlXml2Json(xml); break; case QueryType.queryResult: - json = down.ResultControlXml2Json(xml); + json = downXml2Json.ResultControlXml2Json(xml); break; default: logger.warn("client-handle-接收到的type:{},不在处理范围内,不予处理", type); @@ -295,7 +295,7 @@ public class NettyClient { } // 将xml消息转为json格式字符串 - String msg = up.ModelJson2Xml(response); + String msg = upJson2Xml.ModelJson2Xml(response); // 上报上级系统,会话类型为响应 SendMsg(false, msg); @@ -462,63 +462,63 @@ public class NettyClient { String xml = null; switch (type) { case PushType.environment: - xml = up.EnvironmentControlJson2Xml(json); + xml = upJson2Xml.EnvironmentControlJson2Xml(json); logger.info("向上级系统发送环境数据。{}", xml); break; case PushType.alarm: - xml = up.AlarmControlJson2Xml(json); + xml = upJson2Xml.AlarmControlJson2Xml(json); logger.info("向上级系统发送巡视设备异常告警数据。{}", xml); break; case PushType.analysisAlarm: - xml = up.AnalysisControlJson2Xml(json); + xml = upJson2Xml.AnalysisControlJson2Xml(json); logger.info("向上级系统发送告警数据。{}", xml); break; case PushType.location: - xml = up.LocationControlJson2Xml(json); + xml = upJson2Xml.LocationControlJson2Xml(json); logger.info("向上级系统发送巡视设备坐标。{}", xml); break; case PushType.monitor: - xml = up.MonitorControlJson2Xml(json); + xml = upJson2Xml.MonitorControlJson2Xml(json); logger.info("向上级系统发送静默监视告警数据。{}", xml); break; case PushType.nestRunning: - xml = up.NestRuningJson2Xml(json); + xml = upJson2Xml.NestRunningJson2Xml(json); logger.info("向上级系统发送无人机机巢运行数据。{}", xml); break; case PushType.nestState: - xml = up.NestStateJson2Xml(json); + xml = upJson2Xml.NestStateJson2Xml(json); logger.info("向上级系统发送无人机机巢状态数据。{}", xml); break; case PushType.patrolDeviceState: - xml = up.PatrolDeviceStateControlJson2Xml(json); + xml = upJson2Xml.PatrolDeviceStateControlJson2Xml(json); logger.info("向上级系统发送巡视设备状态数据。{}", xml); break; case PushType.patrolDeviceRunning: - xml = up.PatrolDeviceRuningControlJson2Xml(json); + xml = upJson2Xml.PatrolDeviceRunningControlJson2Xml(json); logger.info("向上级系统发送巡视设备运行数据。{}", xml); break; case PushType.result: - xml = up.TaskResultControlJson2Xml(json); + xml = upJson2Xml.TaskResultControlJson2Xml(json); logger.info("向上级系统发送巡视结果。{}", xml); break; case PushType.taskState: - xml = up.TaskStateControlJson2Xml(json); + xml = upJson2Xml.TaskStateControlJson2Xml(json); logger.info("向上级系统发送任务状态数据。{}", xml); break; case PushType.total: - xml = up.ReportControlJson2Xml(json); + xml = upJson2Xml.ReportControlJson2Xml(json); logger.info("向上级系统发送巡视设备统计信息上报。{}", xml); break; case PushType.route: - xml = up.RouteControlJson2Xml(json); + xml = upJson2Xml.RouteControlJson2Xml(json); logger.info("向上级系统发送巡视路线。{}", xml); break; case SystemType.system: - xml = up.ModelJson2Xml(json); + xml = upJson2Xml.ModelJson2Xml(json); logger.info("向上级系统发送系统数据。{}", xml); break; case ModelType.modelUpdate: - xml = up.UpdateModelJson2Xml(json); + xml = upJson2Xml.UpdateModelJson2Xml(json); //xml = up.ModelJson2Xml(json, UpdateModelControl.class); logger.info("向上级系统发送模型更新上报指令。{}", xml); break; diff --git a/src/main/java/com/inspect/tcpserver/tcp/NettyServer.java b/src/main/java/com/inspect/tcpserver/tcp/NettyServer.java index 835c44e..41a55e6 100644 --- a/src/main/java/com/inspect/tcpserver/tcp/NettyServer.java +++ b/src/main/java/com/inspect/tcpserver/tcp/NettyServer.java @@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject; import com.inspect.tcpserver.constant.Constant; import com.inspect.tcpserver.controller.ClientController; import com.inspect.tcpserver.domain.DeviceServerProperties; -import com.inspect.tcpserver.util.HexUtils; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.naming.NoNameCoder; import com.thoughtworks.xstream.io.xml.Xpp3Driver; @@ -19,6 +18,7 @@ import io.netty.channel.socket.nio.NioServerSocketChannel; 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; @@ -42,24 +42,24 @@ import java.util.concurrent.*; @Component public class NettyServer { - private Logger logger = LoggerFactory.getLogger(NettyServer.class); + private final Logger logger = LoggerFactory.getLogger(NettyServer.class); /** * 接收/发送报文xml外层别名 */ - private String alias = "PatrolHost"; + private final String aliasHost = "PatrolHost"; + + private final String aliasDevice = "PatrolDevice"; @Resource ClientController clientController; - - private EventLoopGroup bossGroup; private EventLoopGroup workGroup; - private Map clients = new HashMap<>(); //机器人id,通道id + private Map tcpClientMap = new HashMap<>(); //机器人id,通道id private long sendIndex = 0; //若重启系统后还要延续之前的序列号则需要把序列号存入redis中 private long receiveIndex = 0; - private DownXml2Json down = new DownXml2Json(alias); - private UpJson2Xml up = new UpJson2Xml(alias); + private DownXml2Json downXml2Json = new DownXml2Json(aliasHost); + private UpJson2Xml upJson2Xml = new UpJson2Xml(aliasHost); private NettyServerHandler nettyServerHandler; private ExecutorService executorService = new ThreadPoolExecutor(1, 10, 5L, TimeUnit.SECONDS, new ArrayBlockingQueue(4), Executors.defaultThreadFactory()); @@ -87,8 +87,8 @@ public class NettyServer { public void init() { this.serverIP = deviceServerProperties.ip; this.serverPort = deviceServerProperties.port; - up = new UpJson2Xml(alias); - down = new DownXml2Json(alias); + upJson2Xml = new UpJson2Xml(aliasHost); + downXml2Json = new DownXml2Json(aliasHost); } @Async @@ -119,7 +119,7 @@ public class NettyServer { //绑定端口,开始接收进来的连接 try { ChannelFuture future = bootstrap.bind(serverPort).sync(); - logger.info("nettyServer启动"); + logger.info("################ TCP服务器启动 ################"); future.channel().closeFuture().sync(); } catch (InterruptedException e) { e.printStackTrace(); @@ -140,8 +140,7 @@ public class NettyServer { //发送消息 public void sendMsg(String client, boolean request, String xml) { - logger.info("[NETTY] Client: {} online: {}, xml: \n {}", client, clients.containsKey(client), xml); - if (clients.containsKey(client) && !StringUtil.isNullOrEmpty(xml)) { + if (tcpClientMap.containsKey(client) && !StringUtil.isNullOrEmpty(xml)) { ByteBuf byteBuf = Unpooled.copiedBuffer(xml, CharsetUtil.UTF_8); int length = byteBuf.readableBytes(); ByteBuf allBuf = Unpooled.buffer(length + ConfigType.dataLength); @@ -155,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(clients.get(client), allBuf); - logger.info("[NETTY] 向设备端机器人发送消息会话序列号: [{}], 接收端序列号: [{}]", sendIndex, receiveIndex); + nettyServerHandler.sendMsg(tcpClientMap.get(client), allBuf); + logger.info("################ 向设备端机器人发送消息会话序列号: {}, 接收端序列号: {}, 消息体: ################ \n {}", sendIndex, receiveIndex, xml); sendIndex++; } else { - logger.warn("[NETTY] 设备端机器人: [{}] 离线!!!", client); + logger.warn("################ 设备端机器人: [{}] 离线!!! ################", client); } } @@ -169,7 +168,7 @@ public class NettyServer { try { dealMsgInThreadPool(binaryModel); } catch (Exception e) { - e.printStackTrace(); + logger.error(ExceptionUtils.getStackTrace(e)); } }); } @@ -187,13 +186,12 @@ public class NettyServer { //处理接收消息 private void dealMsgInThreadPool(BinaryModel binaryModel) throws DocumentException { String xml = binaryModel.dataBuf.toString(CharsetUtil.UTF_8); - logger.info("[NETTY] 设备端机器人会话序列号: [{}], 接收端序列号: [{}]", binaryModel.sendIndex, binaryModel.receiveIndex); receiveIndex = binaryModel.sendIndex; SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8))); Element root = document.getRootElement(); String sendCode = root.element("SendCode").getText(); - clients.put(sendCode, binaryModel.id); + tcpClientMap.put(sendCode, binaryModel.id); int type = 0; if (null != root.element("Type") && !StringUtil.isNullOrEmpty(root.element("Type").getText())) { type = Integer.parseInt(root.element("Type").getText()); @@ -203,8 +201,7 @@ public class NettyServer { command = Integer.parseInt(root.element("Command").getText()); } - logger.info("[NETTY] MESSAGE Type: {}, Data: [{}], Hex: [{}]", type, xml, HexUtils.ascii2hex(xml)); - + logger.info("################ 消息类型: {} ################", type); //判断是否重发 if (type == SystemType.system) { if (command == SystemType.has_response || command == SystemType.no_response) { @@ -221,13 +218,12 @@ public class NettyServer { switch (command) { case SystemType.register_request: // 收到接入侧注册信息 - logger.info("[NETTY] 设备端注册信息: {}", xml); + logger.info("################ 客户端注册信息 ################ \n {} ", xml); dealRegister(xml); - logger.info("[NETTY] 设备端注册信息2: {}", xml); break; case SystemType.heart_request: // 处理心跳请求响应 - logger.info("[NETTY] 设备端心跳: {}", xml); + logger.info("################ 客户端心跳 ################ \n {} ", xml); sendHeartBeat(xml); break; case SystemType.has_response: @@ -236,8 +232,8 @@ public class NettyServer { // 处理设备上报的模型同步响应 if (null != root.element("Items").element("Item").attribute("device_file_path")) { // 收到接入侧模型同步数据 - logger.info("[NETTY] 设备端模型同步数据: {}", xml); - json = down.ModelControlXml2Json(xml); + logger.info("################ 客户端模型同步数据 ################ \n {} ", xml); + json = downXml2Json.ModelControlXml2Json(xml); JSONObject jsonObject = JSONObject.parseObject(json); jsonObject.put("Type", Constant.MODEL_UP_TYPE); rabbitTemplate.convertAndSend(Constant.EX_CHANGE_NAME, Constant.ROUTING_KEY_NAME, jsonObject.toJSONString()); @@ -246,7 +242,7 @@ public class NettyServer { if (null != root.element("Items").element("Item").attribute("task_patrolled_id")) { // 收到接入侧任务下发或控制回复数据 logger.info("[NETTY] 设备端任务下发或控制回复数据: {}", xml); - json = down.ModelControlXml2Json(xml); + json = downXml2Json.ModelControlXml2Json(xml); JSONObject jsonObject = JSONObject.parseObject(json); jsonObject.put("SendCode", ""); clientController.sendMsg(jsonObject.toJSONString()); @@ -262,49 +258,50 @@ public class NettyServer { } break; case PushType.patrolDeviceState: - json = down.PatrolDeviceStateControlXml2Json(xml); - - logger.info("[NETTY] 客户端设备状态数据: {}", xml); + json = downXml2Json.PatrolDeviceStateControlXml2Json(xml); + logger.info("################ 客户端设备状态数据 ################ \n{}", json); break; case PushType.patrolDeviceRunning: - json = down.PatrolDeviceRuningControlXml2Json(xml); - logger.info("[NETTY] 客户端设备运行数据: {}", xml); + json = downXml2Json.PatrolDeviceRunningControlXml2Json(xml); + logger.info("################ 客户端设备运行数据 ################ \n{}", json); break; case PushType.nestState: - json = down.NestStateControlXml2Json(xml); - logger.info("[NETTY] 客户端机巢状态数据: {}", xml); + json = downXml2Json.NestStateControlXml2Json(xml); + logger.info("################ 客户端机巢状态数据 ################ \n{}", json); break; case PushType.nestRunning: - json = down.NestRuningControlXml2Json(xml); - logger.info("[NETTY] 客户端机巢运行数据: {}", xml); + json = downXml2Json.NestRunningControlXml2Json(xml); + logger.info("################ 客户端机巢运行数据 ################ \n{}", json); break; case PushType.location: - json = down.LocationControlXml2Json(xml); - logger.info("[NETTY] 客户端设备坐标: {}", xml); + json = downXml2Json.LocationControlXml2Json(xml); + logger.info("################ 客户端设备坐标 ################ \n{}", json); break; case PushType.route: - json = down.RouteControlXml2Json(xml); - logger.info("[NETTY] 客户端设备路线: {}", xml); + json = downXml2Json.RouteControlXml2Json(xml); + logger.info("################ 客户端设备路线 ################ \n{}", json); break; case PushType.alarm: - json = down.AlarmControlXml2Json(xml); - logger.info("[NETTY] 客户端设备异常告警: {}", xml); + //json = down.AlarmControlXml2Json(xml); + json = downXml2Json.DownStreamJson2Xml(xml, AlarmControl.class); + logger.info("################ 客户端设备异常告警 ################ \n{}", json); break; case PushType.environment: - json = down.EnvironmentControlXml2Json(xml); - logger.info("[NETTY] 客户端设备上报环境数据: {}", xml); + //json = downXml2Json.EnvironmentControlXml2Json(xml); + json = downXml2Json.DownStreamJson2Xml(xml, EnvironmentControl.class); + logger.info("################ 客户端设备上报环境数据 ################ \n{}", json); break; case PushType.taskState: - json = down.TaskStateControlXml2Json(xml); - logger.info("[NETTY] 客户端设备任务状态: {}", xml); + json = downXml2Json.TaskStateControlXml2Json(xml); + logger.info("################ 客户端设备任务状态 ################ \n{}", json); break; case PushType.result: - json = down.TaskResultControlXml2Json(xml); - logger.info("[NETTY] 客户端巡视结果: {}", xml); + json = downXml2Json.TaskResultControlXml2Json(xml); + logger.info("################ 客户端巡视结果 ################ \n{}", json); break; default: // server-handle-接收到的type:{},不在处理范围内,不予处理 - logger.warn("[NETTY] 非法的消息不予处理: {}, TYPE: {}", xml, type); + logger.info("################ 非法的消息不予处理, 类型{}, 消息体 ################ \n {}", type, xml); } if (type != SystemType.system && !StringUtil.isNullOrEmpty(json)) { //rabbitmq推送到消息队列中基于springboot_xggd @@ -316,7 +313,7 @@ public class NettyServer { public void responseMsg(String sendCode, String receiveCode) { XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); - xStream.alias(alias, ResponseControl.class); + xStream.alias(aliasHost, ResponseControl.class); xStream.autodetectAnnotations(true); ResponseControl responseControl = new ResponseControl(); responseControl.SendCode = sendCode; @@ -332,13 +329,30 @@ public class NettyServer { //处理注册应答 public void dealRegister(String xml) { - XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); - //xStream.alias(alias,BaseControl.class); - xStream.alias("PatrolHost", BaseControl.class); - xStream.autodetectAnnotations(true); - xStream.ignoreUnknownElements(); - xStream.addPermission(AnyTypePermission.ANY); - BaseControl obj = (BaseControl) xStream.fromXML(xml); + BaseControl obj = new BaseControl(); + try { + XStream xStream = getXmlStreamInstance(); + 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("################ 解析失败[PatrolHost] ################"); + logger.error("################ 异常堆栈 ################\n{}", ExceptionUtils.getStackTrace(e)); + try { + XStream xStreamEx = getXmlStreamInstance(); + xStreamEx.alias(aliasDevice, BaseControl.class); + xStreamEx.autodetectAnnotations(true); + xStreamEx.ignoreUnknownElements(); + xStreamEx.addPermission(AnyTypePermission.ANY); + obj = (BaseControl) xStreamEx.fromXML(xml); + } catch (com.thoughtworks.xstream.XStreamException e2) { + logger.error("################ 解析失败[PatrolDevice] ################"); + logger.error("################ 异常堆栈 ################\n{}", ExceptionUtils.getStackTrace(e2)); + } + } + RegisterResponseControl responseControl = new RegisterResponseControl(); responseControl.SendCode = obj.ReceiveCode; responseControl.ReceiveCode = obj.SendCode; @@ -379,6 +393,10 @@ public class NettyServer { sendRegisterResponse(responseControl, obj.SendCode); } + private XStream getXmlStreamInstance() { + return new XStream(new Xpp3Driver(new NoNameCoder())); + } + /** * 鉴权巡视设备 * @@ -408,7 +426,7 @@ public class NettyServer { public void sendRegisterResponse(RegisterResponseControl responseControl, String sendCode) { XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); - xStream.alias(alias, RegisterResponseControl.class); + xStream.alias(aliasHost, RegisterResponseControl.class); xStream.autodetectAnnotations(true); String xml = xStream.toXML(responseControl); sendMsg(sendCode, false, xml); @@ -417,7 +435,7 @@ public class NettyServer { public void sendHeartBeat(String xml) { logger.info("[NETTY] 设备端机器人系统心跳消息: {}", xml); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); - xStream.alias(alias, BaseControl.class); + xStream.alias(aliasHost, BaseControl.class); xStream.autodetectAnnotations(true); xStream.ignoreUnknownElements(); xStream.addPermission(AnyTypePermission.ANY); @@ -438,7 +456,7 @@ public class NettyServer { * 判断机器人是否在线 */ public boolean isOnline(String code) { - return clients.containsKey(code); + return tcpClientMap.containsKey(code); } public void sendXmlMessage(JSONObject obj) { @@ -454,29 +472,29 @@ public class NettyServer { case RobotType.robotFz: case RobotType.robotIr: case RobotType.robotPtz: - xml = up.RobotJson2Xml(json); + xml = upJson2Xml.RobotJson2Xml(json); break; case UAVType.uav: case UAVType.uavXj: case UAVType.uavKz: case UAVType.uavYt: case UAVType.nest: - xml = up.UavControlJson2Xml(json); + xml = upJson2Xml.UavControlJson2Xml(json); break; case TaskType.taskControl: - xml = up.ResponseJson2Xml(json); + xml = upJson2Xml.ResponseJson2Xml(json); break; case TaskType.taskSend: - xml = up.TaskSendJson2Xml(json); + xml = upJson2Xml.TaskSendJson2Xml(json); break; case TaskType.taskArea: - xml = up.AreaJson2Xml(json); + xml = upJson2Xml.AreaJson2Xml(json); break; case ModelType.modelSync: - xml = up.ResponseJson2Xml(json); + xml = upJson2Xml.ResponseJson2Xml(json); break; case TaskType.lendonTask: - xml = up.LendonTaskJson2Xml(json); + xml = upJson2Xml.LinkageTaskJson2Xml(json); break; default: logger.warn("[NETTY] 向设备端下发命令, 类型[{}]不正确, 不予处理", type); diff --git a/src/main/java/com/inspect/tcpserver/tcp/NettyServerHandler.java b/src/main/java/com/inspect/tcpserver/tcp/NettyServerHandler.java index effd544..3819dfd 100644 --- a/src/main/java/com/inspect/tcpserver/tcp/NettyServerHandler.java +++ b/src/main/java/com/inspect/tcpserver/tcp/NettyServerHandler.java @@ -4,7 +4,6 @@ import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; -import org.apache.tomcat.util.buf.HexUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -21,10 +20,10 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter { this.nettyServer = nettyServer; } - public void SendMsg(String id, ByteBuf byteBuf) { + public void sendMsg(String id, ByteBuf byteBuf) { if (ids.containsKey(id)) { ByteBuf forPrint = byteBuf.copy(); - logger.info("[NETTY] FULL MSG =>: [{}]", ByteBufUtil.hexDump(forPrint)); + logger.info("################ 下行原始报文 ################\n [{}]", ByteBufUtil.hexDump(forPrint)); ids.get(id).writeAndFlush(byteBuf); } } @@ -36,7 +35,7 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter { public void channelActive(ChannelHandlerContext ctx) throws Exception { String id = ctx.channel().id().asShortText(); ids.put(id, ctx); - logger.warn("[NETTY] 设备上线: {}", id); + logger.info("################ 设备上线: {} ################", id); } /** @@ -46,9 +45,7 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter { public void channelInactive(ChannelHandlerContext ctx) throws Exception { ctx.close(); String id = ctx.channel().id().asShortText(); - - logger.warn("设备断开,id:{}", id); - + logger.warn("################ 设备断开: {} ################", id); if (ids.containsKey(id)) { ids.remove(id); } @@ -60,10 +57,14 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter { */ @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { - logger.warn("[NETTY] channelRead"); String id = ctx.channel().id().asShortText(); BinaryModel binaryModel = (BinaryModel) msg; binaryModel.id = id; + logger.info("################ 客户:{}, 客户序列号:{}, 服务序列号:{}, 长度:{} ################", + binaryModel.id, + binaryModel.sendIndex, + binaryModel.receiveIndex, + binaryModel.dataLength); nettyServer.receiveMsg((BinaryModel) msg); } diff --git a/src/main/java/com/inspect/tcpserver/tcp/UpJson2Xml.java b/src/main/java/com/inspect/tcpserver/tcp/UpJson2Xml.java index ccdae6e..24ac138 100644 --- a/src/main/java/com/inspect/tcpserver/tcp/UpJson2Xml.java +++ b/src/main/java/com/inspect/tcpserver/tcp/UpJson2Xml.java @@ -4,9 +4,14 @@ import com.alibaba.fastjson.JSON; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.naming.NoNameCoder; import com.thoughtworks.xstream.io.xml.Xpp3Driver; +import org.apache.commons.lang3.exception.ExceptionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -public class UpJson2Xml -{ +public class UpJson2Xml { + private final Logger logger = LoggerFactory.getLogger(DownXml2Json.class); + + private String deviceAlias = "PatrolDevice"; public String getAlias() { return alias; @@ -26,71 +31,84 @@ public class UpJson2Xml this.alias = alias; } - - public String ModelJson2Xml(String json, Class clazz) { - XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); - xStream.autodetectAnnotations(true); - xStream.alias(alias, clazz.getClass()); - - T obj = JSON.parseObject(json,clazz); - return xStream.toXML(obj); + public String UpStreamJson2Xml(String json, Class clazz) { + try { + XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); + xStream.autodetectAnnotations(true); + xStream.alias(alias, clazz); + 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)); + try { + XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); + xStream.autodetectAnnotations(true); + xStream.alias(deviceAlias, clazz); + T obj = JSON.parseObject(json, clazz); + return xStream.toXML(obj); + } catch (com.thoughtworks.xstream.XStreamException ex) { + logger.error("################ UP解析失败[PatrolDevice] ################"); + logger.error("################ UP异常堆栈 ################\n{}", ExceptionUtils.getStackTrace(ex)); + return null; + } + } } //模型更新上报指令 - public String UpdateModelJson2Xml(String json) - { - UpdateModelControl obj=JSON.parseObject(json,UpdateModelControl.class); + public String UpdateModelJson2Xml(String json) { + UpdateModelControl obj = JSON.parseObject(json, UpdateModelControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, UpdateModelControl.class); String resultXML = xStream.toXML(obj); return resultXML; } + //任务控制和模型同步 - public String ResponseJson2Xml(String json) - { - ResponseControl obj=JSON.parseObject(json,ResponseControl.class); + public String ResponseJson2Xml(String json) { + ResponseControl obj = JSON.parseObject(json, ResponseControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, ResponseControl.class); - obj.Items=""; + obj.Items = ""; String resultXML = xStream.toXML(obj); return resultXML; } + //模型同步 - public String ModelJson2Xml(String json) - { - BaseControl obj=JSON.parseObject(json,ModelControl.class); + public String ModelJson2Xml(String json) { + BaseControl obj = JSON.parseObject(json, ModelControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, ModelControl.class); String resultXML = xStream.toXML(obj); return resultXML; } + //机器人控制指令 - public String RobotJson2Xml(String json) - { - RobotControl obj=JSON.parseObject(json,RobotControl.class); + public String RobotJson2Xml(String json) { + RobotControl obj = JSON.parseObject(json, RobotControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, RobotControl.class); String resultXML = xStream.toXML(obj); return resultXML; } + //无人机控制指令 - public String UavControlJson2Xml(String json) - { - RobotControl obj=JSON.parseObject(json,RobotControl.class); + public String UavControlJson2Xml(String json) { + RobotControl obj = JSON.parseObject(json, RobotControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, RobotControl.class); String resultXML = xStream.toXML(obj); return resultXML; } + //任务下发指令 - public String TaskSendJson2Xml(String json) - { - TaskSendControl obj=JSON.parseObject(json,TaskSendControl.class); + public String TaskSendJson2Xml(String json) { + TaskSendControl obj = JSON.parseObject(json, TaskSendControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, TaskSendControl.class); @@ -99,9 +117,8 @@ public class UpJson2Xml } //联动任务下发指令 - public String LendonTaskJson2Xml(String json) - { - LendonTaskControl obj=JSON.parseObject(json,LendonTaskControl.class); + public String LinkageTaskJson2Xml(String json) { + LendonTaskControl obj = JSON.parseObject(json, LendonTaskControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, LendonTaskControl.class); @@ -110,9 +127,8 @@ public class UpJson2Xml } //检修区域指令 - public String AreaJson2Xml(String json) - { - AreaControl obj=JSON.parseObject(json,AreaControl.class); + public String AreaJson2Xml(String json) { + AreaControl obj = JSON.parseObject(json, AreaControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, AreaControl.class); @@ -123,9 +139,8 @@ public class UpJson2Xml //-----------------------------------------上行数据----------------------------------// //巡视设备状态数据 - public String PatrolDeviceStateControlJson2Xml(String json) - { - PatrolDeviceStateControl obj=JSON.parseObject(json,PatrolDeviceStateControl.class); + public String PatrolDeviceStateControlJson2Xml(String json) { + PatrolDeviceStateControl obj = JSON.parseObject(json, PatrolDeviceStateControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, PatrolDeviceStateControl.class); @@ -134,9 +149,8 @@ public class UpJson2Xml } //巡视设备运行数据 - public String PatrolDeviceRuningControlJson2Xml(String json) - { - PatrolDeviceRuningControl obj=JSON.parseObject(json,PatrolDeviceRuningControl.class); + public String PatrolDeviceRunningControlJson2Xml(String json) { + PatrolDeviceRuningControl obj = JSON.parseObject(json, PatrolDeviceRuningControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, PatrolDeviceRuningControl.class); @@ -145,9 +159,8 @@ public class UpJson2Xml } //无人机机巢状态数据 - public String NestStateJson2Xml(String json) - { - NestStateControl obj=JSON.parseObject(json,NestStateControl.class); + public String NestStateJson2Xml(String json) { + NestStateControl obj = JSON.parseObject(json, NestStateControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, NestStateControl.class); @@ -156,9 +169,8 @@ public class UpJson2Xml } //无人机机巢运行数据 - public String NestRuningJson2Xml(String json) - { - NestRuningControl obj=JSON.parseObject(json,NestRuningControl.class); + public String NestRunningJson2Xml(String json) { + NestRuningControl obj = JSON.parseObject(json, NestRuningControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, NestRuningControl.class); @@ -168,9 +180,8 @@ public class UpJson2Xml //巡视设备坐标 - public String LocationControlJson2Xml(String json) - { - LocationControl obj=JSON.parseObject(json,LocationControl.class); + public String LocationControlJson2Xml(String json) { + LocationControl obj = JSON.parseObject(json, LocationControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, LocationControl.class); @@ -179,9 +190,8 @@ public class UpJson2Xml } //巡视路线 - public String RouteControlJson2Xml(String json) - { - RouteControl obj=JSON.parseObject(json,RouteControl.class); + public String RouteControlJson2Xml(String json) { + RouteControl obj = JSON.parseObject(json, RouteControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, RouteControl.class); @@ -190,9 +200,8 @@ public class UpJson2Xml } //巡视设备异常告警数据 - public String AlarmControlJson2Xml(String json) - { - AlarmControl obj=JSON.parseObject(json,AlarmControl.class); + public String AlarmControlJson2Xml(String json) { + AlarmControl obj = JSON.parseObject(json, AlarmControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, AlarmControl.class); @@ -201,9 +210,8 @@ public class UpJson2Xml } //环境数据 - public String EnvironmentControlJson2Xml(String json) - { - EnvironmentControl obj=JSON.parseObject(json,EnvironmentControl.class); + public String EnvironmentControlJson2Xml(String json) { + EnvironmentControl obj = JSON.parseObject(json, EnvironmentControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, EnvironmentControl.class); @@ -212,9 +220,8 @@ public class UpJson2Xml } //任务状态数据 - public String TaskStateControlJson2Xml(String json) - { - TaskStateControl obj=JSON.parseObject(json,TaskStateControl.class); + public String TaskStateControlJson2Xml(String json) { + TaskStateControl obj = JSON.parseObject(json, TaskStateControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, TaskStateControl.class); @@ -223,9 +230,8 @@ public class UpJson2Xml } //巡视结果 - public String TaskResultControlJson2Xml(String json) - { - TaskResultControl obj=JSON.parseObject(json,TaskResultControl.class); + public String TaskResultControlJson2Xml(String json) { + TaskResultControl obj = JSON.parseObject(json, TaskResultControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, TaskResultControl.class); @@ -234,9 +240,8 @@ public class UpJson2Xml } //静默监视告警数据 - public String MonitorControlJson2Xml(String json) - { - MonitorControl obj=JSON.parseObject(json,MonitorControl.class); + public String MonitorControlJson2Xml(String json) { + MonitorControl obj = JSON.parseObject(json, MonitorControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, MonitorControl.class); @@ -245,9 +250,8 @@ public class UpJson2Xml } //巡视设备统计信息上报 - public String ReportControlJson2Xml(String json) - { - ReportControl obj=JSON.parseObject(json,ReportControl.class); + public String ReportControlJson2Xml(String json) { + ReportControl obj = JSON.parseObject(json, ReportControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, ReportControl.class); @@ -256,9 +260,8 @@ public class UpJson2Xml } //巡检告警数据 - public String AnalysisControlJson2Xml(String json) - { - AnalysisControl obj=JSON.parseObject(json,AnalysisControl.class); + public String AnalysisControlJson2Xml(String json) { + AnalysisControl obj = JSON.parseObject(json, AnalysisControl.class); XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())); xStream.autodetectAnnotations(true); xStream.alias(alias, AnalysisControl.class); diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 63fd431..b2745a0 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -1,8 +1,13 @@ + + - + + + + @@ -12,51 +17,63 @@ - log/tcpServer.log + ${log.path}/info.log - + - log/tcpServer.%d{yyyy-MM-dd}.log + ${log.path}/info/info.%d{yyyy-MM-dd}.%i.log + ${log.maxFileSize} - 60 + ${log.maxHistory} ${log.pattern} - - - - - - - udp:10.10.18.185 - 12201 - 1.1 - - dliip-device - - version=1.1,module=patrol - true - true - true - yyyy-MM-dd HH:mm:ss,SSS - 8192 - - mdcField1,mdcField2 - mdc.*,(mdc|MDC)fields - true - - - INFO - + + + INFO + + ACCEPT + + DENY + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + - - - + + + + + + + \ No newline at end of file