海外 谷歌 app api

功能API

使用Capabilities API,您的应用程序可以检测特定API功能的停机和计划停机时间。 您可以使用此API来检测应用程序何时不可用,然后绕过它来减少应用程序的停机时间。

我们该如何处理呢?

1.优雅:创建一个切入所有数据存储写入的方面,并检查其功能。 失败,出现友好错误消息。
2.不太优雅:在每次写入之前将功能检查添加到存储库代码中。 失败,出现友好错误消息。
3.快速:写过滤器,包装整个事务并检查数据存储写。

我们如何在本地环境中对此进行测试?

1.没有API挂钩。 目前,我无法找到或使用GAE Java代理来测试功能调用。
2.解决方案是使用模拟能力服务创建一个不同的版本,该服务能够返回CapabilityStatus.DISABLED标志并进行测试。

由于时间原因,我选择了快速方法。 稍后,我将尝试重新讨论此问题,并合并AspectJ或Google Juice以利用各个方面来解决这一明显的跨领域问题。

Map<Capability, Boolean> apis = new HashMap<Capability, 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

海外 谷歌 app api

海外 谷歌 app api_Google App Engine Java功能和命名空间API相关推荐

  1. Google App Engine Java功能和命名空间API

    功能API 使用Capabilities API,您的应用程序可以检测特定API功能的停机和计划停机时间. 您可以使用此API来检测应用程序何时不可用,然后绕过它来减少应用程序的停机时间. 我们该如何 ...

  2. 使用Netbeans开发App Engine Java

    如果您刚开始进行App引擎开发,那么您可能会感觉Eclipse是首选的IDE. 而且,Google还单独提供了它的Eclipse IDE 官方插件 . 但是不使用Eclipse的人呢? 当然,您始终可 ...

  3. app engine_Google App Engine:在您自己的域中托管应用程序

    app engine 在Google App Engine中创建新应用程序时,您将获得一个域名" yourapp.appspot.com". 但是,谁会想要以这样的后缀托管他们的应 ...

  4. 谷歌滤镜软件叫什么_谷歌app爆红的拍照功能:你最像名画中的谁?

    原标题:谷歌app爆红的拍照功能:你最像名画中的谁? 谷歌一个名叫艺术文化的app是世界上最大的线上博物馆.虽然这个app2016年就已经有了,不过直到最近才爆红,原因是开发人员在其中添加了一个有趣的 ...

  5. 如何在海外高效的推广APP?海外推广产品该注意哪些点?

    如今全球互联网人口红利转移到东南亚.南亚.南美等地区,全球移动互联网硬件环境成熟,海外智能手机有一定的数量规模,同时全球5G网络连接量提升,整体移动互联网网速增加,发展环境变好,带动了休闲娱乐应用发展 ...

  6. Frida Hook Android App 进阶用法之 Java 运行时

    FridaHookAndroid 本文旨在覆盖使用 Frida 对 Android App 进行 hook 的绝大多数场景.文章提到的所有代码以及被测 App,详见:https://github.co ...

  7. 人脸识别撞脸名画_测测自己的自拍最像哪幅世界名画?谷歌这款App逆天了

    原标题:测测自己的自拍最像哪幅世界名画?谷歌这款App逆天了 一款匹配人脸与著名画作的谷歌APP在周末引发了一波自拍狂潮. 本周末,谷歌旗下的数字博物馆App,Google Arts and Cult ...

  8. android自带语音识别,Android如何实现自带谷歌语音识别垃圾分类APP

    基于Android实现自带谷歌语音识别垃圾分类APP 此次做的项目是垃圾分类APP,涵盖内容各类垃圾的分类详情,关于软件的介绍,分享软件,语音识别,基于API搜索.文章末尾附源码,源码全注释. 项目主 ...

  9. 互联网日报 | 1月15日 星期五 | 百度App上线出行政策查询功能;铁路部门调整车票预售期为15天;知乎十周年宣布品牌升级...

    今日看点 ✦ 铁路部门调整车票预售期为15天,开车前8天及以上退票免费 ✦ 百度App上线出行政策查询功能,全国各地隔离政策快速了解 ✦ 联想集团计划科创板上市融资100亿,选择中金作为保荐人 ✦ 知 ...

最新文章

  1. robot简单功能测试脚本设计(例子)
  2. mysql5.6 thread pool_mysql5.6 thread pool
  3. 让你的输入框使用Google云语音输入技术
  4. EMNLP 2020 | 基于Wasserstein距离的正则化序列表示
  5. 使用QT的一些小Tipster
  6. elementUI vxe-table结合使用(通用表格)
  7. Qt5:渐变效果的实现
  8. 【写作技巧】毕业论文格式要求
  9. python气象绘图速成_气象数据可视化——利用Python绘制温度平流
  10. Atitit.软件控件and仪表盘(23)--多媒体子系统--视频输出切换控制cvbs av s-video Ypbpr pal ntsc
  11. 【POJ 1113】Wall【凸包+一点思维】
  12. 下载pyboard的flash中的驱动程序_HASP加密狗驱动程序没有安装成功如何解决
  13. visio 2003密钥
  14. 企业选人的三个阶段和几个标准
  15. Django Hello,Word!(Windows10)
  16. 利用PHPExcel转Excel饼图
  17. 【杂谈】想成为机器学习学霸?先学会做笔记吧(Evernote,BoostNote,Leanote等)
  18. matlab启动慢的解决方法
  19. TopK Question
  20. 金属射流、门罗效应和密室杀人

热门文章

  1. 数字奇数和偶数的判断
  2. 时间格式转换2020-04-09T23:00:00.000+08:00
  3. 旅游系统_数字洛江智慧旅游系统助力提升旅游安全水平
  4. jdk8 获取上一个月时间_JDK 10:FutureTask获取一个toString()
  5. thymeleaf与jsp_PagingAndSortingRepository –如何与Thymeleaf一起使用
  6. hazelcast 使用_使用HazelCast进行Hibernate缓存:JPA缓存基础知识
  7. java cr_WildFly 10 CR 2发布– Java EE 7,Java 8,Hibernate 5,JavaScript支持热重载
  8. orcad自上而下_开发自上而下的Web服务项目
  9. Java 14的新功能
  10. file.getpath_Java中File的getPath(),getCanonicalPath()和getAbsolutePath()之间的区别...