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。感谢