簡體   English   中英

Servlet中的App Engine UserService調用引發線程異常-Eclipse Java

[英]App Engine UserService calls in servlet throw thread exception - Eclipse java

我在Eclipse中有一個使用GWT的基本Google App Engine Java項目。 我按照說明在Eclipse中設置了App Engine SDK和最新的GWT,並在Windows中將環境變量路徑設置為指向SDK根文件夾。

通過單擊起始頁上的登錄鏈接(在web.xml文件中定義)調用登錄servlet時,調用將按預期路由到我的HttpServlet處理程序類。 這樣就可以了。 在代碼中,我通過factory方法創建了UserService,但是任何調用(例如isUserLoggedIn()或createLoginURL())都會導致異常 我希望問題很明顯,但是我花了數小時試圖找出是什么原因導致了這個問題,但是沒有運氣:(

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws IOException, ServletException {

    UserService userService = UserServiceFactory.getUserService();
    if (userService.isUserLoggedIn()) {

這是調用isUserLoggedIn()時的控制台輸出:

java.lang.IllegalStateException: Operation not allowed in a thread that is neither the original request thread nor a thread created by ThreadManager
at com.google.appengine.api.users.UserServiceImpl.getCurrentEnvironmentOrThrow(UserServiceImpl.java:152)
at com.google.appengine.api.users.UserServiceImpl.isUserLoggedIn(UserServiceImpl.java:96)

使用這種類型的開發環境的任何人看起來都熟悉嗎? 我希望它是項目或xml配置文件中的簡單設置,或者是我所缺少的東西。 幾年前,我已經成功運行了類似的代碼,但只是回到了GAE的工作,所以servlet或項目設置可能已經改變了一些重要的事情。 非常感謝您的幫助和提示。

要使用App Engine API,您必須使用Development App Server在本地運行/調試應用程序 在Eclipse中,右鍵單擊項目,然后選擇運行方式> App Engine調試方式> App Engine 有關更多詳細信息,請參閱文檔

要啟用GWT,您需要通過右鍵單擊項目並選擇Configure> Enable GWT SDM builder配置GWT SDM Builder

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM