gpt4 book ai didi

Java Spring MVC + Jetty Websocket 不兼容的方法签名

转载 作者:行者123 更新时间:2023-12-02 11:49:58 25 4
gpt4 key购买 nike

我正在尝试实现 Spring 的 websockets 与 Jetty 的集成。在 Spring 文档中,它说如果我们使用 Jetty,我们需要

"supply a pre-configured Jetty WebSocketServerFactory and plug that into Spring’s DefaultHandshakeHandler"

这是他们在 Spring 文档中提供的示例(XML 配置)

<bean id="handshakeHandler" class="org.springframework...DefaultHandshakeHandler">
<constructor-arg ref="upgradeStrategy"/>
</bean>

<bean id="upgradeStrategy" class="org.springframework...JettyRequestUpgradeStrategy">
<constructor-arg ref="serverFactory"/>
</bean>

<bean id="serverFactory" class="org.eclipse.jetty...WebSocketServerFactory">
<constructor-arg>
<bean class="org.eclipse.jetty...WebSocketPolicy">
<constructor-arg value="SERVER"/>
<property name="inputBufferSize" value="8092"/>
<property name="idleTimeout" value="600000"/>
</bean>
</constructor-arg>
</bean>

正如您所看到的,他们正在创建一个 WEbSocketServerFactory 并传入一个 WebSocketPolicy。然而,最新的 Jetty 版本 9.4.8 有不同的方法签名。

WebSocketServerFactory​(javax.servlet.ServletContext context, WebSocketPolicy policy)

除了 WebSocketPolicy 之外,还需要 ServletContext。由于方法签名不匹配,当我使用 Jetty 运行应用程序时出现错误。我注意到在旧版本的 Jetty 中,WebSocketServerFactory 仅采用 WebSocketPolicy(这将使上述 Spring 配置工作),但我不想降级我的 Jetty 版本。

我想知道是否有人知道如何在 XML 配置中传递 ServletContext。

提前致谢!

最佳答案

只需添加:

<constructor-arg type="javax.servlet.ServletContext"/>

到你的serverFactory bean定义,并让Spring自动注入(inject)它。

关于Java Spring MVC + Jetty Websocket 不兼容的方法签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47965198/

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