2021.11.20,内容:结束程序。

1. main方法返回

2. 异常交给虚拟机处理

异常包含了“异常名称,异常出错的数值,异常发生的代码位置”,程序的调用堆栈信息…如此多的信息,程序将这些信息封装成了一个“异常”对象,将该异常对象抛回给调用者。

手动抛出异常

格式:throw new 异常对象(…);

运行时异常的处理方案:

1. 不处理,异常最终会抛给虚拟机,程序提前终止

2. 捕获处理 try-catch

合并唯一:如RuntimeException或者统一Exception

开发中常用后者。

package com.example.demo.config; import cn.hutool.json.JSONUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.converter.MappingJackson2MessageConverter; import org.springframework.messaging.converter.StringMessageConverter; import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.messaging.simp.stomp.StompCommand; import org.springframework.messaging.simp.stomp.StompFrameHandler; import org.springframework.messaging.simp.stomp.StompHeaders; import org.springframework.messaging.simp.stomp.StompSession; import org.springframework.messaging.simp.stomp.StompSessionHandlerAdapter; import org.springframework.scheduling.concurrent.ConcurrentTaskScheduler; import org.springframework.stereotype.Service; import org.springframework.web.socket.client.standard.StandardWebSocketClient; import org.springframework.web.socket.messaging.WebSocketStompClient; import org.springframework.web.socket.sockjs.client.SockJsClient; import org.springframework.web.socket.sockjs.client.Transport; import org.springframework.web.socket.sockjs.client.WebSocketTransport; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; @Service public class StompClientSender { public StompClientSender(SimpMessagingTemplate messagingTemplate) { this.messagingTemplate = messagingTemplate; } @Autowired private SimpMessagingTemplate messagingTemplate; private final Map<String, StompSession> clientSessions = new ConcurrentHashMap<>(); private String userId; public void sendCommand(String command, String targetClient, String userId) { try { String sessionKey = targetClient + "#" + userId; StompSession session = clientSessions.computeIfAbsent(sessionKey, k -> connectToClient(targetClient,userId)); Map<String, String> requestMap = new HashMap<>(); requestMap.put("command", command); requestMap.put("host", targetClient); requestMap.put("userId", userId); String aaa = JSONUtil.toJsonStr(requestMap); session.send("/app/executeCommand", aaa); } catch (Exception e) { throw new RuntimeException("命令发送失败", e); } } private StompSession connectToClient(String clientAddress, String userId) { // 注意这里参数 userId List<Transport> transports = new ArrayList<>(); transports.add(new WebSocketTransport(new StandardWebSocketClient())); WebSocketStompClient stompClient = new WebSocketStompClient(new SockJsClient(transports)); stompClient.setMessageConverter(new StringMessageConverter()); stompClient.setTaskScheduler(new ConcurrentTaskScheduler()); CompletableFuture<StompSession> future = new CompletableFuture<>(); stompClient.connect("http://" + clientAddress + ":7788/ws-client", new StompSessionHandlerAdapter() { @Override public void afterConnected(StompSession session, StompHeaders headers) { String userTopic = "/topic/commandOutput/" + userId; session.subscribe(userTopic, new StompFrameHandler() { @Override public Type getPayloadType(StompHeaders headers) { return String.class; } @Override public void handleFrame(StompHeaders headers, Object payload) { String output = (String) payload; System.out.println("收到响应: " + output + ",转发至用户: " + userId); // 使用参数 userId messagingTemplate.convertAndSend("/topic/bToCommandOutput/fangpeiyuan", output); } }); future.complete(session); } @Override public void handleException(StompSession session, StompCommand command, StompHeaders headers, byte[] payload, Throwable exception) { System.err.println("STOMP异常: " + exception.getMessage()); exception.printStackTrace(); future.completeExceptionally(exception); } }); try { return future.get(5, TimeUnit.SECONDS); } catch (Exception e) { throw new RuntimeException("连接小客户端超时", e); } } // private StompSession connectToClient(String clientAddress, String userId) { // List<Transport> transports = new ArrayList<>(); // transports.add(new WebSocketTransport(new StandardWebSocketClient())); // WebSocketStompClient stompClient = new WebSocketStompClient(new SockJsClient(transports)); // stompClient.setMessageConverter(new MappingJackson2MessageConverter()); // stompClient.setTaskScheduler(new ConcurrentTaskScheduler()); // // CompletableFuture<StompSession> future = new CompletableFuture<>(); // // stompClient.connect("http://" + clientAddress + ":7788/ws-client", new StompSessionHandlerAdapter() { // @Override // public void afterConnected(StompSession session, StompHeaders headers) { // // 关键修改:订阅用户专属主题 // String userTopic = "/topic/commandOutput/" + userId; // session.subscribe(userTopic, new StompFrameHandler() { // @Override // public Type getPayloadType(StompHeaders headers) { // return String.class; // } // // @Override // public void handleFrame(StompHeaders headers, Object payload) { // String output = (String) payload; // System.out.println("收到响应: " + output + ",转发至用户: " + userId); // // // 直接通过公共主题转发响应 // messagingTemplate.convertAndSend( // "/topic/bToCommandOutput/" + userId, // output // ); // } // }); // future.complete(session); // } // // @Override // public void handleException(StompSession session, StompCommand command, StompHeaders headers, byte[] payload, Throwable exception) { // future.completeExceptionally(exception); // } // // }); // // try { // // 使用get()方法并设置超时 // return future.get(5, TimeUnit.SECONDS); // } catch (Exception e) { // throw new RuntimeException("连接小客户端超时", e); // } // } }"C:\Program Files\Java\jdk1.8.0_301\bin\java.exe" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:55199,suspend=y,server=n -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -javaagent:D:\Idea-2021.2\plugins\java\lib\rt\debugger-agent.jar -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_301\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\rt.jar;E:\huanan_win\cmd_demo\my-cmd-back\target\classes;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot-starter-web\2.7.12\spring-boot-starter-web-2.7.12.jar;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot-starter\2.7.12\spring-boot-starter-2.7.12.jar;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot\2.7.12\spring-boot-2.7.12.jar;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot-starter-logging\2.7.12\spring-boot-starter-logging-2.7.12.jar;D:\apache-maven-3.6.3\repository\ch\qos\logback\logback-classic\1.2.12\logback-classic-1.2.12.jar;D:\apache-maven-3.6.3\repository\ch\qos\logback\logback-core\1.2.12\logback-core-1.2.12.jar;D:\apache-maven-3.6.3\repository\org\apache\logging\log4j\log4j-to-slf4j\2.17.2\log4j-to-slf4j-2.17.2.jar;D:\apache-maven-3.6.3\repository\org\apache\logging\log4j\log4j-api\2.17.2\log4j-api-2.17.2.jar;D:\apache-maven-3.6.3\repository\org\slf4j\jul-to-slf4j\1.7.36\jul-to-slf4j-1.7.36.jar;D:\apache-maven-3.6.3\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\apache-maven-3.6.3\repository\org\yaml\snakeyaml\1.30\snakeyaml-1.30.jar;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot-starter-json\2.7.12\spring-boot-starter-json-2.7.12.jar;D:\apache-maven-3.6.3\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.13.5\jackson-datatype-jdk8-2.13.5.jar;D:\apache-maven-3.6.3\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.13.5\jackson-datatype-jsr310-2.13.5.jar;D:\apache-maven-3.6.3\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.13.5\jackson-module-parameter-names-2.13.5.jar;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot-starter-tomcat\2.7.12\spring-boot-starter-tomcat-2.7.12.jar;D:\apache-maven-3.6.3\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.75\tomcat-embed-core-9.0.75.jar;D:\apache-maven-3.6.3\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.75\tomcat-embed-el-9.0.75.jar;D:\apache-maven-3.6.3\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.75\tomcat-embed-websocket-9.0.75.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-web\5.3.27\spring-web-5.3.27.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-webmvc\5.3.27\spring-webmvc-5.3.27.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-aop\5.3.27\spring-aop-5.3.27.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-expression\5.3.27\spring-expression-5.3.27.jar;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot-starter-websocket\2.7.12\spring-boot-starter-websocket-2.7.12.jar;D:\apache-maven-3.6.3\repository\org\slf4j\slf4j-api\1.7.36\slf4j-api-1.7.36.jar;D:\apache-maven-3.6.3\repository\jakarta\xml\bind\jakarta.xml.bind-api\2.3.3\jakarta.xml.bind-api-2.3.3.jar;D:\apache-maven-3.6.3\repository\jakarta\activation\jakarta.activation-api\1.2.2\jakarta.activation-api-1.2.2.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-core\5.3.27\spring-core-5.3.27.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-jcl\5.3.27\spring-jcl-5.3.27.jar;D:\apache-maven-3.6.3\repository\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;D:\apache-maven-3.6.3\repository\com\baomidou\mybatis-plus-generator\3.5.3.1\mybatis-plus-generator-3.5.3.1.jar;D:\apache-maven-3.6.3\repository\cn\hutool\hutool-all\5.4.5\hutool-all-5.4.5.jar;D:\apache-maven-3.6.3\repository\org\springdoc\springdoc-openapi-ui\1.6.14\springdoc-openapi-ui-1.6.14.jar;D:\apache-maven-3.6.3\repository\org\springdoc\springdoc-openapi-webmvc-core\1.6.14\springdoc-openapi-webmvc-core-1.6.14.jar;D:\apache-maven-3.6.3\repository\org\springdoc\springdoc-openapi-common\1.6.14\springdoc-openapi-common-1.6.14.jar;D:\apache-maven-3.6.3\repository\io\swagger\core\v3\swagger-core\2.2.7\swagger-core-2.2.7.jar;D:\apache-maven-3.6.3\repository\org\apache\commons\commons-lang3\3.12.0\commons-lang3-3.12.0.jar;D:\apache-maven-3.6.3\repository\com\fasterxml\jackson\dataformat\jackson-dataformat-yaml\2.13.5\jackson-dataformat-yaml-2.13.5.jar;D:\apache-maven-3.6.3\repository\io\swagger\core\v3\swagger-annotations\2.2.7\swagger-annotations-2.2.7.jar;D:\apache-maven-3.6.3\repository\io\swagger\core\v3\swagger-models\2.2.7\swagger-models-2.2.7.jar;D:\apache-maven-3.6.3\repository\jakarta\validation\jakarta.validation-api\2.0.2\jakarta.validation-api-2.0.2.jar;D:\apache-maven-3.6.3\repository\org\webjars\swagger-ui\4.15.5\swagger-ui-4.15.5.jar;D:\apache-maven-3.6.3\repository\org\webjars\webjars-locator-core\0.50\webjars-locator-core-0.50.jar;D:\apache-maven-3.6.3\repository\io\github\classgraph\classgraph\4.8.149\classgraph-4.8.149.jar;D:\apache-maven-3.6.3\repository\mysql\mysql-connector-java\8.0.29\mysql-connector-java-8.0.29.jar;D:\apache-maven-3.6.3\repository\com\google\protobuf\protobuf-java\3.19.4\protobuf-java-3.19.4.jar;D:\apache-maven-3.6.3\repository\org\projectlombok\lombok\1.18.28\lombok-1.18.28.jar;D:\apache-maven-3.6.3\repository\com\baomidou\mybatis-plus-boot-starter\3.4.2\mybatis-plus-boot-starter-3.4.2.jar;D:\apache-maven-3.6.3\repository\com\baomidou\mybatis-plus\3.4.2\mybatis-plus-3.4.2.jar;D:\apache-maven-3.6.3\repository\com\baomidou\mybatis-plus-extension\3.4.2\mybatis-plus-extension-3.4.2.jar;D:\apache-maven-3.6.3\repository\com\baomidou\mybatis-plus-core\3.4.2\mybatis-plus-core-3.4.2.jar;D:\apache-maven-3.6.3\repository\com\baomidou\mybatis-plus-annotation\3.4.2\mybatis-plus-annotation-3.4.2.jar;D:\apache-maven-3.6.3\repository\com\github\jsqlparser\jsqlparser\4.0\jsqlparser-4.0.jar;D:\apache-maven-3.6.3\repository\org\mybatis\mybatis\3.5.6\mybatis-3.5.6.jar;D:\apache-maven-3.6.3\repository\org\mybatis\mybatis-spring\2.0.5\mybatis-spring-2.0.5.jar;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot-autoconfigure\2.7.12\spring-boot-autoconfigure-2.7.12.jar;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot-starter-jdbc\2.7.12\spring-boot-starter-jdbc-2.7.12.jar;D:\apache-maven-3.6.3\repository\com\zaxxer\HikariCP\4.0.3\HikariCP-4.0.3.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-jdbc\5.3.27\spring-jdbc-5.3.27.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-tx\5.3.27\spring-tx-5.3.27.jar;D:\apache-maven-3.6.3\repository\commons-io\commons-io\2.11.0\commons-io-2.11.0.jar;D:\apache-maven-3.6.3\repository\org\apache\commons\commons-compress\1.21\commons-compress-1.21.jar;D:\apache-maven-3.6.3\repository\org\tukaani\xz\1.9\xz-1.9.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-websocket\5.3.20\spring-websocket-5.3.20.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-context\5.3.27\spring-context-5.3.27.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-messaging\5.3.20\spring-messaging-5.3.20.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-beans\5.3.27\spring-beans-5.3.27.jar;D:\apache-maven-3.6.3\repository\com\fasterxml\jackson\core\jackson-databind\2.13.4\jackson-databind-2.13.4.jar;D:\apache-maven-3.6.3\repository\com\fasterxml\jackson\core\jackson-annotations\2.13.5\jackson-annotations-2.13.5.jar;D:\apache-maven-3.6.3\repository\com\fasterxml\jackson\core\jackson-core\2.13.5\jackson-core-2.13.5.jar;D:\Idea-2021.2\lib\idea_rt.jar" com.example.demo.DemoApplication Connected to the target VM, address: &#39;127.0.0.1:55199&#39;, transport: &#39;socket&#39; . ____ _ __ _ _ /\\ / ___&#39;_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | &#39;_ | &#39;_| | &#39;_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) &#39; |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.7.12) 2025-06-24 16:22:34.447 INFO 9640 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication using Java 1.8.0_301 on CYFOS01-31Q4Z03 with PID 9640 (E:\huanan_win\cmd_demo\my-cmd-back\target\classes started by fangpeiyuan in E:\huanan_win\cmd_demo\my-cmd-back) 2025-06-24 16:22:34.451 INFO 9640 --- [ main] com.example.demo.DemoApplication : No active profile set, falling back to 1 default profile: "default" 2025-06-24 16:22:35.460 INFO 9640 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8086 (http) 2025-06-24 16:22:35.467 INFO 9640 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2025-06-24 16:22:35.467 INFO 9640 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.75] 2025-06-24 16:22:35.715 INFO 9640 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2025-06-24 16:22:35.715 INFO 9640 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1223 ms _ _ |_ _ _|_. ___ _ | _ | | |\/|_)(_| | |_\ |_)||_|_\ / | 3.4.2 2025-06-24 16:22:40.397 INFO 9640 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8086 (http) with context path &#39;&#39; 2025-06-24 16:22:40.398 INFO 9640 --- [ main] o.s.m.s.b.SimpleBrokerMessageHandler : Starting... 2025-06-24 16:22:40.399 INFO 9640 --- [ main] o.s.m.s.b.SimpleBrokerMessageHandler : BrokerAvailabilityEvent[available=true, SimpleBrokerMessageHandler [org.springframework.messaging.simp.broker.DefaultSubscriptionRegistry@14b8a751]] 2025-06-24 16:22:40.399 INFO 9640 --- [ main] o.s.m.s.b.SimpleBrokerMessageHandler : Started. 2025-06-24 16:22:40.407 INFO 9640 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 6.386 seconds (JVM running for 7.323) 2025-06-24 16:22:45.658 INFO 9640 --- [nio-8086-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet &#39;dispatcherServlet&#39; 2025-06-24 16:22:45.658 INFO 9640 --- [nio-8086-exec-2] o.s.web.servlet.DispatcherServlet : Initializing Servlet &#39;dispatcherServlet&#39; 2025-06-24 16:22:45.659 INFO 9640 --- [nio-8086-exec-2] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms 收到响应: null,转发至用户: fangpeiyuan 收到响应: E:\huanan_win\cmd_demo\by_remote_service>dir,转发至用户: fangpeiyuan 收到响应: 卷的序列号是 5F45-660F,转发至用户: fangpeiyuan 收到响应: 驱动器 E 中的卷是 文档,转发至用户: fangpeiyuan 收到响应: 2025/06/23 14:52 12,516 by_remote_service.iml,转发至用户: fangpeiyuan 收到响应: 2025/06/06 16:39 <DIR> command-log,转发至用户: fangpeiyuan 收到响应: 2025/04/17 17:26 1,074 HELP.md,转发至用户: fangpeiyuan 收到响应: 2025/06/23 14:53 6,781 pom.xml,转发至用户: fangpeiyuan 收到响应: 2025/06/18 10:01 <DIR> python-package,转发至用户: fangpeiyuan 收到响应: 2025/06/24 16:20 <DIR> target,转发至用户: fangpeiyuan 收到响应: 2025/05/28 09:27 <DIR> src,转发至用户: fangpeiyuan 收到响应: 4 个文件 20,766 字节,转发至用户: fangpeiyuan 收到响应: 7 个目录 180,371,836,928 可用字节,转发至用户: fangpeiyuan 收到响应: null,转发至用户: fangpeiyuan 收到响应: null,转发至用户: fangpeiyuan 收到响应: 2025/06/23 14:53 <DIR> .,转发至用户: fangpeiyuan 收到响应: 2025/06/23 14:53 <DIR> ..,转发至用户: fangpeiyuan 收到响应: null,转发至用户: fangpeiyuan 收到响应: E:\huanan_win\cmd_demo\by_remote_service 的目录,转发至用户: fangpeiyuan 收到响应: 2025/04/17 17:26 395 .gitignore,转发至用户: fangpeiyuan 收到响应: 2025/06/24 16:18 <DIR> .idea,转发至用户: fangpeiyuan 收到响应: E:\huanan_win\cmd_demo\by_remote_service>,转发至用户: fangpeiyuan 收到响应: ⏹ 该命令执行已结束,转发至用户: fangpeiyuan STOMP异常: null java.lang.NullPointerException at org.springframework.messaging.converter.AbstractMessageConverter.canConvertTo(AbstractMessageConverter.java:233) at org.springframework.messaging.converter.AbstractMessageConverter.toMessage(AbstractMessageConverter.java:197) at org.springframework.messaging.converter.CompositeMessageConverter.toMessage(CompositeMessageConverter.java:96) at org.springframework.messaging.core.AbstractMessageSendingTemplate.doConvert(AbstractMessageSendingTemplate.java:181) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:150) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:129) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:122) at com.example.demo.config.StompClientSender$1$1.handleFrame(StompClientSender.java:86) at org.springframework.messaging.simp.stomp.DefaultStompSession.invokeHandler(DefaultStompSession.java:471) at org.springframework.messaging.simp.stomp.DefaultStompSession.handleMessage(DefaultStompSession.java:432) at org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.handleMessage(WebSocketStompClient.java:340) at org.springframework.web.socket.handler.WebSocketHandlerDecorator.handleMessage(WebSocketHandlerDecorator.java:75) at org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.handleMessage(LoggingWebSocketHandlerDecorator.java:56) at org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.handleMessageFrame(AbstractClientSockJsSession.java:294) at org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.handleFrame(AbstractClientSockJsSession.java:230) at org.springframework.web.socket.sockjs.client.WebSocketTransport$ClientSockJsWebSocketHandler.handleTextMessage(WebSocketTransport.java:163) at org.springframework.web.socket.handler.AbstractWebSocketHandler.handleMessage(AbstractWebSocketHandler.java:43) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.handleTextMessage(StandardWebSocketHandlerAdapter.java:114) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.access$000(StandardWebSocketHandlerAdapter.java:43) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:85) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:82) at org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:390) at org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:484) at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:284) at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:130) at org.apache.tomcat.websocket.WsFrameClient.processSocketRead(WsFrameClient.java:95) at org.apache.tomcat.websocket.WsFrameClient.resumeProcessing(WsFrameClient.java:208) at org.apache.tomcat.websocket.WsFrameClient.access$500(WsFrameClient.java:31) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.doResumeProcessing(WsFrameClient.java:186) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.completed(WsFrameClient.java:161) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.completed(WsFrameClient.java:146) at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126) at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:281) at sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.completed(WindowsAsynchronousSocketChannelImpl.java:579) at sun.nio.ch.Iocp$EventHandlerTask.run(Iocp.java:397) at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at java.lang.Thread.run(Thread.java:748) STOMP异常: null java.lang.NullPointerException at org.springframework.messaging.converter.AbstractMessageConverter.canConvertTo(AbstractMessageConverter.java:233) at org.springframework.messaging.converter.AbstractMessageConverter.toMessage(AbstractMessageConverter.java:197) at org.springframework.messaging.converter.CompositeMessageConverter.toMessage(CompositeMessageConverter.java:96) at org.springframework.messaging.core.AbstractMessageSendingTemplate.doConvert(AbstractMessageSendingTemplate.java:181) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:150) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:129) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:122) at com.example.demo.config.StompClientSender$1$1.handleFrame(StompClientSender.java:86) at org.springframework.messaging.simp.stomp.DefaultStompSession.invokeHandler(DefaultStompSession.java:471) at org.springframework.messaging.simp.stomp.DefaultStompSession.handleMessage(DefaultStompSession.java:432) at org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.handleMessage(WebSocketStompClient.java:340) at org.springframework.web.socket.handler.WebSocketHandlerDecorator.handleMessage(WebSocketHandlerDecorator.java:75) at org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.handleMessage(LoggingWebSocketHandlerDecorator.java:56) at org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.handleMessageFrame(AbstractClientSockJsSession.java:294) at org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.handleFrame(AbstractClientSockJsSession.java:230) at org.springframework.web.socket.sockjs.client.WebSocketTransport$ClientSockJsWebSocketHandler.handleTextMessage(WebSocketTransport.java:163) at org.springframework.web.socket.handler.AbstractWebSocketHandler.handleMessage(AbstractWebSocketHandler.java:43) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.handleTextMessage(StandardWebSocketHandlerAdapter.java:114) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.access$000(StandardWebSocketHandlerAdapter.java:43) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:85) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:82) at org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:390) at org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:484) at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:284) at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:130) at org.apache.tomcat.websocket.WsFrameClient.processSocketRead(WsFrameClient.java:95) at org.apache.tomcat.websocket.WsFrameClient.resumeProcessing(WsFrameClient.java:208) at org.apache.tomcat.websocket.WsFrameClient.access$500(WsFrameClient.java:31) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.doResumeProcessing(WsFrameClient.java:186) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.completed(WsFrameClient.java:161) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.completed(WsFrameClient.java:146) at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126) at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:281) at sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.completed(WindowsAsynchronousSocketChannelImpl.java:579) at sun.nio.ch.Iocp$EventHandlerTask.run(Iocp.java:397) at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at java.lang.Thread.run(Thread.java:748) STOMP异常: null java.lang.NullPointerException at org.springframework.messaging.converter.AbstractMessageConverter.canConvertTo(AbstractMessageConverter.java:233) at org.springframework.messaging.converter.AbstractMessageConverter.toMessage(AbstractMessageConverter.java:197) at org.springframework.messaging.converter.CompositeMessageConverter.toMessage(CompositeMessageConverter.java:96) at org.springframework.messaging.core.AbstractMessageSendingTemplate.doConvert(AbstractMessageSendingTemplate.java:181) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:150) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:129) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:122) at com.example.demo.config.StompClientSender$1$1.handleFrame(StompClientSender.java:86) at org.springframework.messaging.simp.stomp.DefaultStompSession.invokeHandler(DefaultStompSession.java:471) at org.springframework.messaging.simp.stomp.DefaultStompSession.handleMessage(DefaultStompSession.java:432) at org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.handleMessage(WebSocketStompClient.java:340) at org.springframework.web.socket.handler.WebSocketHandlerDecorator.handleMessage(WebSocketHandlerDecorator.java:75) at org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.handleMessage(LoggingWebSocketHandlerDecorator.java:56) at org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.handleMessageFrame(AbstractClientSockJsSession.java:294) at org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.handleFrame(AbstractClientSockJsSession.java:230) at org.springframework.web.socket.sockjs.client.WebSocketTransport$ClientSockJsWebSocketHandler.handleTextMessage(WebSocketTransport.java:163) at org.springframework.web.socket.handler.AbstractWebSocketHandler.handleMessage(AbstractWebSocketHandler.java:43) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.handleTextMessage(StandardWebSocketHandlerAdapter.java:114) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.access$000(StandardWebSocketHandlerAdapter.java:43) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:85) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:82) at org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:390) at org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:484) at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:284) at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:130) at org.apache.tomcat.websocket.WsFrameClient.processSocketRead(WsFrameClient.java:95) at org.apache.tomcat.websocket.WsFrameClient.resumeProcessing(WsFrameClient.java:208) at org.apache.tomcat.websocket.WsFrameClient.access$500(WsFrameClient.java:31) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.doResumeProcessing(WsFrameClient.java:186) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.completed(WsFrameClient.java:161) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.completed(WsFrameClient.java:146) at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126) at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:281) at sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.completed(WindowsAsynchronousSocketChannelImpl.java:579) at sun.nio.ch.Iocp$EventHandlerTask.run(Iocp.java:397) at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at java.lang.Thread.run(Thread.java:748) STOMP异常: null java.lang.NullPointerException at org.springframework.messaging.converter.AbstractMessageConverter.canConvertTo(AbstractMessageConverter.java:233) at org.springframework.messaging.converter.AbstractMessageConverter.toMessage(AbstractMessageConverter.java:197) at org.springframework.messaging.converter.CompositeMessageConverter.toMessage(CompositeMessageConverter.java:96) at org.springframework.messaging.core.AbstractMessageSendingTemplate.doConvert(AbstractMessageSendingTemplate.java:181) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:150) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:129) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:122) at com.example.demo.config.StompClientSender$1$1.handleFrame(StompClientSender.java:86) at org.springframework.messaging.simp.stomp.DefaultStompSession.invokeHandler(DefaultStompSession.java:471) at org.springframework.messaging.simp.stomp.DefaultStompSession.handleMessage(DefaultStompSession.java:432) at org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.handleMessage(WebSocketStompClient.java:340) at org.springframework.web.socket.handler.WebSocketHandlerDecorator.handleMessage(WebSocketHandlerDecorator.java:75) at org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.handleMessage(LoggingWebSocketHandlerDecorator.java:56) at org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.handleMessageFrame(AbstractClientSockJsSession.java:294) at org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.handleFrame(AbstractClientSockJsSession.java:230) at org.springframework.web.socket.sockjs.client.WebSocketTransport$ClientSockJsWebSocketHandler.handleTextMessage(WebSocketTransport.java:163) at org.springframework.web.socket.handler.AbstractWebSocketHandler.handleMessage(AbstractWebSocketHandler.java:43) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.handleTextMessage(StandardWebSocketHandlerAdapter.java:114) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.access$000(StandardWebSocketHandlerAdapter.java:43) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:85) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:82) at org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:390) at org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:484) at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:284) at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:130) at org.apache.tomcat.websocket.WsFrameClient.processSocketRead(WsFrameClient.java:95) at org.apache.tomcat.websocket.WsFrameClient.resumeProcessing(WsFrameClient.java:208) at org.apache.tomcat.websocket.WsFrameClient.access$500(WsFrameClient.java:31) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.doResumeProcessing(WsFrameClient.java:186) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.completed(WsFrameClient.java:161) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.completed(WsFrameClient.java:146) at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126) at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:281) at sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.completed(WindowsAsynchronousSocketChannelImpl.java:579) at sun.nio.ch.Iocp$EventHandlerTask.run(Iocp.java:397) at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at java.lang.Thread.run(Thread.java:748) 2025-06-24 16:23:36.518 INFO 9640 --- [MessageBroker-5] o.s.w.s.c.WebSocketMessageBrokerStats : WebSocketSession[1 current WS(0)-HttpStream(1)-HttpPoll(0), 2 total, 0 closed abnormally (0 connect failure, 0 send limit, 0 transport error)], stompSubProtocol[processed CONNECT(1)-CONNECTED(1)-DISCONNECT(1)], stompBrokerRelay[null], inboundChannel[pool size = 12, active threads = 0, queued tasks = 0, completed tasks = 15], outboundChannel[pool size = 12, active threads = 0, queued tasks = 0, completed tasks = 22], sockJsScheduler[pool size = 6, active threads = 1, queued tasks = 2, completed tasks = 12]
06-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值