将java web程序发布到Google App Engine上(Windows,命令行)

June 12, 2009 | tags java  google  AppEngine  免费空间   | views
Comments 2

        Google开放了App Engine的java平台,供java爱好者们把自己的程序发布到网上。最重要的一点是:它是免费的!下面将讲解如何将java程序发布到App Engine上去。(Windows,命令行)

        在Google官方的英文的文档(http://code.google.com/intl/en/appengine/docs/java/gettingstarted/uploading.html)中有详细的讲解,你英文好的话,可以去那里看看。如果你在发布的过程中遇到了问题,再回到这里也不迟。

        首先你要注册你的应用,即开通App Engine功能(http://appengine.google.com/)。记住你的application-id

        打包你的程序之前,你需要在WEB-INF文件夹下添加一个appengine-web.xml文件,把下面内容中application-id换成你的实际id就可以了:

<?xml version="1.0" encoding="utf-8"?><appengine-web-app xmlns="http://appengine.google.com/ns/1.0">    <application>application-id</application>    <version>1</version></appengine-web-app>

        建议你把UTF-8作为所有文件的编码,否则可能会出现意外效果。

        建立工程并打包之后,你会得到一个app.war,由它解压出来的目录比如为E:\app,现在下载并解压Google提供的SDK,用记事本打开,把@java换成@你的JDK路径,形如:(引号在路径中有空格的时候不能去掉)②

@"C:\Program Files\Java\jdk1.6.0_14\bin\java" –cp …

        保存后,用命令行进入到它的解压文件夹下的bin文件夹,附带参数为“空格update E:\app”,例如:

E:\Program Files\appengine-java-sdk-1.2.1\bin>appcfg.cmd update E:\app

        接着会提示你输入邮箱名和密码,看见“Success.”就说明成功了。

        之后访问http://appengine.google.com/就可以看到你的应用列表了。

        由于最多有10个应用,还不能删除,所以当你下次更新的时候就不要改appengine-web.xml中的version了,以免浪费应用个数。Google App Engine有很多特性不支持,比如数据库不能用Hibernate(除非你封装JPA),然而你可以试试用其他的数据库,比如你现在的空间的数据库,远程连接就可以了。你也可以去专门买个数据库试试。如果你使用工厂模式开发数据库的DAO的话,你也可以重写一个DAO实例。

       有问题欢迎留言。

注释:

①有些朋友在设为其他编码是会出现jsp中文乱码的问题,但我测试的时候没有碰到,可能已经被fix了

②如果你装了jre,那么App Engine会自动用它的java.exe而不是JDK的,这样就会出现找不到javac.exe错误(cannot find javac executable based on java.home)。解决办法如上,引用:http://code.google.com/p/googleappengine/issues/detail?id=1226#makechanges。错误信息如下:

java.lang.IllegalStateException: cannot find javac executable based on java.home, tried "C:\Program Files\Java\jre6\bin\javac.exe" and "C:\Program Files\Java\bin\javac.exe"Unable to upload app: cannot find javac executable based on java.home, tried "C:\Program Files\Java\jre6\bin\javac.exe"and "C:\Program Files\Java\bin\javac.exe"



  • quote 1.关于使用jdbc远程连接
  • 文中提到的“可以试试用其他的数据库,比如你现在的空间的数据库,远程连接就可以了。”是指可以使用JDBC吗?我使用JDBC的时候还没有成功过,google官方声明不支持JDBC,不知道大侠是否有什么办法
  • 2009-8-30 14:42:24 回复该留言


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。