appengine_在Google的AppEngine上升级到Java 7
appengine
如果您仍在Google AppEngine上運行Java 6應用程序,則將遇到嚴重的麻煩。 現在,AppEngine團隊將隨時發布1.8.9版,該版本將不再支持Java 6應用程序的部署。
現有的應用程序將繼續運行。 但是您可能應該以必要的緊迫性升級應用程序,因為您將不再能夠修復錯誤。
更多維護
大多數PaaS提供商都會非常定期地更新其平臺,以跟上最新的安全修復程序并添加新的服務和API。 在這方面,AppEngine采用了一種非常激進的方法。 當他們認為刪除舊代碼是正確的事情時,他們不會等待客戶。
這些更新通常是向后兼容的,但是,如果有足夠的時間,將會有一些破壞舊代碼的更新。 Java 7向后兼容Java6。但是某些庫卻不兼容。
好東西嗎
我嘗試將這項維護工作視為一件好事。 它迫使您緊跟最新技術,就安全而言,就我而言,這是最重要的。
在Google的AppEngine上升級到Java 7
因此,讓我們進入細節。 在大多數情況下,此升級就像更改用于構建和部署到AppEngine的JDK一樣簡單。 就我而言,不是。
主要的問題是我正在使用的JDO / DataNucleus / AppEngine組合的某些部分不適用于Java7。根據它們各自的頁面,這應該不是問題,但它不適用于運行時錯誤。表示版本不兼容。
我一直想升級DataNucleus ,所以我想“為什么不呢?” 這變成了長時間的牛剃毛 。
首先, 升級appengine-datanucleus ,這是AppEngine和DataNucleus之間的集成庫。 當前有3個版本 。 僅最新版本使用不推薦使用的代碼。 遺憾的是,據我所知,該版本尚未正式發布。 因此,經過深思熟慮之后,我最終選擇了2.1版(我希望今年擺脫JDO的支持,改用Objectify)
接下來,我發現這也意味著我需要遷移數據存儲內容 。 根本沒有很好的記錄 。 即使您設法找到該Wiki文章,也使用的是舊庫。 我無法在我的項目上進行此工作,也沒有時間也沒有能力找出AppEngine的新mapreduce框架。
最終,我創建了一個可以執行升級的小型任務隊列。 幸運的是,實體的數量足夠小,可以正常工作。 如果您有更大的數據集,您可能已經知道如何使用mapreduce了。
這樣一來,仍然會彈出一些小錯誤。 他們都被我的單元測試所抓住。 例如,事實證明, 從數據存儲區加載空集合現在可以返回null而不是空collection 。 可以解決的小問題,但是如果在某個地方進行了記錄,那就太好了。
結論
確保花時間在AppEngine上進行Java 6到7的升級。 這可能對您來說是透明的,但是如果不是這樣怎么辦?
翻譯自: https://www.javacodegeeks.com/2014/01/upgrading-to-java-7-on-googles-appengine.html
appengine
總結
以上是生活随笔為你收集整理的appengine_在Google的AppEngine上升级到Java 7的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑主板的数据线有哪些(电脑数据线是哪个
- 下一篇: 放了三四年的蜂蜜还能吃吗(变质后的蜂蜜是