Я пытаюсь следовать учебнику по websocket в spring.io . Все работало нормально, если каждый java-файл находился в одном и том же пакете (мне удалось установить сквозную связь через веб-сокет).
Я пытался извлечь GreetingController.java
и WebSocketConfig.java
классы в другойпакет. Приложение больше не сможет обмениваться данными через websocket.
Консоль сервера предполагает, что SimpleBrokerMessageHandler
не запущен. Вот журналы рабочих и нерабочих версий:
com.example.tutorial.Application : Starting Application on DESKTOP-SOF4KJM with PID 13408
com.example.tutorial.Application : No active profile set, falling back to default profiles: default
o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
o.apache.catalina.core.StandardService : Starting service [Tomcat]
org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.24]
o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1485 ms
o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'clientInboundChannelExecutor'
o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'clientOutboundChannelExecutor'
o.s.s.c.ThreadPoolTaskScheduler : Initializing ExecutorService 'messageBrokerTaskScheduler'
o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'brokerChannelExecutor'
o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html]
o.s.m.s.b.SimpleBrokerMessageHandler : Starting...
o.s.m.s.b.SimpleBrokerMessageHandler : BrokerAvailabilityEvent[available=true, SimpleBrokerMessageHandler [DefaultSubscriptionRegistry[cache[0 destination(s)], registry[0 sessions]]]]
o.s.m.s.b.SimpleBrokerMessageHandler : Started.
o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
com.example.tutorial.Application : Started Application in 2.631 seconds (JVM running for 3.04)
com.example.tutorial.Application : Starting Application on DESKTOP-SOF4KJM with PID 2508
com.example.tutorial.Application : No active profile set, falling back to default profiles: default
o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
o.apache.catalina.core.StandardService : Starting service [Tomcat]
org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.24]
o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1509 ms
o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html]
o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
com.example.tutorial.Application : Started Application in 2.52 seconds (JVM running for 2.873)
o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
o.s.web.servlet.DispatcherServlet : Completed initialization in 5 ms
Как я могу заставить мое приложение SpringBoot узнать об этой конечной точке веб-сокета в другом пакете, зная, что GreetingController
аннотируется @Controller
, а класс расширения WebSocketMessageBrokerConfigurer
аннотируется @Configuration
& @EnableWebSocketMessageBroker
?