Я хочу разработать свое первое приложение 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 никаких проблем, и я должен, вероятно, искать проблемы в другом месте, но я хотел бы услышать некоторые идеи, что пошло не так.
Нет, он не работает с косой чертой или без нее. – Rabas
Я не знаком с GWT, но вы определяете функцию под названием «login» и не называете ее нигде. Как называется логин? Обработчик, упомянутый в app.yaml, должен быть сервлетом, и стандартные методы сервлетов вызываются на него для обработки запросов. –
Все, что нужно было, это перезагрузка системы ... Она отлично работает сейчас, спасибо за помощь ... – Rabas