cometd spring请求方法'帖子'/cometd/handshake不支持



Am尝试将cometd(spring-jquery-jetty7)与appfuse-spring-MVC项目集成。

我的web.xml是

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/app/*</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>cometd</servlet-name>
    <servlet-class>org.cometd.server.CometdServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>cometd</servlet-name>
    <url-pattern>/cometd/*</url-pattern>
</servlet-mapping>

并进行了所有其他配置,如spring-query-jetty7示例,当我从脚本中尝试cometd.handshake()时,它失败了,并从日志中得到错误,如下所示

WARN[http-8080-6]PageNotFound.handleHttpRequestMethodNotSupported(183)|不支持请求方法"POST"115117[http-8080-6]WARN org.springframework.web.servlet.PageNotFound-请求方法POST不支持

有人经历过吗?希望dispatcher servlet处理请求,而不是cometd servlet,我不知道这里面出了什么问题,欢迎对此提出建议。感谢

我通过更改servlet顺序来解决这个问题,比如首先更改cometd servlet,其次更改dispatcher servlet。调度器servlet首先处理cometd请求,并总是抛出错误,所以我按照的方式更改顺序

 <servlet>
   <servlet-name>cometd</servlet-name>
   <servlet-class>org.cometd.server.CometdServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
 </servlet>
<servlet-mapping>
   <servlet-name>cometd</servlet-name>
   <url-pattern>/cometd/*</url-pattern>
</servlet-mapping>
<servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>/app/*</url-pattern>
</servlet-mapping>

还增加了启动时的负载,以便在应用程序启动时初始化彗星servlet。感谢

最新更新