BAE开发经验 百度云平台例子

最近研究了一下BAE,其中遇到不少困难。现在我可以部署一个集成Spring、Hibernate 的项目了。总结一下:

             一、项目架构

      项目语言可以有4种,数据库有几个,选择视情况而定;但BAE环境无写入权限,(能写临时文件,鸡肋),文件储存管理就成了难点;没错,就是用“云储存”解决。软件把文件上传到另外一个地方,把相应文件URL写入数据库里面。百度开发者中心放出的Frontia框架对百度云储存做了封装,只需调用它的API就可以实现BCS(百度云储存)管理;这个框架还有其他的服务;

 

二、编程经验
1. Jar 包管理:
       使用框架,少不了使用Jar包。BAE的的Jar包一定要放在如下目录结构的lib下面;不是建议,而是必须!不然跑不了,我觉得官方文档要在这里加红色重点。如果你想顺利地用BAE,你必须通读帮助文档。你用人家的东西,就得按人家的规矩。在开发当中,帮助文档具有很重要的位置。
       我尝试过用Maven,我不知道官方说已经具有Maven功能是什么意思,但是它肯定没有“给POM.xml自动下包”功能。没这个功能我觉得它用maven不知有何用,坑。受虐了几天,我猜测它意思是,可以运行maven生成的war包,并可以使用命令行上传。我觉得意义不大咯,你不自动管理,还要我手动管理添加,而且给编程
带来不便,我还不如简单把jar包提出来,而且有些jar包必须是官方例子里面的版本的。总之,lib下jar 包测试通过,不要想得太高级。
 Project 
     ——src 
     ——lib 
     ——WebRoot 
         ——WEB-INF 
         ——web.xml
2. 项目调试、部署

       如果你全部配置好了,当然可以选择war包上传,但是无法把一个BAE结构的项目生成war包(eclipse、tomcat都试过,不行);不过也相当地麻烦,所以我选择了SVN,把它连上后,你就可以控制每个文件,所以尽管它的规定的目录结构奇葩,我们也有可视化管理。如何调试呢?这样地目录结构,MyEclipse可不支持,跑不了,会报错;为了不出现混淆,开连个IDE,一个用于上传,一个用于测试,这样既可以做到100%模拟目录结构,绝对不会出错。直到三分钟前,我才顿悟这种模式太傻了。两个IDE用把新增的代码,复制过去另外一个IDE上传,工作量不是一般大,而且容易出错。现在发现BAE的目录只是只是lib文件夹的位置不同,只要把jar包放到WebRoot/WEB-INF/下IDE就可以读取,可以跑,当初我试过好像不行,是因为JDK不兼容。现在换了一个,测试通过了!!!这样就免去复制代码的工序了。还有一点,BAE的上数据库是不给外面应用链接的,所以换上本地数据库,只要不提交applicationContext-db.xml 、/WebRoot/WEB-INF/lib文件夹,以及项目配置文件就可以了。

(写总结挺有好处的哇,可以理清思路,但就是有点耗时间,)

3. 一些经验
  1. bae环境 下web.xml 配置classpath 含糊不清,不建议使用。
  2. 【svn】拷贝(备份)项目文件夹要注意,把“.svn”隐藏目录一起拷出来的话,把它粘贴进去会出现“svn: ‘conf’ is not under version control”错误
  3. svn  跟 BAE在线编辑 不能同时使用,会产生冲突
  4. svn 随时会检测本地文件与服务器的区别,所以操作svn的时候不要太频繁太快,出现问题重启是一个很好的办法
  5. 看日志 debug信息 也很有用,可以看出很多信息
三、BAE开发流程建议
  1. 清楚BAE部署环境是什么
  2. 通读帮助文档
  3. 研究例子
  4. 学习百度开发者中心放出框架

 

最后附上例子:使用Spring3、HIbernate4、Frontia (在线演示:http://www.hahteng.com)

readme.txt

1.使用Spring3、HIbernate4、Frontia. (jar在BAE测试通过;BAE上跑:jar包放在项目目录下的lib文件夹;IDE跑:jar包放在 /WebRoot/WEB-INF/lib)
2.配置文件夹 :/SH_BAE_Demo/WebRoot/conf  (Spring3、HIbernate4)
2.Frontia 框架路径:/SH_BAE_Demo/WebRoot/resources/Plugins/frontia
自定义使用:/SH_BAE_Demo/WebRoot/resources/js/frontia
3.后台管理路径:/admin
4.IDE跑的时候注意JDK版本

 

例子下载:点击打开链接

标签