谷歌应用引擎

如果您遵循某些重要步骤,Tapestry应用程序应该可以在GoogleAppEngine(GAE)上正常运行。

所需配置设置

  • 设置磁带.生产模式为true(关闭实时类重载等)

  • 设置限制性环境配置符号为true(以防止Tapestry将异常报告和缓存的资源写入文件系统)

  • 设置胶带.螺纹-工具启用配置符号设置为false(以防止Tapestry的PeriodicExecutor尝试派生线程)

示例配置

应用程序的模块类(通常是AppModule.java)可以在设置其他符号的位置设置这些符号(在名为contributeApplicationDefaults的方法中,或者在用@ApplicationDefaults和@Contribute注释的方法中),如下所示。

应用程序模块(部分)
@应用程序默认值@Contribute(SymbolProvider.class)公共静态void configureMyApp(MappedConfiguration(映射配置<字符串,字符串>配置)         {configuration.add(SymbolConstants.PRODUCTION_MODE,“true”);configuration.add(SymbolConstants.RESTRICTIVE_ENVIRONMENT,“true”);configuration.add(IOCSymbols.THREAD_POOL_ENABLED,“false”);。。。     }

注意:通常,只有在生产和QA/测试环境中才需要将生产模式设置为true,但您可以使用JVM系统属性覆盖该符号(-Dtapestry.production-mode=错误)在这些环境中。

可序列化对象

  • 确保存储在servlet会话中的所有对象(尤其是那些用@SessionState和@session Attribute注释的对象)实际上都是可序列化类型。否则,您可能会看到奇怪的行为,其中对象似乎会丢失其会话值。

文件上传

  • 如果使用Tapestry-upload模块(或任何文件上传机制),则需要确保将其配置为在文件系统中存储临时上传的文件。请参见上传文件–尤其是上传.存储-阈值符号,应设置为较大的值。

其他考虑因素

除了上述设置之外,Tapestry应该不会妨碍您在GoogleAppEngine下运行应用程序。然而,您仍然需要遵守GAE的所有常规约束(与任何应用程序、Tapestry或其他应用程序一样)。请仔细阅读谷歌的文档,了解创建与GAE兼容的应用程序的一般指导原则。