【问题标题】:Java Spring MVC + Jetty Websocket Incompatible Method SignaturesJava Spring MVC + Jetty Websocket不兼容的方法签名
【发布时间】: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


    【解决方案1】:

    只需添加:

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

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

    【讨论】:

      猜你喜欢
      • 2017-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      相关资源
      最近更新 更多