带有 GAE 的 Ninja 框架:访问 google 应用引擎开发控制台

Posted

技术标签:

【中文标题】带有 GAE 的 Ninja 框架:访问 google 应用引擎开发控制台【英文标题】:Ninja framework with GAE: accessing the google app engine development console 【发布时间】:2016-12-31 23:12:24 【问题描述】:

通过 Ninja 框架使用 GAE 时,我似乎无法访问通常位于 http:localhost:8080/_ah/admin 的开发控制台。 这是允许您查看数据存储、日志等的控制台。我如何访问它?

【问题讨论】:

至少在 python 中,管理服务器的端口可能会根据应用程序的结构而改变。它在 devserver 启动时显示在运行日志中。尝试使用显示的 URL 而不是 http:localhost:8080 @Dan Cornilescu 谢谢 - 但我检查了显示的 URL,它仍然是标准的 localhost:8080/_ah/admin。虽然看起来忍者正在捕捉它并显示它自己的自定义路线未找到页面。 那么你有忍者配置工作在你面前:) @Dan Cornilescu 美好时光,我想我解决了,我会尽快发布答案。 【参考方案1】:

所以我通过查看 ninja-appengine github 自述文件中提供的示例 ninja-appengine 应用程序解决了这个问题。我注意到他们的示例应用程序没有遇到同样的问题,这是由于包含了我丢失的 conf/ServletModule.java 文件。下面的代码做了两件事:

它通过 Java 代码插入 Objectify 过滤器,而不是要求通过 web.xml 包含 objectify 过滤器。

其次,它使 _ah/admin 路径在开发环境中运行时可见。请注意,我刚刚复制了示例 ninja-appengine Web 应用程序中给出的代码:

包配置;

导入ninja.servlet.NinjaServletDispatcher;

导入 com.google.appengine.api.utils.SystemProperty; 导入 com.google.inject.Singleton; 导入 com.googlecode.objectify.ObjectifyFilter;

公共类 ServletModule 扩展 com.google.inject.servlet.ServletModule

@Override
protected void configureServlets() 

    bind(NinjaServletDispatcher.class).asEagerSingleton();

    // Clean objectify instances with that filter:
    bind(ObjectifyFilter.class).in(Singleton.class);
    filter("/*").through(ObjectifyFilter.class);

    if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) 

        serve("/*").with(NinjaServletDispatcher.class);

     else 
        // do not serve admin stuff like _ah and so on...
        // allows to call /_ah/admin and so on
        serveRegex("/(?!_ah).*").with(NinjaServletDispatcher.class);
    


【讨论】:

以上是关于带有 GAE 的 Ninja 框架:访问 google 应用引擎开发控制台的主要内容,如果未能解决你的问题,请参考以下文章

Errai 对 GAE 平台的支持

如何从 Grails 服务 (JPA + GAE) 中访问 EntityManager

使用 GWT-TestCase 和 GAE 测试 RPC 调用的示例

Flask 和 Webapp2 (GAE) 的区别

如何使用带有 Ninja 生成器的 CMake 将修饰符标志传递给存档文件(ar)

Ninja 框架使用 Maven 安装错误