2010-06-17 2 views
3

Я хочу разработать свое первое приложение AppEngine, которое также будет использовать GWT. Поскольку у меня нет опыта работы с GWT и AppEngine, я начал с учебных пособий на сайте GWT, и после успешного завершения Getting Started, я начал работать с http://code.google.com/webtoolkit/doc/latest/tutorial/appengine.htmlServlet NOT_FOUND (GWT + AppEngine)

Но у меня возникла проблема, и у меня нет подсказка почему :)

Я пытаюсь проверить, зарегистрирован ли пользователь, как в разделе «Персонализация приложения с помощью службы пользователя» в учебнике.

Но когда я запускаю сам код, я получаю сообщение об ошибке:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> 
<title>Error 404 NOT_FOUND</title> 
</head> 
<body><h2>HTTP ERROR 404</h2> 
<p>Problem accessing /parkmeweb/login. Reason: 
<pre> NOT_FOUND</pre></p><hr /><i><small>Powered by Jetty://</small></i><br/>             
</body> 
</html> 

А вот мои файлы:

LoginService

@RemoteServiceRelativePath("login") 
public interface LoginService extends RemoteService { 
    public LoginInfo login(String requestUri); 
} 

LoginServiceAsync

public interface LoginServiceAsync { 
    public void login(String requestUri, AsyncCallback<LoginInfo> async); 
} 

LoginServiceImpl

public class LoginServiceImpl extends RemoteServiceServlet implements 
     LoginService { 

    public LoginInfo login(String requestUri) { 
     UserService userService = UserServiceFactory.getUserService(); 
     User user = userService.getCurrentUser(); 
     LoginInfo loginInfo = new LoginInfo(); 

     if (user != null) { 
      loginInfo.setLoggedIn(true); 
      loginInfo.setEmailAddress(user.getEmail()); 
      loginInfo.setNickname(user.getNickname()); 
      loginInfo.setLogoutUrl(userService.createLogoutURL(requestUri)); 
     } else { 
      loginInfo.setLoggedIn(false); 
      loginInfo.setLoginUrl(userService.createLoginURL(requestUri)); 
     } 
     return loginInfo; 
    } 

} 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE web-app 
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
    "http://java.sun.com/dtd/web-app_2_3.dtd"> 

<web-app> 

    <!-- Servlets --> 

    <servlet> 
    <servlet-name>loginService</servlet-name> 
    <servlet-class>com.parkme.parkmeweb.server.LoginServiceImpl</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>loginService</servlet-name> 
    <url-pattern>/parkmeweb/login/</url-pattern> 
    </servlet-mapping> 

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

</web-app> 

Все это я вызывался из onModuleLoad:

public void onModuleLoad() { 
    LoginServiceAsync loginService = GWT.create(LoginService.class); 
    loginService.login(GWT.getHostPageBaseURL(), new AsyncCallback<LoginInfo>() { 
     public void onFailure(Throwable error) { 
      //this is where error is thrown 
      Window.alert(error.getMessage()); 
     } 

     public void onSuccess(LoginInfo result) { 
     loginInfo = result; 
     if(loginInfo.isLoggedIn()) { 
      return; 
     } else { 
      loadLogin(); 
     } 
     } 
    }); 
} 

Просто глядя на это, I C никаких проблем, и я должен, вероятно, искать проблемы в другом месте, но я хотел бы услышать некоторые идеи, что пошло не так.

ответ

1

Обработчик предназначен для/parkmweweb/login /, но вы посещаете/parkmeweb/login - без конечной косой черты.

+0

Нет, он не работает с косой чертой или без нее. – Rabas

+0

Я не знаком с GWT, но вы определяете функцию под названием «login» и не называете ее нигде. Как называется логин? Обработчик, упомянутый в app.yaml, должен быть сервлетом, и стандартные методы сервлетов вызываются на него для обработки запросов. –

+1

Все, что нужно было, это перезагрузка системы ... Она отлично работает сейчас, спасибо за помощь ... – Rabas

0

Одиночная проблема. Но я попытался развернуть его в Google. Сервлет доступен и без проблем. Похоже, это проблема с GWT + Eclipse, точно не знаю где. Надеюсь, они могут это исправить, другое мудреное тестирование сложно.

0

Я только что перезапустил Eclipse, и это исправило проблему.

Проблема началась, когда я переключился с jre1.7 на jre1.6 как на x64.

Смежные вопросы