1.1.1 SAE上部署系统前
(1)在SAE上部署一个应用前,首先需要明白SAE部署原理。新浪官方给出的部署手册中就对部署进行了很好地说明,如图1-1所示,SAE部署原理图中给出了三个完整的步骤。
![](https://i-blog.csdnimg.cn/blog_migrate/3fd57602bae3ebb2d7d8036e3b0b03a0.jpeg)
图1-1 SAE部署原理
(2)按照图中给出步骤,首先需要创建应用。打开SAE官方网站http://sae.sina.com.cn,通过开发文档中提示(如图1-2所示,创建应用提示图),进行二级域名和应用的创建。这其中有一个问题需要提出来,二级域名和应用名在SAE中的作用。官方提示说,当应用部署到服务器中后,在浏览器的地址栏中输入这个最初被创建的二级域名就可以访问了。但是,如果按照这种域名进行访问是不可能的,因为在创建引用的应用版本(开发者最多可以创建1~10数字的版本号,后面有具体介绍)后,SAE会自动将这个版本后放在二级域名最前面。正确的访问地址应该是http://版本号数字.二级域名标识.sinaapp.com。二级域名标识就是官方说的应用名,比如数据库名(在SAE上的数据库名统一为“app_二级域名标识名”)的建立就用到了这个标识名;在SVN(subversion,一种版本控制工具)仓库(SVN仓库的地址统一为https://svn.sinaapp.com/二级域名标识名)中也用到了这个标识名。而这里的应用名创建主要在应用管理页面中起显示作用。
![](https://i-blog.csdnimg.cn/blog_migrate/2693cbd4f40722c5bab5fdff7b785f00.jpeg)
图1-2 创建应用提示图
(3)在完成了部署前的第一个步骤后,需要选择怎么部署代码。这一点需要根据不同的情况来考虑。从开发者角度来说,根据新浪提供的SDK(SAE Development Kit,SAE开发工具),开发者可以选择“打包”既可以通过SVN(subversion,版本管理工具)团队在线开发或者桌面开发也可以直接上传(这种方式实际就是租用了SAE的PaaS服务)。对于一个不懂技术的“用户”(从云计算服务面向的对象来讲,开发者和不懂技术的使用者都属于它的用户)来说,可以在SAE应用商店中选择自己需要的应用或者与SAE开发者进行协商定做(这里其实就是前面谈到的SaaS服务了)直接安装就可以了。由于本论文最终目的仅仅是提出一种行之有效的解决方案并证明其可靠性,所以本系统选择了以上传压缩文件的方法来部署代码。如图1-3所示,上传WAR包(Web Archive file,简称网络应用程序文件,这种将Web应用程序打包而成的压缩文件,直接放在服务器中就可以运行)。在上传文件过程中要注意很多细节,比如,上传中的文件不能与新浪提供的JAR包(Java Archive file,JAVA压缩文件)相冲突。如图5-1-3所示,我上传的WAR文件,并前后创建的2个版本。从图中红色的链接地址处中可以看出,前面的“3”和“4”就是我创建的2个版本。选择默认的版本后,在每次访问的时候会加载这个默认的版本。2次的版本所占用的空间达到了33兆字节,新浪SAE提示说,最好不要长期的存放不同的版本,因为加载时会影响速度。出于空间内存的考虑,我删除了前2个版本,只保留了如图的2个版本。
![](https://i-blog.csdnimg.cn/blog_migrate/fc95c799b5d9836deead09a04ed922fc.jpeg)
图1-3 上传WAR应用包
1.1.2 SAE上部署系统中
在部署了代码后,还有一件非常重要的事情是需要做的,那就是后台数据库建立。新浪给开发者提供的数据库是MySQL,这个对于一个中小型的企业数据量要求来说,MySQL已经足够了。在官网中服务一栏中找到MySQL,在MySQL管理中,选择初始化数据库。SAE给开发者提供了PHPMyAdmin(一种MySQL的数据库管理工具,)网页数据库管理工具来管理数据库。点击数据库管理按钮进入数据库管理页面。将本地的数据库脚本文件在SQL(Structured Query Language,结构化的查询语言)中进行查询。可以看到这个数据库名字就是刚才建立的二级域名的标识名。如图5-4所示,在新浪上提供的MySQL上建立的app_bhrb数据库。
![](https://i-blog.csdnimg.cn/blog_migrate/60a47f4f2768cac45501de56610d6a52.jpeg)
图1-4 建立的app_bhrb数据库
1.1.3 SAE上部署系统后
在SAE上部署后,在浏览器地址栏中输入二级域名目录就可以访问。但是对SAE新手来说,这其中会遇到各种问题。下面是我在项目中曾遇到的问题及解决办法总汇。
(1)浏览器端报出“404”错误
“404”意味资源找不着,代码提示为“Error 404 - Not Found. No context on this server matched or handled this request.”出现这种错误,多半是由于上传的压缩包中的Jar包与SAE中已经存在的Jar包相冲突。为了解决这个问题,可以利用SAE论坛中提供的一个成功示例源码来比对逐一检查自己项目中的Jar包。另外,Java Web应用中使用Struts时需要实现监听器(这一点,新浪官方没有作出任何补充解释),具体要实现Servlet-ContextListener、HttpSessionListener、HttpSessionAttributeListener接口方法,同时要在Web.xml配置文件中进行配置。
(2)系统查询结果失败
出现这种情况很可能与数据库连接配置文件中的配置有关。由于MySQL服务在连接30秒内未做任何操作后将会自动丢失请求,所以在配置数据库连接池时要特别注意如maxIdleTime等属性配置的大小。
(3)应用出现“503”错误
应用出现“503”一般是应用启动过程中出现异常,如果是突发状况可重启服务。由于启动JVM(Java Virtual Machine,虚拟机)是需要一个过程的,JVM的状态还不稳定,所以等JVM的状态一直处于“启动”状态时再开始访问。如果仍然无效可以到日志中心查看JVM下的日志查找错误原因。