将App Engine servlet-api-2.5升级到servlet-api-3.1?

时间:2017-06-29 20:15:02

标签: java google-app-engine servlets

随着最近宣布支持Servlet 3.1,我无法弄清楚如何修改App Engine Standard环境以在非Maven构建中使用3.1而不是2.5。

似乎无法升级到3.1?

https://cloudplatform.googleblog.com/2017/06/Google-App-Engine-standard-now-supports-Java-8.html

2 个答案:

答案 0 :(得分:8)

以下是完整示例https://github.com/GoogleCloudPlatform/getting-started-java/tree/master/appengine-standard-java8/helloworld

还附上了跑步程序。

对于Gradle用户:

对于非maven用户,您可以使用gradle。

在gradle构建文件中,第39行表示:https://github.com/GoogleCloudPlatform/getting-started-java/blob/master/appengine-standard-java8/helloworld/build.gradle#L39

providedCompile 'javax.servlet:javax.servlet-api:3.1.0'

在本地运行:

  

gradle appengineRun

如果您没有安装gradle,可以使用 ./ gradlew appengineRun 运行。

使用访问:http://localhost:8080/

对于Maven用户

在pom.xml中,第62到70行表示它正在使用 servlet版本3.1.0 https://github.com/GoogleCloudPlatform/getting-started-java/blob/master/appengine-standard-java8/helloworld/pom.xml#L66

<!-- [START servlet] -->
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  <type>jar</type>
  <scope>provided</scope>
</dependency>
<!-- [END servlet] -->

希望它会澄清你。

答案 1 :(得分:3)

无论使用何种技术,只要它产生包含javax.servlet-api的有效战争,这些步骤都应该有效:3.1.0:

1)As documented,确保您已将<runtime>java8</runtime>添加到a​​ppengine-web.xml文件

2)将战争解压缩到自己的单独目录

3)使用App Engine SDK for Java bin目录中的appcfg.sh脚本进行部署。它看起来像:

/<some-path>/appengine-java-sdk-1.9.54/bin/appcfg.sh update /<some-path>/exploded-war/

注意:要从我使用过的servlet中验证ServletContext的版本:

ServletContext sc = req.getSession().getServletContext();
resp.getWriter().println("Servlet version = " + sc.getMajorVersion() + "." + sc.getMinorVersion());