记录工作问题——求解答

早上9点左右测试服务器GPS接收服务,发现早上6点作用就已经停止接收数据,说明TCP连接出现异常。打开tomcat的运行日志,不停的出现:

通信错误

Exception in thread "Thread-203" java.lang.NullPointerException

下面是处理TCP长连接的代码(这个代码是不正确的) 附为最近改进的长连接代码:

public void run() {
		try {
			while(true) {
				if(null==socket||null==bis||null==bos)
					break;
				if(socket.isClosed())
					break;
				if(!socket.isConnected())
					break;
				byte [] data = getMessageFromClient();
				if(data!=null) {
					//转义还原
					byte[] receive = util.resEscapeCode(data);
		//			System.out.println("转移还原后的数据:");
					//util.printByteData(receive);
		//			System.out.println("当前消息ID:");
		//			util.printByteData(new byte[] {receive[1],receive[2]});
					byte[] resp = mts.analyzeData(receive);
					sendMessageToClient(resp);
				}
			}
		}finally {
			try {
				System.out.println("通信错误");
				if(bos!=null)
	        		bos.close();
		    	if(bis!=null)
		    		bis.close();
		    	if(socket!=null)
		    		socket.close();
			}catch (Exception e1) {
				e1.printStackTrace();
			}
		}
		
	}

未发现代码异常出现的位置.

第一次重启tomcat  web服务:

中间有错误控制台未看到,启动后不能访问web

tomcat   catalina.2018-12-03.log 日志

03-Dec-2018 09:36:57.803 INFO [main] org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance.
03-Dec-2018 09:36:57.803 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-80"]
03-Dec-2018 09:36:57.859 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["ajp-nio-8009"]
03-Dec-2018 09:36:57.910 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
03-Dec-2018 09:36:57.955 INFO [localhost-startStop-2] org.apache.catalina.core.StandardWrapper.unload Waiting for [1] instance(s) to be deallocated for Servlet [hello]
03-Dec-2018 09:36:58.957 INFO [localhost-startStop-2] org.apache.catalina.core.StandardWrapper.unload Waiting for [1] instance(s) to be deallocated for Servlet [hello]
03-Dec-2018 09:36:59.960 INFO [localhost-startStop-2] org.apache.catalina.core.StandardWrapper.unload Waiting for [1] instance(s) to be deallocated for Servlet [hello]
03-Dec-2018 09:37:00.083 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [testGps] is still processing a request that has yet to finish. This is very likely to create a memory leak. You can control the time allowed for requests to finish by using the unloadDelay attribute of the standard Context implementation. Stack trace of request processing thread:[
 java.net.PlainSocketImpl.socketAccept(Native Method)
 java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:409)
 java.net.ServerSocket.implAccept(ServerSocket.java:545)
 java.net.ServerSocket.accept(ServerSocket.java:513)
 com.gps.test.TCP.tcpServer.initServer(tcpServer.java:23)
 helloGps.hello.doGet(hello.java:51)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
 org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
 org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
 org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
 org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
 org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 java.lang.Thread.run(Thread.java:748)]
03-Dec-2018 09:37:00.084 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [testGps] appears to have started a thread named [Timer-0] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.lang.Object.wait(Native Method)
 java.util.TimerThread.mainLoop(Timer.java:552)
 java.util.TimerThread.run(Timer.java:505)
03-Dec-2018 09:37:00.085 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [testGps] appears to have started a thread named [Thread-7] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.net.SocketInputStream.socketRead0(Native Method)
 java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
 java.net.SocketInputStream.read(SocketInputStream.java:171)
 java.net.SocketInputStream.read(SocketInputStream.java:141)
 java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
 java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
 java.io.BufferedInputStream.read(BufferedInputStream.java:345)
 java.io.FilterInputStream.read(FilterInputStream.java:107)
 com.gps.test.TCP.ServerThread.getMessageFromClient(ServerThread.java:86)
 com.gps.test.TCP.ServerThread.run(ServerThread.java:48)
03-Dec-2018 09:37:00.085 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [testGps] appears to have started a thread named [Thread-8] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 com.gps.test.TCP.ServerThread.run(ServerThread.java:48)
03-Dec-2018 09:37:00.085 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [testGps] appears to have started a thread named [Thread-8] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.net.SocketInputStream.socketRead0(Native Method)
 java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
 java.net.SocketInputStream.read(SocketInputStream.java:171)
 java.net.SocketInputStream.read(SocketInputStream.java:141)
 java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
 java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
 java.io.BufferedInputStream.read(BufferedInputStream.java:345)
 java.io.FilterInputStream.read(FilterInputStream.java:107)
 com.gps.test.TCP.ServerThread.getMessageFromClient(ServerThread.java:86)
 com.gps.test.TCP.ServerThread.run(ServerThread.java:48)
