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

海外 谷歌 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

$(document).ready() 和 window.onload 方法比较

说明 页面加载文档完毕后&#xff0c;浏览器会通过 Javascript 为 DOM 元素添加事件。 Javascript 使用 window.onload 方法&#xff0c;而 jQuery 使用 $(document).ready() 方法。 $(document).ready() 方法可以极大的提高 Web 应用程序的相应速度&#xff0c;因为该方法可以…

python在excel中查找内容_用python实现excel中查找指定字符的行信息

标签&#xff1a;print python实现 run div col with open value row 信息用python实现excel中查找指定字符的行信息strr # 字符串 or 字符filename # 文件名路径with open(filename,‘r‘) as fp:for line in fp:if strr in line:print (line.rows)将会输出ex…

使用活动记录执行CRUD

本文是我们学院课程的一部分&#xff0c;标题为jOOQ –类型安全的数据库查询 。 在SQL和特定关系数据库很重要的Java应用程序中&#xff0c;jOOQ是一个不错的选择。 当JPA / Hibernate抽象过多&#xff0c;JDBC过多时&#xff0c;这是一种替代方法。 它显示了一种现代的领域特…

java undo_用JAVA实现Undo、Redo,Copy、Paste、Cut_java

programlover原作package clipborad;import javax.swing.JTextArea;import java.awt.datatransfer.*;import java.awt.*;import javax.swing.*;import java.io.*;import javax.swing.undo.*;http://www.gaodaima.com/64851.html用JAVA实现Undo、Redo,Copy、Paste、Cut_javaimpo…

项目管理控件Project Management Library

Project Management Library是一款项目管理控件&#xff0c;包含了项目管理相关的Windows客户端控件,如&#xff1a;ProjectView, ResourcesView, ScheduleView, StatisticsView。支持所有.NET语言&#xff0c;可以用于Windows桌面应用程序,具有标准的界面和操作自定义设置、拖…

maven aspectj_使用Spring AspectJ和Maven进行面向方面的编程

maven aspectjSpring框架附带AOP支持。 实际上&#xff0c;如Spring参考文档中所述 &#xff0c; “ Spring的关键组件之一是AOP框架。 尽管Spring IoC容器不依赖于AOP&#xff0c;这意味着您不需要使用AOP&#xff0c;但AOP是对Spring IoC的补充&#xff0c;以提供一种功能强…

ios 查询mysql数据库操作系统_iOS数据库FMDB--增删改查(模糊查询)详细介绍

简介&#xff1a;很早就想整理一下数据库的使用了&#xff0c;刚好最近接触较多&#xff0c;加之可以安排出空余的时间&#xff0c;所以瓜子我贡献出自己喝咖啡的时间整理一下FMDB的使用&#xff0c;以下是对FMDB的介绍以及基本使用 --- insert、delete、update、select。其中s…

java arraylist 重复_Java中ArrayList去除重复元素

Java中ArrayList去除重复元素//删除ArrayList中重复元素public static void removeDuplicate(ArrayList list) {for ( int i 0 ; i for ( int j list.size() - 1 ; j > i; j -- ) {ForCytoLevel3 jjj (ForCytoLevel3)list.get(j);ForCytoLevel3 i…

c#时间转换

转自 http://blog.csdn.net/yysyangyangyangshan/article/details/6782874最近做ASP.NET的一个项目&#xff0c;获取时间的时候&#xff0c;由于我的系统时间设置了上午和下午&#xff0c;结果DateTime.Now老是写不到数据库中&#xff0c;然后&#xff0c;上网查了个[csharp]vi…

SQL Server 2008 R2如何生成带数据的数据库脚本

1.对想要复制的数据库右键&#xff0c;“任务”&#xff0c;“生成脚本” 2.下面需要注意的是&#xff0c;默认情况下&#xff0c;只会生成仅架构的脚本&#xff0c;也就是说仅仅有表结构&#xff0c;而没有数据的空壳。所以需要额外的设置。 在设置脚本编写选项&#xff0c;选…

