Spring Roo是在Java平臺上提供快速應用程序開發的工具。 我已經解釋了何時使用它: http : //www.kai-waehner.de/blog/2011/04/05/when-to-use-spring-roo 。 Spring Roo目前支持兩種針對云計算的解決方案:Google App Engine(GAE)和VMware Cloud Foundry。 兩者都提供了平臺即服務(PaaS)概念。 本文將討論Spring Roo的GAE支持。 在本系列文章的第2部分中將分析Cloud Foundry。
將GAE應用程序部署到云
此處已經存在一篇非常好的介紹性文章,它描述了Spring Roo和GAE的組合: http : //java.dzone.com/articles/creating-application-using 。 簡而言之,在GAE云中部署(CRUD-)應用程序沒有太多工作要做。 您必須選擇另一個數據庫提供程序,在配置文件中輸入GAE應用程序ID,然后使用一個Maven命令(mvn gae:deploy)部署該應用程序。 那就是與“傳統” Roo應用程序的區別。 因此,沒有火箭科學! 盡管如此,開發GAE應用程序還是有一些限制,例如由于NoSQL概念,您不能使用@OneToMany注釋來指定關系。 如果您不遵守規則,部署將分別失敗,應用程序將無法按預期運行。
GAE不僅僅是將傳統的Web應用程序部署到云中
因此,在閱讀了之前的內容之后,得出以下結論:Spring Roo支持將其應用程序部署到GAE云。 因此,一切都很好嗎? 一點都不!
是的,您可以將CRUD應用程序部署到GAE云(如果不使用關系),但是GAE還有很多。 您可以或應該使用“任務隊列”來分割長期運行的工作,使用BigTable數據存儲區和Blob存儲區來存儲數據,使用URL提取服務通過HTTP(S)與其他應用程序進行通信,以及其他一些GAE服務(例如XMPP) ,Memcache,郵件等。 隨著新的GAE版本,可用服務的數量進一步增加。
存在這些GAE服務的原因有幾個:您應該能夠創建一個自動擴展的云應用程序,而無需任何手動服務器配置和類似的東西。 這就是為什么在不為云開發應用程序時,必須使用NoSQL數據庫概念和Fetch URL來代替SQL數據庫,線程,套接字編程以及過去使用的其他技術的原因。 Google開發人員并不是很笨拙,無法支持SQL數據庫,但是對于高度擴展的云應用程序來說,它并不是合適的技術。 關于“ SQL vs NoSQL”的一篇不錯的文章可以在這里找到: http : //java.dzone.com/news/sql-vs-nosql-cloud-which
開發GAE應用程序時缺少幾個Spring Roo命令
Spring Roo沒有特殊的GAE命令。 您使用persistence命令來創建對BigTable的支持,并使用Maven目標來部署GAE應用程序。 此外,沒有GAE命令,盡管您需要使用它們來創建任務隊列,BigTable數據存儲訪問(包括關系),URL提取等。 您必須自己編寫所有代碼,就像沒有Spring Roo一樣。 因此,目前還沒有對GAE的真正支持–與Cloud Foundry相反(我們將在本系列文章的第2部分中看到)。 當然,VMware希望推廣自己的PaaS解決方案,據我所知。 盡管如此,Spring Roo還應該像針對Web框架一樣,為其他解決方案提供良好的支持(與此同時,除了對Vaadin,Flex和JSF的插件可用之外,對Spring MVC和GWT都有官方支持)。
GAE是Java環境中唯一穩定的,可用于生產環境的PaaS解決方案
請注意,GAE是當前Java環境中唯一穩定且可投入生產的PaaS解決方案。 Cloud Foundry或Red Hat OpenShift等其他產品仍處于BETA狀態。 另請注意,存在某些原因導致Google尚未提供SQL數據庫支持。 由于公眾的批評很大,他們將來可能會添加此功能。 但是,在許多要在云中部署應用程序的用例中,都將需要NoSQL數據庫。 因此,我希望Spring Roo在將來的版本中將提供更好的GAE支持。
轉到第2部分
參考: 使用Spring Roo進行快速云開發–第1部分:來自我們JCG合作伙伴 Kai Wahner的Google App Engine(GAE) , 有關Java EE / SOA /云計算的博客。
翻譯自: https://www.javacodegeeks.com/2012/06/rapid-cloud-development-with-spring-roo.html