在App Engine中部署后,应用程序不会更新

时间:2013-10-16 17:31:39

标签: java google-app-engine

我刚刚开始使用GAE,我已经遇到了问题。 当我部署应用程序时,它似乎没有更新它,当我在浏览器中运行它时,它仍然运行旧版本。

我的简单代码是:

import java.io.IOException;
import javax.servlet.http.*;

@SuppressWarnings("serial")
public class AppEngineProjectServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {
    resp.setContentType("text/html");
    resp.getWriter().println("<p>Hi there</p>");
}

}

我在Eclipse中创建了一个新的Web应用程序项目,我得到了该代码。我刚刚将文本从'Hello World'更改为'Hi there',当我部署它时,它仍然运行Hello World!

我还尝试在部署新版本并将其设置为默认版本时更改应用版本,但似乎没有任何内容对我有用。是否有任何特殊原因导致我可能忽略了这一点?

3 个答案:

答案 0 :(得分:6)

经过漫长的chat session OP问题已经解决。

主要观点:

  1. 在部署到云端之前,始终在本地测试您的应用(使用Development Server
  2. 注意浏览器缓存问题(使用Ctrl+F5刷新并丢弃本地缓存)
  3. 如果您想降低破坏生产的风险,请在部署到云之前更改应用程序版本
  4. 部署完成后,请在GAE上检查您的应用程序管理控制台
    1. 管理下 - &gt;管理员日志检查新条目,例如“已部署新版本”
    2. 主要 - &gt;版本请务必访问最近部署的版本Live URI [版本]。[app-name] .appspot.com )。
    3. 再次确保浏览器缓存不会妨碍(Ctrl+F5是您的朋友)
  5. 此外,为了避免运行时异常,如果您以需要构建新索引的方式更新持久层,请检查数据 - &gt;数据存储区索引以确保没有索引仍然构建(此can take hours or even days)。
  6. 完成测试后(确保Live URI版本正常运行)只需将新版本默认(在 Main - &gt; Versions 下)。< / LI>
  7. 建议进行一些A / B测试。 GAE内置了对Traffic Splitting的支持。在你感觉100%确定它按预期工作(实际上是200%)之前,不要跳枪并将新版本提升为默认值。虽然您可以随时将默认版本更改为上一版本,但如果您回滚,您的用户将不会感到高兴(相信我......在那里,完成了)。

答案 1 :(得分:4)

如果您想在上传后立即查看更改,请更改应用程序的版本,然后在管理控制台中更改默认值。

更新时,App Engine不会立即搜索并重新启动所有实例。对于具有许多实例的大型应用程序的用户来说,这样的事情会带来创伤,特别是当该应用程序的实例启动缓慢时。

答案 2 :(得分:0)

同样的事情发生在新的Eclipse 2018-09和新的Google Cloud Platform上,它取代了运行了很多年的超级GDT Pulldown。

这与刷新浏览器和超级Google服务器无关-这是本地计算机和服务器之间的日期不匹配,因为GCP告诉您他的工作是:

  • 删除班级目录后,它警告我班级不存在,所以!!!!!没有像以前的Gooogle工具一样自动构建
  • 然后,在我手动重建之后,他说了以下内容

#=正在将0个文件上传到Google Cloud Storage =#

零上传!

无论您在Java程序中进行了什么更改,如果他确定文件已经存在,就不会进行数据传输

所以我开始解决方法

  • 更改应用程序版本(因为他甚至找到已删除的版本:-),但仍将零个文件:-)传输到已删除的版本,该文件已在传输零个文件后被旧文件重新激活:-)
    • 手动更新smartgwt中的一些javascript,但他不会像其他旧软件包那样重新计算(这很难修改smartgwt中手动混淆的java)
    • 欢迎进步和更新:-(