日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

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

發(fā)布時間:2023/12/3 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Google App Engine Java功能和命名空间API 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
功能API

使用Capabilities API,您的應(yīng)用程序可以檢測特定API功能的停機(jī)和計劃停機(jī)時間。 您可以使用此API來檢測應(yīng)用程序何時不可用,然后繞過它來減少應(yīng)用程序的停機(jī)時間。

我們該如何處理,這是個折衷方案?

1.優(yōu)雅:創(chuàng)建一個切入所有數(shù)據(jù)存儲寫入的方面,并檢查其功能。 失敗,出現(xiàn)友好錯誤消息。
2.不太優(yōu)雅:在每次寫入之前將功能檢查添加到存儲庫代碼中。 失敗,出現(xiàn)友好錯誤消息。 3.快速:寫過濾器,用于包裝整個事務(wù)并檢查數(shù)據(jù)存儲寫入。

我們?nèi)绾卧诒镜丨h(huán)境中對此進(jìn)行測試?

1.沒有API掛鉤。 目前,我還無法找到或使用GAE Java代理來測試功能調(diào)用。
2.解決方案是使用模擬能力服務(wù)創(chuàng)建一個不同的版本,該服務(wù)能夠返回CapabilityStatus.DISABLED標(biāo)志并進(jìn)行測試。

由于時間原因,我選擇了快速方法。 稍后,我將嘗試重新討論此問題,并結(jié)合AspectJ或Google Juice來利用各個方面來解決這一明顯的跨領(lǐng)域問題。

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最引人注目的用途之一是多租戶。 多租戶是一種軟件體系結(jié)構(gòu)的名稱,在該體系結(jié)構(gòu)中,運(yùn)行在遠(yuǎn)程服務(wù)器上的一個應(yīng)用程序?qū)嵗秊樵S多客戶端組織(也稱為租戶)提供服務(wù)。

多租戶簡化了租戶的管理和供應(yīng)。 您可以提供更簡化的,定制的用戶體驗(yàn),還可以在單??個數(shù)據(jù)庫架構(gòu)下聚合不同的數(shù)據(jù)孤島。 結(jié)果,您的應(yīng)用程序在擴(kuò)展時變得更具可擴(kuò)展性和成本效益

由于所有租戶共享相同的數(shù)據(jù)庫架構(gòu),因此數(shù)據(jù)變得更容易在租戶之間進(jìn)行隔離和分析。

多租戶與多實(shí)例不同:

  • 在多實(shí)例中,為不同的客戶組織設(shè)置了不同的軟件實(shí)例。
  • 在多實(shí)例環(huán)境中,應(yīng)用程序通常不了解客戶的差異,而在多租戶環(huán)境中,應(yīng)用程序可用于隔離和分區(qū)數(shù)據(jù)。

Google App Engine中的Namespaces API使創(chuàng)建Google App Engine數(shù)據(jù)孤島變得容易。 該API是通過名為“命名空間管理器”的新程序包實(shí)現(xiàn)的。

在名稱空間管理器中設(shè)置名稱空間時,這些API將獲取當(dāng)前名稱空間并在全局范圍內(nèi)使用它。

任何App Engine請求都可以訪問任何名稱空間,而使應(yīng)用程序可以跨多個名稱空間實(shí)施訪問控制策略。 在這種方法中,應(yīng)用程序負(fù)責(zé)設(shè)置工作名稱空間。

支持名稱空間的API:

1.數(shù)據(jù)存儲
2. Memcache
3.任務(wù)隊列

使用Namespaces API,只需為每個租戶指定一個唯一的命名空間字符串,就可以在租戶之間輕松地對數(shù)據(jù)進(jìn)行分區(qū)。 您只需使用“名稱空間管理器”為全局每個租戶設(shè)置名稱空間。 默認(rèn)情況下,啟用了名稱空間的API始終使用當(dāng)前名稱空間。

在數(shù)據(jù)存儲區(qū)中,名稱空間管理器會將名稱空間應(yīng)用于每個鍵和查詢對象。

沒有Java API可以顯式設(shè)置鍵或查詢的名稱空間,所有這些操作都是通過名稱空間管理器進(jìn)行的。

參考:我們的JCG合作伙伴 ReflectiveThought的 Google App Engine Java功能和命名空間API 。

相關(guān)文章:

  • Java Code Geeks Andygene Web原型
  • 每個程序員都應(yīng)該知道的事情
  • Spring MVC開發(fā)–快速教程
  • SmartGWT入門,提供出色的GWT界面
  • GWT 2 Spring 3 JPA 2 Hibernate 3.5教程

翻譯自: https://www.javacodegeeks.com/2011/04/app-engine-capabilities-namespaces-api.html

總結(jié)

以上是生活随笔為你收集整理的Google App Engine Java功能和命名空间API的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。