尝试将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-jquery-jetty7示例,当我从脚本中尝试cometd.handshake()时,它失败并从日志中得到错误,如下所示
WARN [http-8080-6] PageNotFound.handleHttpRequestMethodNotSupported(183)|请求方法“POST”不受支持 115117 [http-8080-6] WARN org.springframework.web.servlet.PageNotFound - 请求方法POST'不支持
有人经历过这个吗?希望调度程序servlet处理请求而不是cometd servlet,我不知道这里有什么错误,欢迎提出这方面的建议。 谢谢
答案 0 :(得分:0)
我通过改变servtd命令来解决这个问题,比如cometd servlet first和dispatcher servlet second。调度程序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>
并添加load-on-startup以在应用程序启动时初始化comet servlet。谢谢