weblogic buildpack是支持oracle weblogic应用服务器的容器,是从java-buildpack fork出来,并把默认容器从tomcat改成了weblogic。
功能特性
由于weblogic是部署在CF上,部分weblogic本身特性将不支持
- 默认创建一个以应用名称开头的域(domain),也可以在应用包配置中指定;
- 通过域名配置可以支持数据源(datasource)和JMS,可以使用non-XA JDBC datasource,并存储Transaction Logs;
- 可以配置不支持EJB,JMS,以限制内存,当然也可以全部支持;
- 支持标准的域配置,可以被应用或者buildpack中的配置覆盖;
- 伸缩是通过CF的scale接口,而不是增加域中托管的服务器;
- 支持WAR和EAR(多个war/jar打成的Enterprise Archive);
- 可以暴露Web管理控制台(WebLogic Admin Console);
- 绑定到应用的数据源(JDBC Datasources)可以动态创建;
- 有将补丁、依赖jar包、驱动打包到server的classpath;
- CF监控和重启,不在依赖 WebLogic Node Manager;
- 可以打包不同的配置到不同的部署环境,可以控制域(domain)配置,可以随时重建域(domain);
详细参考:https://github.com/pivotal-cf/weblogic-buildpack/blob/master/docs/container-wls.md#features
限制
- CF Release版本要大于v185,才能设定cc nginx参数:client_max_body_size;
- 只支持HTTTP,不支持RMI,weblogic server instance直接不能通信;
- 只支持无状态的应用,应用扩展或者重启是新生成了一个容器,因此文件系统也是临时的,因此:Transaction recovery不支持,文件存储的消息持久化不支持,WebLogic LLR不支持,WebLogic Admin Console的修改不能保存,日志是临时的(当然可以通过cf输出);
- 不支持security aspects;
- 只支持基本的域(domain),不支持OA Suite, Web Center,IDM;
Weblogic容器探测
- 是否有WEB-INF/目录;
- 或APP-INF/目录;
- 或在app,WEB-INF,APP-INF目录下有.wls/;
- 或有部署描述文件:weblogic*.xml
- 并且Java Main没有;
buildpack配置
config/weblogic.yml的几项配置
weblogic.repository_root:weblogic安装包仓库URL地址;
weblogic.version:Weblogic版本;
prefer_app_config:使用应用包的配置创建域;
start_in_wlx_mode:启动为受限模式,即:只是作为Servlet容器,不支持JMS, EJB等J2EE特性;
prefer_root_web_context:允许web应用使用root(/)context;
配置变更
CC配置
cc的nginx,
client_max_body_size最少要大于750M,如果是全安装则需要1G以上,不然上传buildpack会失败;
应用配置
应用配置都放在.wls目录下,配置包括:域名(domain),JDBC DataSource,JMS,安全,前置jar包和后置jar包,参考应用包:
使用根目录作为默认目录,需要新建一个工程可以叫做index,然后在在WEB-INF目录下面新建一个weblogic.xml,内容是:
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd"> <weblogic-web-app> <context-root>/</context-root> </weblogic-web-app>
push应用
启动参数
需要制定内存至少为1G,启动超时:100
实际情况是:指定了1.5g才正常运行
$ cf push wlsSampleApp -m 1536M -p wlsSampleApp.war -t 100
访问web控制台
域名加/console路径
例如:
http://hwl.cf-lite.io/console/login/LoginForm.jsp
默认用户名,密码:weblogic/welcome1
JVM参数设置
可以设置应用的环境变量JAVA_OPTS
$ cf se test-app JAVA_OPTS '-verbose:gc -Djava.net.preferIPv4=true -Dmy.application.name=test-app' Setting env variable 'JAVA_OPTS' to '-verbose:gc -Djava.net.preferIPv4=true -Dmy.application.name=test-app' for app test-app in org sabha / space sabha as admin... OK TIP: Use 'cf push' to ensure your env variable changes take effect
注意:这里不需要设置最大内存(-Xmx)和初始化内存(-Xms),preStart.sh脚本会根据push应用的-m参数自动调整
排错
设置应用的环境变量JBP_LOG_LEVEL
cf set-env test-app JBP_LOG_LEVEL debug
并且restage