百度BAE3.0 Java环境(JSP环境) 帮助文档 备份,bae3.0jsp
百度BAE3.0 Java环境(JSP环境) 帮助文档 备份,bae3.0jsp
原文http://developer.baidu.com/wiki/index.php?title=docs/cplat/bae/javaJava
概述
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. 使用eclipse开发
日志调试
当用户的应用开始运行时,可以通过我们的应用日志来对应用的状态进行查看 以及相关代码的调试。
- 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编码
扩展服务
- 目前支持的扩展服务包括:
- 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中运行良好。
- 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>
相关文章
- 暂无相关文章
用户点评