2010-11-04 57 views
1

在帶插件v1.4.0的Eclipse 3.6中AppEngine 1.3.8 GWT 2.1.0本地任務隊列不再執行。Eclipse GWT和AppEngine - 本地任務隊列不再執行

重現:

創建一個新的GWT和AppEngine上項目(我叫包 「test2的」 下面 )

前將以下內容添加到GreetingServiceImpl greetServer()方法返回行:

final Queue queue = QueueFactory.getDefaultQueue(); 
queue.add(TaskOptions.Builder.url("/taskrunner").param("id", 
UUID.randomUUID().toString())); 

具有以下在服務器中創建包 「TaskRunner」 一類:

public class TaskRunner extends HttpServlet { 

    @Override 
    public void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws IOException { 
System.out.println("TaskRunner"); 
    } 

    @Override 
    public void doPost(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException { 
System.out.println("TaskRunner"); 
    } 

} 

以下內容添加到web.xml中

<servlet> 
<servlet-name>taskRunner</servlet-name> 
<servlet-class>test2.server.TaskRunner</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>taskRunner</servlet-name> 
    <url-pattern>/taskrunner</url-pattern> 
</servlet-mapping> 

運行該項目,然後單擊GWT按鈕。約10秒鐘後, 會得到下面的異常在控制檯上:

[ERROR] Job default.task1 threw an unhandled Exception: 
     com.google.apphosting.api.ApiProxy$ApplicationException: 
     ApplicationError: 2: Received exception executing http method POST 
     against URL http: //0.0.0.0:8888/taskrunner: No route to host: connect 
       at 
     com.google.appengine.api.urlfetch.dev.LocalURLFetchService.fetch(LocalURLFetchService.java: 
     239) 
       at com.google.appengine.api.labs.taskqueue.dev.LocalTaskQueue 
     $UrlFetchServiceLocalTaskQueueCallback.execute(LocalTaskQueue.java: 
     471) 
       at 
     com.google.appengine.api.labs.taskqueue.dev.UrlFetchJob.execute(UrlFetchJob.java: 
     77) 
       at org.quartz.core.JobRunShell.run(JobRunShell.java:203) 
       at org.quartz.simpl.SimpleThreadPool 
     $WorkerThread.run(SimpleThreadPool.java:520) 
     [ERROR] Job (default.task1 threw an exception. 
     org.quartz.SchedulerException: Job threw an unhandled exception. [See 
     nested exception: com.google.apphosting.api.ApiProxy 
     $ApplicationException: ApplicationError: 2: Received exception 
     executing http method POST against URL http: //0.0.0.0:8888/taskrunner: 
     No route to host: connect] 
       at org.quartz.core.JobRunShell.run(JobRunShell.java:214) 
       at org.quartz.simpl.SimpleThreadPool 
     $WorkerThread.run(SimpleThreadPool.java:520) 
     * Nested Exception (Underlying Cause) --------------- 
     com.google.apphosting.api.ApiProxy$ApplicationException: 
     ApplicationError: 2: Received exception executing http method POST 
     against URL http: //0.0.0.0:8888/taskrunner: No route to host: connect 
       at 
     com.google.appengine.api.urlfetch.dev.LocalURLFetchService.fetch(LocalURLFetchService.java: 
     239) 
       at com.google.appengine.api.labs.taskqueue.dev.LocalTaskQueue 
     $UrlFetchServiceLocalTaskQueueCallback.execute(LocalTaskQueue.java: 
     471) 
       at 
     com.google.appengine.api.labs.taskqueue.dev.UrlFetchJob.execute(UrlFetchJob.java: 
     77) 
       at org.quartz.core.JobRunShell.run(JobRunShell.java:203) 
       at org.quartz.simpl.SimpleThreadPool 
     $WorkerThread.run(SimpleThreadPool.java:520) 

從項目中刪除GWT和它的作品!爲了驗證這一點:

添加服務器類

public class TaskRunnerTest extends HttpServlet { 

public void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws IOException { 

    final Queue queue = QueueFactory.getDefaultQueue(); 
    queue.add(TaskOptions.Builder.url("/taskrunner").param("id", UUID.randomUUID().toString())); 

} 
    } 

web.xml中添加

<servlet> 
    <servlet-name>taskRunnerTest</servlet-name> 
    <servlet-class>test2.server.TaskRunnerTest</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>taskRunnerTest</servlet-name> 
    <url-pattern>/taskrunnertest</url-pattern> 
    </servlet-mapping> 

從項目(取消選中使用GWT)刪除GWT和命中http://127.0.0.1:8888/taskrunnertest - 不會拋出異常。 (啓用GWT後,url會引發異常)。

這用於啓用GWT。請有人建議一個修復程序,因爲它的成本迄今爲止我已經花費了2天時間。

謝謝!

回答

0

我得到了同樣的錯誤,原來是因爲我在USB 3G移動寬帶上運行。它改變了我筆記本電腦上網絡工作的方式。

基本上http://0.0.0.0網址不再爲我解決了,本地主機仍然這樣做,這就是爲什麼我仍然可以瀏覽本地運行的應用程序 - 但開發服務器上的任務隊列似乎使用0.0.0.0。

+0

你有沒有想過網絡的工作方式是什麼?我遇到了同樣的問題。 – 2011-11-06 18:00:45

相關問題