03-Dec-2018 09:37:00.086 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [testGps] appears to have started a thread named [Thread-9] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.net.SocketInputStream.socketRead0(Native Method)
 java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
 java.net.SocketInputStream.read(SocketInputStream.java:171)
 java.net.SocketInputStream.read(SocketInputStream.java:141)
 java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
 java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
 java.io.BufferedInputStream.read(BufferedInputStream.java:345)
 java.io.FilterInputStream.read(FilterInputStream.java:107)
 com.gps.test.TCP.ServerThread.getMessageFromClient(ServerThread.java:86)
 com.gps.test.TCP.ServerThread.run(ServerThread.java:48)
03-Dec-2018 09:37:00.086 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [testGps] appears to have started a thread named [Thread-10] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.net.SocketInputStream.socketRead0(Native Method)
 java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
 java.net.SocketInputStream.read(SocketInputStream.java:171)
 java.net.SocketInputStream.read(SocketInputStream.java:141)
 java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
 java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
 java.io.BufferedInputStream.read(BufferedInputStream.java:345)
 java.io.FilterInputStream.read(FilterInputStream.java:107)
 com.gps.test.TCP.ServerThread.getMessageFromClient(ServerThread.java:86)
 com.gps.test.TCP.ServerThread.run(ServerThread.java:48)
03-Dec-2018 09:37:00.087 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [testGps] appears to have started a thread named [Thread-11] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.net.SocketInputStream.socketRead0(Native Method)
 java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
 java.net.SocketInputStream.read(SocketInputStream.java:171)
 java.net.SocketInputStream.read(SocketInputStream.java:141)
 java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
 java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
 java.io.BufferedInputStream.read(BufferedInputStream.java:345)
 java.io.FilterInputStream.read(FilterInputStream.java:107)
 com.gps.test.TCP.ServerThread.getMessageFromClient(ServerThread.java:86)
 com.gps.test.TCP.ServerThread.run(ServerThread.java:48)
03-Dec-2018 09:37:00.087 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [testGps] appears to have started a thread named [Thread-12] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.net.SocketInputStream.socketRead0(Native Method)
 java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
 java.net.SocketInputStream.read(SocketInputStream.java:171)
 java.net.SocketInputStream.read(SocketInputStream.java:141)
 java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
 java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
 java.io.BufferedInputStream.read(BufferedInputStream.java:345)
java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
 java.io.BufferedInputStream.read(BufferedInputStream.java:345)
 java.io.FilterInputStream.read(FilterInputStream.java:107)
 com.gps.test.TCP.ServerThread.getMessageFromClient(ServerThread.java:86)
 com.gps.test.TCP.ServerThread.run(ServerThread.java:48)
03-Dec-2018 09:37:00.093 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [testGps] appears to have started a thread named [Thread-13] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.net.SocketInputStream.socketRead0(Native Method)
 java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
 java.net.SocketInputStream.read(SocketInputStream.java:171)
 java.net.SocketInputStream.read(SocketInputStream.java:141)
 java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
 java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
 java.io.BufferedInputStream.read(BufferedInputStream.java:345)
 java.io.FilterInputStream.read(FilterInputStream.java:107)
 com.gps.test.TCP.ServerThread.getMessageFromClient(ServerThread.java:86)
 com.gps.test.TCP.ServerThread.run(ServerThread.java:48)
03-Dec-2018 09:37:00.093 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [testGps] appears to have started a thread named [Thread-14] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.net.SocketInputStream.socketRead0(Native Method)
 java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
 java.net.SocketInputStream.read(SocketInputStream.java:171)
 java.net.SocketInputStream.read(SocketInputStream.java:141)
 java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
 java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
 java.io.BufferedInputStream.read(BufferedInputStream.java:345)
 java.io.FilterInputStream.read(FilterInputStream.java:107)
 com.gps.test.TCP.ServerThread.getMessageFromClient(ServerThread.java:86)
 com.gps.test.TCP.ServerThread.run(ServerThread.java:48)
03-Dec-2018 09:37:00.094 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [testGps] appears to have started a thread named [Thread-15] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.net.SocketInputStream.socketRead0(Native Method)
 java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
 java.net.SocketInputStream.read(SocketInputStream.java:171)
 java.net.SocketInputStream.read(SocketInputStream.java:141)
 java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
 java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
 java.io.BufferedInputStream.read(BufferedInputStream.java:345)
 java.io.FilterInputStream.read(FilterInputStream.java:107)
 com.gps.test.TCP.ServerThread.getMessageFromClient(ServerThread.java:86)
 com.gps.test.TCP.ServerThread.run(ServerThread.java:48)
