【发布时间】:2017-12-25 02:05:52
【问题描述】:
我正在尝试实现 Spring 的 websockets 与 Jetty 的集成。在 Spring 文档中它说如果我们使用 Jetty,我们需要
"提供一个预配置的 Jetty WebSocketServerFactory 并插入 进入 Spring 的 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。
提前致谢!
【问题讨论】:
标签: java spring spring-mvc jetty spring-websocket