百度BAE3.0 Java环境(JSP环境) 帮助文档 备份

原文http://developer.baidu.com/wiki/index.php?title=docs/cplat/bae/java

Java

概述

Java执行环境使用OpenJDK 7 JVM来运行Java应用,支持Java Servlet和标准MySQL JDBC接口,为保证应用兼容性建议使用和Java 7兼容的库。Servlet容器支持两种Jetty(java-jetty)和Tomcat(java-tomcat),Jetty版本为9.0.6.v20130930,可参考jetty官网;Tomcat版本为7.0.47,可参考Apache官网。(之前的java-web的Servlet容器是Jetty)

BAE3.0的Java执行采用原生的Jetty或Tomcat与用户本地的开发环境基本一致,能够支持多war包或目录。用户的应用在本地能够运行,在线上就能够良好地运行。需要注意的是线上的MySQL不支持长连接。

BAE3.0的Java执行环境不再内置任何JAR包,所有依赖的第三方JAR包都用户需要自己上传。用户可以通过SVN或GIT上传WAR包或者目录。

java SDK

java的服务我们已经打包成了一个完整的jar包,地址为java-sdk

开发指南

BAE3.0中JavaRuntime支持多应用,用户可以上传多个WAR包或目录,java-jetty的主域名使用root.war,java-tomcat的主域名使用ROOT.war,其他WAR包或目录的访问需要在主域名后加上代码目录的路径,如code.war或code目录的访问:xxx.duapp.com/code/

本地开发:

1. 使用eclipse开发
下载eclipse: http://www.eclipse.org/downloads/
打开eclipse,新建Dynamic Web Project
开发完成后,打成WAR包,File->Export->WAR file, 保存为root.war(java-jetty)或ROOT.war(java-tomcat),通过SVN或GIT上传到BAE
或者将root.war或ROOT.war解压到root或ROOT目录下,然后删除原svn中的root.war或ROOT.war,再将root或ROOT目录通过SVN或者GIT上传到BAE
2. 使用Maven开发
下载maven: http://maven.apache.org/download.cgi
创建WEB部署:
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp
开发完成后打成war包:mvn install
将target中的war包更名为root.war上传到BAE
3. 应用移植
参考博客 《Dlog4j的移植》
4. 运行时参数
JVM的运行时参数:-Xms为执行单元内存的1/4, -Xmx为执行单元内存的3/4,-XX:PermSize为执行单元内存的1/8, -XX:MaxPermSize为执行单元内存1/2 。可以通过配置文件自定义JVM的参数,详见 自定义配置
Jetty只加载了最基本的jetty-http和jetty-deploy模块。

日志调试

当用户的应用开始运行时,可以通过我们的应用日志来对应用的状态进行查看 以及相关代码的调试。

  • 1.默认日志

默认情况下,web类型的应用我们会提供四类日志“lighttpd.log”、“lighttpdwf.log”、“jetty_stderrout.log”。

    • 1.lighttpd.log 实时的显示lighttpd web服务器的请求日志;
    • 2.lighttpdwf.log 实时的显示lighttpd web服务器的错误日志;
    • 3.jetty_stderrout.log 实时显示java-jetty用户打印的标准输出日志
    • 4.catalina.log.yyyy-mm-dd 实时显示java-tomcat用户打印的标准输出日志
    • 5.supervisord.log 实时显示监控java和lighttpd进程的supervisor的日志,如果出现503,请先检查此log,查看是否存在“jetty(tomcat) entered FATAL state, too many start retries too quickly”字样,如果存在请加大内存套餐,可能是因为套餐内存太小导致应用加载时出现OutOfMemoryError异常
  • 2.自定义日志

如果用户觉得日志种类不够,也可以自己来定制日志的种类和内容,只需要用户自定义的内容输出到 “/home/bae/log” 下即可,如 “/home/bae/log/user.log”,那么就可以在日志界面中看到。

  • 3.示例
    • 可以使用java.util.logging.Logger或者log4j打印本地日志
    • 示例代码logtest.zip,解压后import到eclipse中,然后export出logtest.war,或者直接下载war包logtest.war上传到bae,访问xxx.duapp.com/logtest/,点击其中的log4j或者javalog,然后查看日志文件

注意:原则上不推荐使用中文日志,如果因为特殊关系必须打印中文日志的话,请务必使用UTF-8编码

扩展服务

  1. 目前支持的扩展服务包括:
    • MySQL(数据库) 提供分布式的关系型数据库服务。详情见
    • Redis(数据库) 提供key-value型非关系型数据库服务。详情见
    • MongoDB(数据库) 提供分布式的非关系型数据库服务。详情见
    • Cache(缓存) 提供高性能的分布式的内存对象缓存服务。详情见
    • Image(图片处理) 提供图片抓取和按照用户定义的操作对图片进行处理的服务。详情见
    • NFS(网络文件系统)提供分布式读写功能。详情见
    • Log(日志) 提供日志记录服务。详情见

框架支持

由于BAE3.0采用的是原生Jetty,部署时使用的是标准WAR包,因此从理论上来讲支持所有Java框架。
比如:SSH框架Demo,mybatis框架Demo

自定义配置

  • 1.配置JVM参数
    • 1.1 在代码根目录下与root.war(或ROOT.war)同级的目录新建.bae目录。
注:如果是windows用户,直接创建可能会有问题,需要在开始–>“搜索程序和文件”框中输入cmd.exe–>打开cmd.exe,cd到代码目录,键入mkdir .bae 命令
    • 1.2 在.bae目录下新建jvm.ini文件
jvm.ini文件中的每一行为一个jvm参数
如:jvm.ini
-Xms64m
-Xmx256m
-XX:PermSize=32m
-XX:MaxPermSize=128m
    • 1.3 通过svn或git上传代码,发布代码即可
  • 2.配置Jetty
    • 2.1 在代码根目录下创建.bae目录
    • 2.2 在.bae目录下创建jettyconf目录
在jettyconf目录下创建start.ini文件和etc目录,etc目录下存放jetty.xml、jetty-deploy.xml等配置文件
    • 2.3 通过svn或git上传代码,发布代码即可
    • 2.4 下载demo
jettyconfdemo.zip
  • 3.配置Tomcat
    • 3.1 在代码根目录下创建.bae目录
    • 3.2 在.bae目录下创建tomcatconf目录
在tomcatconf目录存放server.xml、context.xml等配置文件
    • 3.3 通过svn或git上传代码,发布代码即可
    • 3.4 下载demo
tomcatconfdemo.zip

注意事项

    • BAE3.0中Java Runtime已经不再有任何白名单和沙盒限制,只要WAR包符合标准war包规范就能在BAE3.0中运行良好。

java-jetty的主域名是root.war,java-tomcat的主域名是ROOT.war

    • Java应用中所有的请求都会从lighttpd直接转给Jetty或者Tomcat,所以app.conf文件中的转发规则不起作用(app.conf中的转发规则是针对lighttpd的),需要修改web.xml进行解决。比如:首页想访问index.html可以将web.xml中的<welcome-file>index.jsp</welcome-file>改成 <welcome-file>index.html</welcome-file>

你可能感兴趣的:(java)