php网站开发怎么接私活,网站结构,360优化大师官方下载最新版,河南省建设工程信息网查询功能API 使用Capabilities API#xff0c;您的应用程序可以检测特定API功能的停机和计划停机时间。 您可以使用此API来检测应用程序何时不可用#xff0c;然后绕过它来减少应用程序的停机时间。 我们该如何处理#xff0c;这是个折衷方案#xff1f; 1.优雅#xff1a;创… 功能API 使用Capabilities API您的应用程序可以检测特定API功能的停机和计划停机时间。 您可以使用此API来检测应用程序何时不可用然后绕过它来减少应用程序的停机时间。 我们该如何处理这是个折衷方案 1.优雅创建一个切入所有数据存储写入的方面并检查其功能。 失败出现友好错误消息。 2.不太优雅在每次写入之前将功能检查添加到存储库代码中。 失败出现友好错误消息。 3.快速写过滤器用于包装整个事务并检查数据存储写入。 我们如何在本地环境中对此进行测试 1.没有API挂钩。 目前我还无法找到或使用GAE Java代理来测试功能调用。 2.解决方案是使用模拟能力服务创建一个不同的版本该服务能够返回CapabilityStatus.DISABLED标志并进行测试。 由于时间原因我选择了快速方法。 稍后我将尝试重新讨论此问题并结合AspectJ或Google Juice来利用各个方面来解决这一明显的跨领域问题。 MapCapability, Boolean apis new HashMapCapability, Boolean();public void init(FilterConfig filterConfig) throws ServletException {apis.put(Capability.DATASTORE, true); apis.put(Capability.MEMCACHE, false);
}public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {HttpServletResponse httpResponse (HttpServletResponse)res;HttpServletRequest httpRequest (HttpServletRequest)req;CapabilitiesService service CapabilitiesServiceFactory.getCapabilitiesService();for(Map.Entry api : apis.entrySet()) {if(api.getValue()) {CapabilityStatus status service.getStatus(api.getKey()).getStatus();if (status ! CapabilityStatus.ENABLED) {log.warn(API api.getKey().getPackageName() : api.getKey().getName() has been disabled!);httpResponse.sendRedirect(NEPAL_RES_HOST /html/read-only.html);return; }} } chain.doFilter(req, res);
} 命名空间API 在讨论此API之前让我们介绍一下Multitenancy的概念。 名称空间API最引人注目的用途之一是多租户。 多租户是一种软件体系结构的名称在该体系结构中运行在远程服务器上的一个应用程序实例为许多客户端组织也称为租户提供服务。 多租户简化了租户的管理和供应。 您可以提供更简化的定制的用户体验还可以在单个数据库架构下聚合不同的数据孤岛。 结果您的应用程序在扩展时变得更具可扩展性和成本效益 由于所有租户共享相同的数据库架构因此数据变得更容易在租户之间进行隔离和分析。 多租户与多实例不同 在多实例中为不同的客户组织设置了不同的软件实例。 在多实例环境中应用程序通常不了解客户的差异而在多租户环境中应用程序可用于隔离和分区数据。 Google App Engine中的Namespaces API使创建Google App Engine数据孤岛变得容易。 该API是通过名为“命名空间管理器”的新程序包实现的。 在名称空间管理器中设置名称空间时这些API将获取当前名称空间并在全局范围内使用它。 任何App Engine请求都可以访问任何名称空间而使应用程序可以跨多个名称空间实施访问控制策略。 在这种方法中应用程序负责设置工作名称空间。 支持名称空间的API 1.数据存储 2. Memcache 3.任务队列 使用Namespaces API只需为每个租户指定一个唯一的命名空间字符串就可以在租户之间轻松地对数据进行分区。 您只需使用“名称空间管理器”为全局每个租户设置名称空间。 默认情况下启用了名称空间的API始终使用当前名称空间。 在数据存储区中名称空间管理器会将名称空间应用于每个键和查询对象。 没有Java API可以显式设置键或查询的名称空间所有这些操作都是通过名称空间管理器进行的。 参考我们的JCG合作伙伴 ReflectiveThought的 Google App Engine Java功能和命名空间API 。 相关文章 Java Code Geeks Andygene Web原型 每个程序员都应该知道的事情 Spring MVC开发–快速教程 SmartGWT入门提供出色的GWT界面 GWT 2 Spring 3 JPA 2 Hibernate 3.5教程 翻译自: https://www.javacodegeeks.com/2011/04/app-engine-capabilities-namespaces-api.html