日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Netweaver和CloudFoundry是如何运行Web应用的?

發(fā)布時(shí)間:2023/12/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Netweaver和CloudFoundry是如何运行Web应用的? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Netweaver

在Jerry的微信公眾號(hào)文章SAP Fiori應(yīng)用的三種部署方式里提到SAP Fiori應(yīng)用以BSP應(yīng)用的方式部署在ABAP Front-End Server上。那么這些BSP應(yīng)用在運(yùn)行時(shí)為什么能夠接受和發(fā)送HTTP請(qǐng)求呢?

主要是下圖的Internet Communication Manager(ICM)在起作用。

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作為溝通的橋梁,確保Netweaver應(yīng)用服務(wù)器和外界能夠通過(guò)HTTP,HTTPS等協(xié)議交互。ICM是Netweaver應(yīng)用服務(wù)器的一個(gè)組件,作為一個(gè)單獨(dú)的工作進(jìn)程,由ABAP dispatcher啟動(dòng)并監(jiān)控。

ICM的架構(gòu):

  • ICM本身維護(hù)了一個(gè)工作線程池。有一個(gè)專屬的控制線程,負(fù)責(zé)接收進(jìn)來(lái)的TCP/IP請(qǐng)求,然后從線程池中喚醒一個(gè)工作線程來(lái)響應(yīng)該請(qǐng)求。
  • 每個(gè)工作線程包含一個(gè)I/O處理器,負(fù)責(zé)網(wǎng)絡(luò)輸入輸出。工作線程通過(guò)各種各樣的plugin處理HTTP,SMTP等協(xié)議。
  • CloudFoundry

    假設(shè)我本地開(kāi)發(fā)了一個(gè)Java Web應(yīng)用,里面包含一個(gè)Servlet,部署到CloudFoundry后,該應(yīng)用如何運(yùn)行起來(lái)的?
    細(xì)心觀察cf push的日志,不難自己找出答案。
    因?yàn)槲业膍anifest.yml里定義的buildpack為java_buildpack:

    這對(duì)應(yīng)了cf push日志里高亮的這一行:

    下載Open JDK JRE和Tomcat instance。

    為什么會(huì)自動(dòng)下載tomcat?
    打開(kāi)java_buildpac的github倉(cāng)庫(kù):
    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檢測(cè)到war包中存在WEB-INF,且不存在Java Main(實(shí)現(xiàn)了main方法的Java類),則決定使用Tomcat容器。

    實(shí)際上從cf push的日志里也能觀察到tomcat容器啟動(dòng)參數(shù):

    “JAVA_OPTS=”-agentpath:PWD/.java?buildpack/openjdkjre/bin/jvmkill?1.13.0RELEASE=printHeapHistogram=1?Djava.io.tmpdir=PWD/.java-buildpack/open_jdk_jre/bin/jvmkill-1.13.0_RELEASE=printHeapHistogram=1 -Djava.io.tmpdir=PWD/.java?buildpack/openj?dkj?re/bin/jvmkill?1.13.0R?ELEASE=printHeapHistogram=1?Djava.io.tmpdir=TMPDIR -Djava.ext.dirs=PWD/.java?buildpack/containersecurityprovider:PWD/.java-buildpack/container_security_provider:PWD/.java?buildpack/containers?ecurityp?rovider:PWD/.java-buildpack/open_jdk_jre/lib/ext -Djava.security.properties=$PWD/.java-buildpack/java_security/java.security JAVAOPTS?Daccess.logging.enabled=false?Dhttp.port=JAVA_OPTS -Daccess.logging.enabled=false -Dhttp.port=JAVAO?PTS?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=KaTeX parse error: Can't use function '\"' in math mode at position 84: …250 -vmOptions=\?"?JAVA_OPTS") && echo JVM Memory Configuration: KaTeX parse error: Expected 'EOF', got '&' at position 19: …CULATED_MEMORY &?& JAVA_OPTS=\"JAVA_OPTS KaTeX parse error: Can't use function '\"' in math mode at position 18: …LCULATED_MEMORY\?"? && MALLOC_AREN…JAVA_OPTS JAVA_HOME=$PWD/.java-buildpack/open_jdk_jre exec $PWD/.java-buildpack/tomcat/bin/catalina.sh run",

    最后一行的$PWD/.java-buildpack/tomcat/bin/catalina.sh run是我們非常熟悉的tomcat啟動(dòng)腳本。

    要獲取更多Jerry的原創(chuàng)技術(shù)文章,請(qǐng)關(guān)注公眾號(hào)"汪子熙"或者掃描下面二維碼:

    總結(jié)

    以上是生活随笔為你收集整理的Netweaver和CloudFoundry是如何运行Web应用的?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。