0

我有一個appengine應用程序,使用Spring 3.1.2,並且工作得很好。駐地/動態情況下開始正常使用預熱:HTTP 302在後端啓動在appengine

2013-05-20 20:32:53.786 /_ah/warmup 200 27205ms 0kb 

現在我想配置任務隊列的「後端」的實例來處理,但在/ _ah /啓動它的日誌這個意外的HTTP 302重定向狀態碼:

2013-05-20 20:43:57.345 /_ah/start 302 50631ms 0kb instance=0 

0.1.0.3 - - [20/May/2013:16:43:56 -0700] "GET /_ah/start HTTP/1.1" 302 106 - - "0.my-backend.my-application.appspot.com" ms=50597 cpu_ms=44134 cpm_usd=0.000012 loading_request=1 exit_code=111 instance=0 app_engine_release=1.8.0 

I 2013-05-20 20:43:09.864 javax.servlet.ServletContext log: Initializing Spring root WebApplicationContext 

... 
A bunch of messages... 
... 

I 2013-05-20 20:43:55.659 org.springframework.web.context.ContextLoader initWebApplicationContext: Root WebApplicationContext: initialization completed in 45793 ms 
I 2013-05-20 20:43:56.442 This request caused a new process to be started for your application, and thus caused your application code to be loaded for the first time. This request may thus take longer and use more CPU than a typical request for your application. 
E 2013-05-20 20:43:56.442 Process terminated because it failed to respond to the start request with an HTTP status code of 200-299 or 404. 

我刪除了web.xml中的Spring Servlet和Filter Chain,但沒有任何更改。

我也將_ah映射爲不安全。它在常駐實例中按預期工作,但對於後端無效:

<http security="none" pattern="/_ah/**" disable-url-rewriting="true"/> 

我錯過了什麼?!?!

回答

0

我找到了解決辦法...這是與Spring視圖解析器衝突,它試圖重定向「_ah /啓動」與前綴和後綴:

<bean lazy-init="true" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/views/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 

爲了解決它,我映射在「熱身」和「啓動」以一個空的Servlet:

<servlet> 
    <servlet-name>_ah_warmup</servlet-name> 
    <servlet-class>com.my.app.EmptyWarmupServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>_ah_warmup</servlet-name> 
    <url-pattern>/_ah/warmup</url-pattern> 
    <url-pattern>/_ah/start</url-pattern> 
</servlet-mapping> 

現在後端開始和處理任務隊列如預期!