在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的原創技術文章,請關注公衆號"汪子熙"或者掃描下面二維碼: