SAP Business Technology Platform CloudFoundry 环境的 Java 应用支持下列 4 种 Application container:
-
Tomcat
-
TomEE
-
TomEE 7
-
Java Main
Tomcat
默认情况下,使用 SAP Java buildpack 推送的 Web 应用程序在 Apache Tomcat 容器中运行。
应用程序可以使用应用程序 manifest.yml 文件中的 TARGET_RUNTIME 环境变量显式定义目标应用程序容器。
---
applications:
- name: <APP_NAME>
...
env:
TARGET_RUNTIME: tomcat
tomcat 应用运行时容器提供以下标准 API:
-
Java Servlets 3.1
-
Java ServerPages (JSP) 2.3
-
Expression Language (EL) 3.0
-
Debugging Support for Other Languages 1.0
-
Java API for WebSocket 1.1
Customizing the SAP Java Buildpack Defaults
SAP Java Buildpack 为 Tomcat 应用程序容器提供了一些默认配置,这些配置可以由应用程序使用资源配置功能进行自定义。
以下是应用程序可以自定义的所有占位符及其默认值的列表:
[图片]
配置 HTTP header size 的例子:
env:
JBP_CONFIG_RESOURCE_CONFIGURATION: "['tomcat/conf/server.xml': {'connector.maxHttpHeaderSize':1024}]"
配置最大线程数的例子:
env:
JBP_CONFIG_RESOURCE_CONFIGURATION: "['tomcat/conf/server.xml': {'connector.maxThreads':800}]"
开启 HTTP trace 的例子:
env:
JBP_CONFIG_RESOURCE_CONFIGURATION: "['tomcat/conf/server.xml': {'connector.allowTrace':true}]"
TomEE
默认情况下,使用 SAP Java buildpack 推送的 Web 应用程序在 Apache Tomcat 容器中运行。
通过使用应用程序 manifest.yml 文件中的 TARGET_RUNTIME 环境变量,应用程序可以显式定义目标应用程序容器 - Apache TomEE。
---
applications:
- name: <APP_NAME>
...
env:
TARGET_RUNTIME: tomee
Java Options
可以通过定义 JBP_CONFIG_JAVA_OPTS 环境变量来配置 Java 属性。
在应用程序的 manifest.yml 文件中定义 JBP_CONFIG_JAVA_OPTS 环境变量。
---
applications:
- name: <app-name>
memory: 512M
...
env:
JBP_CONFIG_JAVA_OPTS: 'java_opts: ''-DtestJBPConfig=^%PATH^% -DtestJBPConfig1="test test" -DtestJBPConfig2="%PATH%"'''
使用 Cloud Foundry 命令行界面 (cf CLI) 的 cf set-env 命令定义 JBP_CONFIG_JAVA_OPTS 环境变量。
cf set-env myapp JBP_CONFIG_JAVA_OPTS “[java_opts: '-DtestJBPConfig=%PATH% -DtestJBPConfig1=“test test” -DtestJBPConfig2=”%PATH%"’]"
Java Out Of Memory Behavior
当 JVM 遇到终端故障时,SAP Java Buildpack 将堆的直方图打印到日志中。 除此之外,如果应用程序绑定到名称或标签包含 heap-dump 的卷服务,也会生成一个堆转储文件并将其存储在挂载的卷中。
ERR Stopping VM due to OutOfMemoryError
ERR Resource exhaustion event: the JVM was unable to allocate memory from the heap.
ERR ResourceExhausted! (1/0)
OUT | Instance Count | Total Bytes | Class Name |
OUT | 30130 | 5556616 | [C |
OUT | 866 | 2485600 | [B |
OUT | 29215 | 701160 | Ljava/lang/String; |
OUT | 3971 | 449528 | Ljava/lang/Class; |
OUT | 9998 | 319936 | Ljava/util/HashMap N o d e ; ∣ O U T ∣ 3624 ∣ 318912 ∣ L j a v a / l a n g / r e f l e c t / M e t h o d ; ∣ O U T ∣ 6429 ∣ 205728 ∣ L j a v a / u t i l / c o n c u r r e n t / C o n c u r r e n t H a s h M a p Node; | OUT | 3624 | 318912 | Ljava/lang/reflect/Method; | OUT | 6429 | 205728 | Ljava/util/concurrent/ConcurrentHashMap Node;∣OUT∣3624∣318912∣Ljava/lang/reflect/Method;∣OUT∣6429∣205728∣Ljava/util/concurrent/ConcurrentHashMapNode; |
OUT | 2821 | 171472 | [Ljava/lang/Object; |
OUT | 40 | 117328 | [J |
OUT | 750 | 111096 | [Ljava/util/HashMap N o d e ; ∣ O U T ∣ 5618 ∣ 89888 ∣ L j a v a / l a n g / O b j e c t ; ∣ O U T ∣ 1054 ∣ 74048 ∣ [ L j a v a / l a n g / S t r i n g ; ∣ O U T ∣ 696 ∣ 62552 ∣ [ I ∣ O U T ∣ 59 ∣ 51920 ∣ [ L j a v a / u t i l / c o n c u r r e n t / C o n c u r r e n t H a s h M a p Node; | OUT | 5618 | 89888 | Ljava/lang/Object; | OUT | 1054 | 74048 | [Ljava/lang/String; | OUT | 696 | 62552 | [I | OUT | 59 | 51920 | [Ljava/util/concurrent/ConcurrentHashMap Node;∣OUT∣5618∣89888∣Ljava/lang/Object;∣OUT∣1054∣74048∣[Ljava/lang/String;∣OUT∣696∣62552∣[I∣OUT∣59∣51920∣[Ljava/util/concurrent/ConcurrentHashMapNode;|
OUT | 1063 | 51024 | Ljava/util/HashMap; |
OUT | 854 | 40992 | Lorg/apache/tomcat/util/modeler/AttributeInfo;|
…