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