我尝试将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’不支持
有没有人经历过这个?希望dispatcher servlet处理请求,而不是cometd servlet,我不知道这里面有什么问题,欢迎对此提出建议。谢谢
发布于 2013-08-30 00:50:27
我通过改变servlet的顺序来解决这个问题,比如cometd servlet优先,dispatcher servlet第二。dispatcher 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>并且还添加了启动时加载,用于在应用程序启动时初始化comet servlet。谢谢
https://stackoverflow.com/questions/18487717
复制相似问题