03-Dec-2018 09:37:00.099 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [testGps] appears to have started a thread named [Thread-65] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 com.gps.test.TCP.ServerThread.getMessageFromClient(ServerThread.java:84)
 com.gps.test.TCP.ServerThread.run(ServerThread.java:48)
03-Dec-2018 09:37:00.155 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-80"]
03-Dec-2018 09:37:03.474 WARNING [main] org.apache.catalina.core.StandardContext.setPath A context path must either be an empty string or start with a '/' and do not end with a '/'. The path [/] does not meet these criteria and has been changed to []
03-Dec-2018 09:37:03.484 WARNING [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'debug' to '0' did not find a matching property.
03-Dec-2018 09:37:03.552 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.5.34
03-Dec-2018 09:37:03.552 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Sep 4 2018 22:28:22 UTC
03-Dec-2018 09:37:03.552 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.5.34.0
03-Dec-2018 09:37:03.553 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
03-Dec-2018 09:37:03.553 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            2.6.32-696.16.1.el6.x86_64
03-Dec-2018 09:37:03.553 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
03-Dec-2018 09:37:03.553 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el6_10.x86_64/jre
03-Dec-2018 09:37:03.553 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_191-b12
03-Dec-2018 09:37:03.556 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
                                                                                                                                         
03-Dec-2018 09:37:03.553 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_191-b12
03-Dec-2018 09:37:03.556 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
03-Dec-2018 09:37:03.556 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /home/tomcat/apache-tomcat-8.5.34
03-Dec-2018 09:37:03.556 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /home/tomcat/apache-tomcat-8.5.34
03-Dec-2018 09:37:03.557 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/home/tomcat/apache-tomcat-8.5.34/conf/logging.properties
03-Dec-2018 09:37:03.557 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
03-Dec-2018 09:37:03.557 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
03-Dec-2018 09:37:03.557 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
03-Dec-2018 09:37:03.558 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
03-Dec-2018 09:37:03.558 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
03-Dec-2018 09:37:03.559 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/home/tomcat/apache-tomcat-8.5.34
03-Dec-2018 09:37:03.562 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/home/tomcat/apache-tomcat-8.5.34
03-Dec-2018 09:37:03.562 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/home/tomcat/apache-tomcat-8.5.34/temp
03-Dec-2018 09:37:03.562 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]
03-Dec-2018 09:37:03.870 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-80"]
03-Dec-2018 09:37:03.920 SEVERE [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-80]]
 org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-80]]
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:112)
        at org.apache.catalina.core.StandardService.initInternal(StandardService.java:552)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
        at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:875)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:632)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:655)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:309)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:995)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
        ... 12 more
Caused by: java.net.BindException: Address already in use
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Net.java:433)
        at sun.nio.ch.Net.bind(Net.java:425)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
        at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:219)
        at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1087)
        at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:265)
        at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:581)
        at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:68)
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:993)
        ... 13 more

03-Dec-2018 09:37:03.922 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
03-Dec-2018 09:37:03.924 SEVERE [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[AJP/1.3-8009]]
 org.apache.catalina.LifecycleException: Failed to initialize component [Connector[AJP/1.3-8009]]
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:112)
        at org.apache.catalina.core.StandardService.initInternal(StandardService.java:552)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
        at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:875)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:632)
            at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:632)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:655)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:309)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:995)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
        ... 12 more
Caused by: java.net.BindException: Address already in use
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Net.java:433)
        at sun.nio.ch.Net.bind(Net.java:425)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
        at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:219)
        at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1087)
        at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:265)
        at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:581)
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:993)
        ... 13 more

