在Jerry的微信公众号文章SAP Fiori应用的三种部署方式里提到SAP Fiori应用以BSP应用的方式部署在ABAP Front-End Server上。那么这些BSP应用在运行时为何可以接受和发送HTTP请求呢?java
主要是下图的Internet Communication Manager(ICM)在起做用。 SAP help:git
The Internet Communication Manager ensures that communication between the SAP System (SAP NetWeaver Application Server) and the outside world via HTTP, HTTPS and SMTP protocols works properly.github
The ICM is a component of the SAP NetWeaver Application Server. It is implemented as a separate process, which is started and monitored by the ABAP dispatcher.web
即ICM做为沟通的桥梁,确保Netweaver应用服务器和外界可以经过HTTP,HTTPS等协议交互。ICM是Netweaver应用服务器的一个组件,做为一个单独的工做进程,由ABAP dispatcher启动并监控。tomcat
ICM的架构:服务器
假设我本地开发了一个Java Web应用,里面包含一个Servlet,部署到CloudFoundry后,该应用如何运行起来的? 细心观察cf push的日志,不难本身找出答案。 由于个人manifest.yml里定义的buildpack为java_buildpack: 这对应了cf push日志里高亮的这一行:
下载Open JDK JRE和Tomcat instance。
为何会自动下载tomcat? 打开java_buildpac的github仓库: https://github.com/cloudfoundry/java-buildpack 上面提到了缘由:微信
The Tomcat Container allows servlet 2 and 3 web applications to be run. These applications are run as the root web application in a Tomcat container.网络
一旦buildpack检测到war包中存在WEB-INF,且不存在Java Main(实现了main方法的Java类),则决定使用Tomcat容器。 实际上从cf push的日志里也能观察到tomcat容器启动参数:架构
"JAVA_OPTS="-agentpath:$PWD/.java-buildpack/open_jdk_jre/bin/jvmkill-1.13.0_RELEASE=printHeapHistogram=1 -Djava.io.tmpdir=$TMPDIR -Djava.ext.dirs=$PWD/.java-buildpack/container_security_provider:$PWD/.java-buildpack/open_jdk_jre/lib/ext -Djava.security.properties=$PWD/.java-buildpack/java_security/java.security $JAVA_OPTS -Daccess.logging.enabled=false -Dhttp.port=$PORT" && CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-3.13.0_RELEASE -totMemory=$MEMORY_LIMIT -loadedClasses=11021 -poolType=metaspace -stackThreads=250 -vmOptions="$JAVA_OPTS") && echo JVM Memory Configuration: $CALCULATED_MEMORY && JAVA_OPTS="$JAVA_OPTS $CALCULATED_MEMORY" && MALLOC_ARENA_MAX=2 JAVA_OPTS=$JAVA_OPTS JAVA_HOME=$PWD/.java-buildpack/open_jdk_jre exec $PWD/.java-buildpack/tomcat/bin/catalina.sh run",app
最后一行的$PWD/.java-buildpack/tomcat/bin/catalina.sh run是咱们很是熟悉的tomcat启动脚本。
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码: