2012-12-08 3 views
2

"Google App Engine Java 및 GWT 응용 프로그램 개발 코드"라는 책에서 샘플 프로그램을 실행하려고합니다.Google GWT 오류 404

프로그램이 connactr입니다. 하지 com.google.appengine.api.labs.taskqueue.TaskOptions.Builder.url com.google.appengine.api.labs.taskqueue.Queue

:

프로그램은 수입품을 사용하고 있습니다 더 이상 존재, 그래서 나는 그들을 변경 :. com.google.appengine.api.taskqueue.TaskOptions.Builder.withurl com.google.appengine.api.taskqueue *

나는 또한 코드 변경

:

Queue queue = QueueFactory.getDefaultQueue(); 
     queue.add(url("/updatefeedurls").payload(data, 
     "application/x-java-serialized-object")); 

:

Queue queue = QueueFactory.getDefaultQueue(); 
     queue.add(withUrl("/updatefeedurls").payload(data, 
     "application/x-java-serialized-object")); 

나는 변화의 이러한 종류의 모든 곳에서 내가 이전 방법을했다했다. 오류없이 응용 프로그램을 실행할 수 있었지만 모든 페이지에서 404 오류가 발생했습니다. 페이지를 찾을 수 없습니다.

withurl() 메소드가 404 오류를 일으키는 다른 논리를 가지고 있다고 가정하지만이를 해결하기 위해 무엇을해야하는지 찾을 수 없었습니다.

이 작업을하려면 무엇을 변경해야합니까?

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
id="WebApp_ID" 
version="2.5"> 


<!-- ===================== friendsService ===================== --> 
<servlet> 
<servlet-name>friendsService</servlet-name> 
<servlet-class>com.metadot.book.connectr.server.FriendsServiceImpl</servlet-class> 
</servlet> 

<servlet-mapping> 
<servlet-name>friendsService</servlet-name> 
<url-pattern>/connectr/friendsService</url-pattern> 
</servlet-mapping> 

<!-- ===================== messagesService ===================== --> 
<servlet> 
<servlet-name>messagesService</servlet-name> 
<servlet-class>com.metadot.book.connectr.server.MessagesServiceImpl</servlet-class> 
</servlet> 

<servlet-mapping> 
<servlet-name>messagesService</servlet-name> 
<url-pattern>/connectr/messagesService</url-pattern> 
</servlet-mapping> 

<!-- ===================== Login Service ===================== --> 
<servlet> 
<servlet-name>loginService</servlet-name> 
<servlet-class>com.metadot.book.connectr.server.LoginServiceImpl</servlet-class> 
</servlet> 

<servlet-mapping> 
<servlet-name>loginService</servlet-name> 
<url-pattern>/connectr/loginService</url-pattern> 
</servlet-mapping> 


<!-- ===================== Login Google Servlet ===================== --> 

<servlet> 
<servlet-name>logingoogle</servlet-name> 
<servlet-class>com.metadot.book.connectr.server.servlets.LoginGoogleServlet</servlet- 
class> 
</servlet> 

<servlet-mapping> 
<servlet-name>logingoogle</servlet-name> 
<url-pattern>/logingoogle</url-pattern> 
</servlet-mapping> 

<servlet> 
<servlet-name>logingooglecallback</servlet-name> 
<servlet- 
class>com.metadot.book.connectr.server.servlets.LoginGoogleCallbackServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
<servlet-name>logingooglecallback</servlet-name> 
<url-pattern>/logingooglecallback</url-pattern> 
</servlet-mapping> 

<!-- ===================== Login Twitter Servlet ===================== --> 

<servlet> 
<servlet-name>logintwitter</servlet-name> 
<servlet-class>com.metadot.book.connectr.server.servlets.LoginTwitterServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
<servlet-name>logintwitter</servlet-name> 
<url-pattern>/logintwitter</url-pattern> 
</servlet-mapping> 

<servlet> 
<servlet-name>logintwittercallback</servlet-name> 
<servlet- 
class>com.metadot.book.connectr.server.servlets.LoginTwitterCallbackServlet</servlet-  
Class> 
</servlet> 

<servlet-mapping> 
<servlet-name>logintwittercallback</servlet-name> 
<url-pattern>/logintwittercallback</url-pattern> 
</servlet-mapping> 

<!-- ===================== Login Facebook Servlet ===================== --> 

<servlet> 
<servlet-name>loginfacebook</servlet-name> 
<servlet-class>com.metadot.book.connectr.server.servlets.LoginFacebookServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
<servlet-name>loginfacebook</servlet-name> 
<url-pattern>/loginfacebook</url-pattern> 
</servlet-mapping> 






</servlet> 
<servlet-mapping> 
<servlet-name>XMPPRequest</servlet-name> 
<url-pattern>/xmpprequest</url-pattern> 
</servlet-mapping> 

<security-constraint> 
<web-resource-collection> 
    <url-pattern>/xmpprequest</url-pattern> 
</web-resource-collection> 
<auth-constraint> 
    <role-name>admin</role-name> 
    </auth-constraint> 
</security-constraint> 



<filter-mapping> 
<filter-name>appstats</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 

<servlet> 
<servlet-name>appstats</servlet-name> 
    <servlet-class>com.google.appengine.tools.appstats.AppstatsServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>appstats</servlet-name> 
<url-pattern>/appstats/*</url-pattern> 
</servlet-mapping> 

<security-constraint> 
    <web-resource-collection> 
    <url-pattern>/appstats/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
    <role-name>admin</role-name> 
    </auth-constraint> 
</security-constraint> --> 

<!-- Default page to serve --> 
<welcome-file-list> 
<welcome-file>ConnectrApp.html</welcome-file> 
</welcome-file-list> 


</web-app> 

가 사전에 Idan 감사 : 여기

은 web.xml 파일입니다.

+0

404 오류와 관련하여 web.xml, 방화 광 콘솔 정보와 관련된 정보를 첨부하는 것이 좋습니다. google-app-engine 태그로 태그 다시 지정 – SSR

+0

web.xml을 추가했습니다. 감사합니다. –

+0

Firebug Console 또는 Chrome Dev 도구에서 요청을 모니터링하여 요청이 시작된 URL을 확인합니다. withURL 함수는 web.xml 매핑을 잘못 놓고있는 URL을 약간 수정할 수 있습니다. – SSR

답변

0

나는 withUrl이 entrire URL이 상대 위치가 아닌 의도 한대로 작동해야한다고 생각하고 있습니다. 다행스럽게도 GWT는 동적 인 방식으로 전체 URL을 만드는 방법을 제공합니다.

TaskOptions getUrl() 메서드를 사용해보십시오. Window.alert(url-derived-from-getUrl)을 사용하고 withUrl으로 작성된 URL이 무엇인지 확인하십시오.

당신은 withUrl (팅 URL) 내부에 제대로 URL을 구축 할

GWT.getHostPageBaseUrl(); 

GWT.getModuleBaseUrl(); 

를 사용할 수 있습니다.