【发布时间】:2017-12-10 18:11:11
【问题描述】:
我在 Eclipse 中有一个使用 GWT 的基本 Google App Engine java 项目。我按照说明在 Eclipse 中设置应用引擎 SDK 和最新的 GWT,并在 Windows 中设置环境变量路径以指向 SDK 根文件夹。
当通过单击起始页上的登录链接(如 web.xml 文件中定义)调用登录 servlet 时,调用将按预期路由到我的 HttpServlet 处理程序类。所以效果很好。在代码中,我通过工厂方法创建了 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 或项目设置而改变。非常感谢您提供的任何帮助和提示。
【问题讨论】:
-
您能否添加更多有关您如何启动 Web 应用程序的详细信息?您在使用Cloud Tools for Eclipse 吗?还是较旧的(最近已弃用)Google Plugin for Eclipse?
-
抱歉,我错过了您的后续问题。我为 Eclipse 安装了 Cloud Tools,尽管我承认获取应用引擎工具以及 GWT 和 Objectify 的安装/配置进度有点令人困惑。有没有办法告诉?可能有些事情不对劲。当我调试时,我选择“GWT Development Mode with Jetty”选项。
标签: java eclipse google-app-engine gwt