1

Google の App Engine を使用するためのテスト アプリケーションを作成しています。デフォルトの UserService を使用してログイン機能を提供したいと考えています。ログインするには、クライアントからサーバーへのリクエスト:

public class ShoppingList implements EntryPoint {

...

private ShoppingListServiceAsync service = (ShoppingListServiceAsync) GWT.create(ShoppingListService.class);

public void onModuleLoad() {
    login();
}

private void login() {
    AsyncCallback callback = new AsyncCallback() {
        @Override
        public void onFailure(Throwable caught) {
            Window.alert("Login failed.");
        }

        @Override
        public void onSuccess(Object result) {
            Window.open((String) result, "_self", "");
        }
    };
    // Get login URL; after login, return to current page.
    service.getLoginURL(GWT.getHostPageBaseURL(), callback);
}
}

サーバーは、クライアントに返されるログイン URL を生成します。

public class ShoppingListServiceImpl extends RemoteServiceServlet implements ShoppingListService {

...

@Override
public String getLoginURL(String returnURL) {
    UserService userService =  UserServiceFactory.getUserService();
    Boolean loggedIn = userService.isUserLoggedIn();
    String url = userService.createLoginURL("http://google.com");
    User user = userService.getCurrentUser();
    return returnURL;
}
}

コードがコンパイルされて実行されます。さて、私の問題は、userService オブジェクトがどういうわけか正しくロードされていないことです。その上で任意のメソッド (isUserLoggedIn() など) を呼び出すと、null ポインター例外がスローされます。私は何が欠けていますか?

4

1 に答える 1

0

UserServiceFactory のコードを投稿していないため、問題の原因を特定するのは困難です。しかし、工場で UserService-Instance が正しくインスタンス化されていないと思います。

于 2013-12-03T14:12:55.447 に答える