03-Dec-2018 09:37:03.931 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 1745 ms
03-Dec-2018 09:37:03.997 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
03-Dec-2018 09:37:04.003 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.34
03-Dec-2018 09:37:05.159 WARNING [main] org.apache.tomcat.util.net.AbstractEndpoint.shutdownExecutor The executor associated with thread pool [http-nio-80] has not fully shutdown. Some application threads may still be running.
03-Dec-2018 09:37:05.159 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-nio-8009"]
03-Dec-2018 09:37:05.160 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-80"]
03-Dec-2018 09:37:05.161 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["ajp-nio-8009"]
03-Dec-2018 09:38:22.188 WARNING [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [77,261] milliseconds.
03-Dec-2018 09:38:22.217 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/home/tomcat/apache-tomcat-8.5.34/webapps/testGps1.0.war]
03-Dec-2018 09:38:22.973 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
03-Dec-2018 09:38:22.982 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/home/tomcat/apache-tomcat-8.5.34/webapps/testGps1.0.war] has finished in [764] ms
03-Dec-2018 09:38:22.985 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/home/tomcat/apache-tomcat-8.5.34/webapps/testGps.war]
03-Dec-2018 09:38:23.673 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
03-Dec-2018 09:38:23.828 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/home/tomcat/apache-tomcat-8.5.34/webapps/testGps.war] has finished in [843] ms
03-Dec-2018 09:38:23.829 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/home/tomcat/apache-tomcat-8.5.34/webapps/host-manager]
03-Dec-2018 09:38:23.877 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/home/tomcat/apache-tomcat-8.5.34/webapps/host-manager] has finished in [48] ms
03-Dec-2018 09:38:23.880 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/home/tomcat/apache-tomcat-8.5.34/webapps/examples]
03-Dec-2018 09:38:24.109 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/home/tomcat/apache-tomcat-8.5.34/webapps/examples] has finished in [229] ms
03-Dec-2018 09:38:24.115 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/home/tomcat/apache-tomcat-8.5.34/webapps/docs]
03-Dec-2018 09:38:24.140 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/home/tomcat/apache-tomcat-8.5.34/webapps/docs] has finished in [25] ms
03-Dec-2018 09:38:24.141 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/home/tomcat/apache-tomcat-8.5.34/webapps/manager]
03-Dec-2018 09:38:24.177 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/home/tomcat/apache-tomcat-8.5.34/webapps/manager] has finished in [36] ms
03-Dec-2018 09:38:24.184 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 80252 ms
03-Dec-2018 09:42:02.140 INFO [main] org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance.
03-Dec-2018 09:42:02.140 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-80"]
03-Dec-2018 09:42:02.140 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["ajp-nio-8009"]
03-Dec-2018 09:42:02.140 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
03-Dec-2018 09:42:02.205 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-80"]
03-Dec-2018 09:42:02.205 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-80"]
03-Dec-2018 09:42:02.205 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-nio-8009"]
                                                                                       

发现:org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-80]]
 org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-80]]

中间出现:Caused by: java.net.BindException: Address already in use

再次重启tomcat,服务正常。

不过控制台出现设备不停的重连服务器

连了五次,连接时数据上传正常,9点50左右,出现:

java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(SocketInputStream.java:154)
        at java.net.SocketInputStream.read(SocketInputStream.java:141)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
        at java.io.FilterInputStream.read(FilterInputStream.java:107)
        at com.gps.test.TCP.ServerThread.getMessageFromClient(ServerThread.java:86)
        at com.gps.test.TCP.ServerThread.run(ServerThread.java:48)
java.net.SocketException: Broken pipe (Write failed)
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:111)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:155)
        at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
        at java.io.BufferedOutputStream.write(BufferedOutputStream.java:126)
        at java.io.FilterOutputStream.write(FilterOutputStream.java:97)
        at com.gps.test.TCP.ServerThread.sendMessageToClient(ServerThread.java:115)
        at com.gps.test.TCP.ServerThread.run(ServerThread.java:57)

设备已经欠费停机。

现在不是很明白6点停止服务之前发生了什么?如果是停机欠费,后面大概运行了20来分钟是怎么回事?为什么TCP会被断开,设备会一直重连?

附: 长连接代码

public void run() {
        try {
            while(isRunning) {
                if(null==socket||null==bis||null==bos)
                    break;
                if(socket.isClosed())
                    break;
                if(!socket.isConnected())
                    break;
                //现在时间
                long startTime = System.currentTimeMillis();
                if (startTime - lastHeartbeat > heartBeatInterval) {
                    System.out.println("心跳失联,断开连接");
                    isRunning = false;
                }
                byte [] data = getMessageFromClient();
                if(data!=null) {
                    //转义还原
                    byte[] receive = util.resEscapeCode(data);
                    
//                    System.out.println("收到数据:");//默认为心跳
//                      util.printByteData(data);
                    //处理心跳
                    char msgID = util.byteToChar(new byte[] {receive[1],receive[2]});
                    if(msgID==msgConstant.devHeartBeatID)
                        lastHeartbeat = System.currentTimeMillis();
                    
                    byte[] resp = mts.analyzeData(receive);
                    sendMessageToClient(resp);
                }
            }
        }catch (Exception e) {
            e.printStackTrace();
            try {
                System.out.println("通信错误");
                if(bos!=null)
                    bos.close();
                if(bis!=null)
                    bis.close();
                if(socket!=null)
                    socket.close();
            }catch (Exception e1) {
                e1.printStackTrace();
            }
        }
        finally {
            try {
                System.out.println("线程结束");
                if(bos!=null)
                    bos.close();
                if(bis!=null)
                    bis.close();
                if(socket!=null)
                    socket.close();
            }catch (Exception e1) {
                e1.printStackTrace();
            }
        }
        
    }

猜你喜欢

转载自blog.csdn.net/ido1ok/article/details/84749267