Netweaver

In Jerry’s article on three deployment modes of SAP Fiori application, it is mentioned that SAP Fiori application is deployed on ABAP front-end Server in the way of BSP application. So why are these BSP applications able to accept and send HTTP requests at run time?

It is mainly the Internet Communication Manager (ICM) in the figure below that comes into play.

SAP help

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.

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.

ICM serves as a bridge to ensure that the Netweaver application server can communicate with the outside world through HTTP and HTTPS. ICM is a component of the Netweaver application server and is started and monitored by the ABAP Dispatcher as a separate worker process.

ICM architecture:

  1. ICM itself maintains a worker thread pool. There is a dedicated thread of control that receives incoming TCP/IP requests and wakes up a worker thread from the thread pool to respond to the request.
  2. Each worker thread contains an I/O processor responsible for network input and output. Worker threads handle HTTP, SMTP, and other protocols through various plugins.

CloudFoundry

Suppose I have a Java Web application developed locally that contains a Servlet. How does the application run when deployed to CloudFoundry? Careful observation of CF Push’s log, it is not difficult to find the answer for yourself. Because my manifest.yml defines buildpack as 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.

Once BuildPack detects the presence of WEB-INF in the WAR package and the absence of Java Main(the Java class that implements the Main method), it decides to use the Tomcat container.

“JAVA_OPTS=”-agentpath:TMPDIR -Djava.ext.dirs=PWD/.java-buildpack/open_jdk_jre/lib/ext -Djava.security.properties=JAVA_OPTS -Daccess.logging.enabled=false -Dhttp.port=(MEMORY_LIMIT -loadedClasses=11021 -poolType=metaspace -stackThreads=250 -vmOptions=”CALCULATED_MEMORY && JAVA_OPTS=”CALCULATED_MEMORY” && MALLOC_ARENA_MAX=2 JAVA_OPTS=PWD/.java-buildpack/open_jdk_jre exec $PWD/.java-buildpack/tomcat/bin/catalina.sh run”,

The last line of $PWD /. Java – buildpack/tomcat/bin/catalina. Sh run is we are very familiar with tomcat startup scripts.

For more of Jerry’s original technical articles, please follow the public account “Wang Zixi” or scan the following QR code: