gpt4 book ai didi

java - Jersey 隐藏了 Spring 框架和 SockJS

转载 作者:行者123 更新时间:2023-12-04 11:34:23 26 4
gpt4 key购买 nike

我们正在尝试使用 Spring Framework WebSocket support 公开 sockjs 端点.

这是 Jersey 管理路由的服务器端的配置:

@Configuration
@EnableWebSocket
public class WebSocketConfig extends WebSocketMessageBrokerConfigurationSupport {

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/sockjs").withSockJS()
.setStreamBytesLimit(512 * 1024)
.setHttpMessageCacheSize(1000)
.setDisconnectDelay(30 * 1000);
}
}

问题是我们无法访问 /sockjs ,客户端代码为:
List<Transport> transports = new ArrayList<>(2);
transports.add(new WebSocketTransport(new StandardWebSocketClient()));
transports.add(new RestTemplateXhrTransport());

SockJsClient sockJsClient = new SockJsClient(transports);
sockJsClient.doHandshake(new MyHandler(), "ws://localhost:8080/sockjs");

(代码来自 spring websockets tutorial)

同一包中的其他资源将在 root/api/server 下配置,即使,不是 /sockjs也不是 /root/api/server/sockjs可以访问。

最佳答案

我知道这是一个很古老的问题,但最近我遇到了同样的问题,我花了半天时间才找到解决方案。因为我找到了一个,所以我想分享它,至少是为了我自己的 future 。
问题是我的 WEB-INF.xml 中只有 Jersey 的 servlet 定义。 .解决方案是添加Spring的DispatcherServlet及其到 /* 的映射路线。
所以基本上它看起来像

<servlet>
<servlet-name>spring</servlet-mapping>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

关于java - Jersey 隐藏了 Spring 框架和 SockJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43965014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com