2013-08-28 55 views
0

我試着將cometd(spring-jquery-jetty7)與appfuse spring MVC項目集成。cometd spring請求方法'POST'不支持/ cometd/handshake

我的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> 

並沒有像彈簧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

我在cometd servlet上看不到啓動順序。我認爲它必須先加載,然後是Spring。另外,從錯誤消息中看起來像URL是無效的......它用於發佈的完整URL是什麼?我希望它會從發佈的web.xml中的'/ cometd /'開始。 – CodeChimp

+0

Hi @CodeChimp感謝您的回覆,我通過更改servlet命令(如cometd servlet第一個和調度程序servlet第二個)來解決此問題。謝謝 – mathi

回答

0

我通過更改servlet命令(如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> 

,並添加時加載的啓動爲初始化servlet的彗星時,應用程序啓動。謝謝

相關問題