繁体   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