在那篇文章中,开发了一个简单的Rest示例。 为了测试该应用程序,将文件复制到Web服务器(例如Tomcat )中,然后返回对字符1的http:// localhost:8080 / RestServer / characters / 1信息的访问。
在当前文章中,我将解释如何将应用程序转换为Google App Engine并使用Maven部署到Google的基础架构中。 当然,在这种情况下,我们将部署Rest Spring MVC应用程序,但是可以使用相同的方法将Spring MVC Web应用程序(或使用其他Web框架开发的任何其他应用程序)迁移到GAE。
首先,显然,您应该创建一个Google帐户并注册一个新的应用程序 (记住名称,因为它将在下一步中使用)。 之后,您可以开始迁移。
需要进行三个更改,创建定义应用程序名称的appengine-web.xml ; 使用Google帐户信息将服务器标记添加到settings.xml,并修改pom.xml以添加GAE插件及其依赖项。
让我们从appengine-web.xml开始。 GAE使用此文件来配置应用程序,并将其创建到WEB-INF目录(与web.xml处于同一级别)。
alexsotoblog
1
false
true
最重要的字段是应用程序标签。 此标记包含我们应用程序的名称(在您注册新的Google应用程序时定义)。
其他标签包括版本,系统属性和环境变量以及其他配置,例如您是否希望预编译以提高性能或应用程序需要会话。
而且您的项目不再需要修改,现在仅会触摸Maven文件。
在settings.xml中 ,应该添加帐户信息:
/media/share/maven_repo
appengine.google.com
[email protected]
my_password
看到这和在Maven中注册任何其他服务器一样容易。
最后是最繁琐的部分,修改pom.xml 。
首先要添加新属性:
/media/share/maven_repo/com/google/appengine/appengine-java-sdk/1.5.5/appengine-java-sdk-1.5.5
alexsotoblog
0.9.0
1.5.5
test
在第一行中,我们定义了Appengine Java SDK的位置。 如果已经安装,则在此标记中插入位置,如果没有,则复制此pom的相同位置,然后将maven存储库目录(在我的情况下为/ media / share / maven_repo)更改为您的目录。 通常,您的Maven存储库位置为/home/user/.m2/repositories 。 Maven将在部署时为您下载SDK 。
下一步是添加Maven GAE存储库。
maven-gae-plugin-repo
http://maven-gae-plugin.googlecode.com/svn/repository
maven-gae-plugin repository
maven-gae-plugin-repo
Maven Google App Engine Repository
http://maven-gae-plugin.googlecode.com/svn/repository/
因为我们的项目是虚拟项目, 所以不使用Datanucleus 。 对于更复杂的项目,需要使用例如JDO进行数据库访问,应添加下一个依赖项:
javax.jdo
jdo2-api
2.3-eb
javax.transaction
transaction-api
com.google.appengine.orm
datanucleus-appengine
1.0.6.final
org.datanucleus
datanucleus-core
1.1.5
runtime
javax.transaction
transaction-api
com.google.appengine
geronimo-jta_1.1_spec
1.1.1
runtime
com.google.appengine
geronimo-jpa_3.0_spec
1.1.1
runtime
如果您使用的是Datanucleus ,则应注册maven-datanucleus-plugin 。 请注意根据您的项目正确配置它。
org.datanucleus
maven-datanucleus-plugin
1.1.4
**/model/*.class
true
ASM
JDO
compile
enhance
org.datanucleus
datanucleus-core
1.1.5
javax.transaction
transaction-api
org.datanucleus
datanucleus-rdbms
1.1.5
org.datanucleus
datanucleus-enhancer
1.1.5
现在,添加了Google App Engine依赖项。
com.google.appengine
appengine-api-1.0-sdk
${gae.version}
com.google.appengine
appengine-tools-api
1.3.7
然后,如果您想测试GAE 功能 (在我们的虚拟项目中未使用),则添加下一个GAE库:
com.google.appengine
appengine-api-labs
${gae.version}
test
com.google.appengine
appengine-api-stubs
${gae.version}
test
com.google.appengine
appengine-testing
${gae.version}
test
接下来的更改是对maven-war-plugin的修改,其中将appengine-web.xml包含到生成的包中:
org.apache.maven.plugins
maven-war-plugin
src/main/webapp
true
**/appengine-web.xml
最后添加maven-gae-plugin并将其配置为将应用程序上传到appspot 。
net.kindleit
maven-gae-plugin
${gaePluginVersion}
appengine.google.com
net.kindleit
gae-runtime
${gae.version}
pom
看到
另外,如果您使用的是maven-release-plugin ,则可以在release:perform目标期间将应用程序自动上传到appspot :
org.apache.maven.plugins
maven-release-plugin
2.2.1
gae:deploy
现在运行gae:deploy目标。 如果您已经安装了Appengine Java SDK ,那么您的应用程序将被上传到您的GAE网站。 但是,如果这是您第一次运行该插件,则会收到错误消息。 不要惊慌,发生此错误是因为Maven插件未在您在
在后例子中,你可以去http://alexsotoblog.appspot.com/characters/1http://alexsotoblog.appspot.com/characters/1和JSON格式的字符信息显示到浏览器中。
正如我在文章开头提到的那样,相同的过程可以用于任何Web应用程序,而不仅仅是Spring Rest MVC 。
由于教学目的,对应用程序pom进行了所有修改。 我的建议是,您要使用GAE相关标签创建父pom ,因此必须上传到Google App Engine的每个项目都来自同一pom文件。
我希望您发现这篇文章有用。
本周,我在devoxx ,在那与我见面;)我将在17日(星期四)13:00发表有关通过聚合和最小化加速Javascript和CSS下载时间的演讲 。
完整的pom文件:
4.0.0
org.springframework
rest
Rest
war
1.0.0-BUILD-SNAPSHOT
1.6
3.0.4.RELEASE
1.6.9
1.5.10
/home/alex/.m2/repository/com/google/appengine/appengine-java-sdk/1.5.5/appengine-java-sdk-1.5.5
alexsotoblog
0.9.0
1.5.5
test
com.sun.xml.bind
jaxb-impl
2.2.4-1
org.codehaus.jackson
jackson-core-lgpl
1.8.5
org.codehaus.jackson
jackson-mapper-lgpl
1.8.5
com.google.appengine
appengine-api-labs
${gae.version}
test
com.google.appengine
appengine-api-stubs
${gae.version}
test
com.google.appengine
appengine-testing
${gae.version}
test
com.google.appengine
appengine-api-1.0-sdk
${gae.version}
com.google.appengine
appengine-tools-api
1.3.7
org.springframework
spring-context
${org.springframework-version}
commons-logging
commons-logging
org.springframework
spring-webmvc
${org.springframework-version}
org.springframework
spring-oxm
${org.springframework-version}
org.aspectj
aspectjrt
${org.aspectj-version}
org.slf4j
slf4j-api
${org.slf4j-version}
org.slf4j
jcl-over-slf4j
${org.slf4j-version}
runtime
org.slf4j
slf4j-log4j12
${org.slf4j-version}
runtime
log4j
log4j
1.2.15
javax.mail
mail
javax.jms
jms
com.sun.jdmk
jmxtools
com.sun.jmx
jmxri
runtime
javax.inject
javax.inject
1
javax.servlet
servlet-api
2.5
provided
javax.servlet.jsp
jsp-api
2.1
provided
javax.servlet
jstl
1.2
junit
junit
4.7
test
org.springframework.maven.snapshot
Spring Maven Snapshot Repository
http://maven.springframework.org/snapshot
false
true
org.springframework.maven.milestone
Spring Maven Milestone Repository
http://maven.springframework.org/milestone
false
maven-gae-plugin-repo
http://maven-gae-plugin.googlecode.com/svn/repository
maven-gae-plugin repository
maven-gae-plugin-repo
Maven Google App Engine Repository
http://maven-gae-plugin.googlecode.com/svn/repository/
org.apache.maven.plugins
maven-compiler-plugin
${java-version}
org.apache.maven.plugins
maven-war-plugin
src/main/webapp
true
**/appengine-web.xml
abc
org.apache.maven.plugins
maven-dependency-plugin
install
install
sources
org.codehaus.mojo
aspectj-maven-plugin
1.2
org.aspectj
aspectjrt
${org.aspectj-version}
org.aspectj
aspectjtools
${org.aspectj-version}
compile
test-compile
true
${java-version}
org.apache.maven.plugins
maven-surefire-plugin
junit:junit
org.codehaus.mojo
tomcat-maven-plugin
1.0-beta-1
net.kindleit
maven-gae-plugin
${gaePluginVersion}
appengine.google.com
net.kindleit
gae-runtime
${gae.version}
pom
下载代码。
音乐: http : //www.youtube.com/watch?v = Nba3Tr_GLZU
参考:来自JCG合作伙伴 Alex Soto 在Google App Engine上的Spring MVC和REST,来自One Jar To Rule All All博客。
相关文章 :
- 使用Spring MVC开发Restful Web服务
- Spring MVC开发–快速教程
- jqGrid,REST,AJAX和Spring MVC集成
- 使用Spring 3.1和基于Java的配置构建RESTful Web服务,第2部分
- Spring MVC3 Hibernate CRUD示例应用程序
- Google AppEngine(GAE)中的多租户
翻译自: https://www.javacodegeeks.com/2011/12/spring-mvc-and-rest-at-google-app.html