java saxreader_JAVA解析XML,SAXReader无法使用

写了段代码要解析XML文件。for (int p 0; p < files.length; p) {System.out.println("Dom4jxml2:333::"p);if (files[p].isFile() && files[p].getName().startsWith("CN_MT1101_")) {File f new File(files[p].getPath());System.out.print…

methodhandle_概览Java 7 MethodHandle及其用法

methodhandle由于Java的Reflection API&#xff0c;我们已经能够在运行时检查和更改程序执行。 特别是&#xff0c;我们可以在运行时观察接口/类/方法和字段&#xff0c;而无需在编译时知道它们的名称。 JDK 7为这种动态/运行时检查引入了一个新的参与者&#xff0c;即方法句柄…

quartz CronExpression表达式

一个cron表达式有至少6个&#xff08;也可能7个&#xff09;有空格分隔的时间元素。按顺序依次为1.秒&#xff08;0~59&#xff09;2.分钟&#xff08;0~59&#xff09;3.小时&#xff08;0~23&#xff09;4.天&#xff08;月&#xff09;&#xff08;0~31&#xff0c;但是你需…

java两个字符串前缀_java – 找到两个字符串的最长公共前缀

我想找到两个字符串的最长公共前缀.有没有办法循环我的最后几个if语句,以便我可以结束彼此不匹配的最后几个字符&#xff1f;System.out.println("Enter the first string: ");String s input.nextLine();System.out.println("Enter the second string: "…

Codeforces 427 D. Match amp; Catch

后缀数组.... 在两个串中唯一出现的最小公共子串 D. Match & Catchtime limit per test1 secondmemory limit per test512 megabytesinputstandard inputoutputstandard outputPolice headquarter is monitoring signal on different frequency levels. They have got two …

gwt 同步和异步_GWT Spring和Hibernate进入数据网格世界

gwt 同步和异步利用Infinispan Data Grid的功能最大化Hibernate性能。 一个GWT &#xff0c; Spring &#xff0c; JPA &#xff0c; Hibernate &#xff0c; Infinispan集成教程。 在本教程中&#xff0c;我们将讨论如何将Infinispan用作Hibernate二级缓存提供程序。 Infinis…

java分页 jar_零基础学java之javaEE,分页

【分页】一 分页1.1分页概念引入什么是分页?分页(英语&#xff1a;Paging)&#xff0c;是一种操作系统里存储器管理的一种技术&#xff0c;可以使电脑的主存可以使用存储在辅助存储器中的数据。操作系统会将辅助存储器(通常是磁盘)中的数据分区成固定大小的区块&#xff0c;称…

查看修改MySQL字符集

查看修改MySQL字符集 http://blog.sina.com.cn/s/blog_70ac6bec01016fts.html 查看修改MySQL字符集 (2012-08-22 09:53:21) 转载▼标签&#xff1a; 字符集 mysql数据库 mysql字符集查看 mysql启动命令 修改mysql字符集 分类&#xff1a; 网站开发MySQL字符集多种多样…

java上传文件需要的依赖_SpringBoot使用commons-fileupload上传文件的类

网上找了一些&#xff0c;都是基本介绍&#xff0c;没有直接就可以使用类&#xff0c;在实际工作当中都有适合当前项目的上传文件的方法&#xff0c;本人写了一个类&#xff0c;比较基础&#xff0c;但呆以满足项目的上传文件功能&#xff0c;使用了commons-fileupload这个组件…

ArcGIS for Android示例解析之离线地图-----LocalTiledLayer

转自&#xff1a;http://blog.csdn.net/wozaifeiyang0/article/details/7327423 LocalTiledLayer 看到这个标题是否是很激动&#xff0c;如题&#xff0c;该示例就是添加一个离线地图&#xff0c;这应该是很多开发人员期盼已久的功能了吧&#xff0c;正式版一处这个应该是一个很…