前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Netweaver和CloudFoundry是如何运行Web应用的?

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

作者头像
Jerry Wang
发布2019-05-30 19:29:02
5440
发布2019-05-30 19:29:02
举报

Netweaver

在Jerry的微信公众号文章里提到SAP Fiori应用以BSP应用的方式部署在ABAP Front-End Server上。那么这些BSP应用在运行时为什么能够接受和发送HTTP请求呢?

主要是下图的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应用服务器和外界能够通过HTTP,HTTPS等协议交互。ICM是Netweaver应用服务器的一个组件,作为一个单独的工作进程,由ABAP dispatcher启动并监控。

ICM的架构:

1. ICM本身维护了一个工作线程池。有一个专属的控制线程,负责接收进来的TCP/IP请求,然后从线程池中唤醒一个工作线程来响应该请求。 2. 每个工作线程包含一个I/O处理器,负责网络输入输出。工作线程通过各种各样的plugin处理HTTP,SMTP等协议。

CloudFoundry

假设我本地开发了一个Java Web应用,里面包含一个Servlet,部署到CloudFoundry后,该应用如何运行起来的? 细心观察cf push的日志,不难自己找出答案。 因为我的manifest.yml里定义的buildpack为java_buildpack:

这对应了cf push日志里高亮的这一行:

下载Open JDK JRE和Tomcat instance。

为什么会自动下载tomcat? 上面提到了原因:

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/openjdkjre/bin/jvmkill−1.13.0RELEASE=printHeapHistogram=1−Djava.io.tmpdir=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=TMPDIR -Djava.ext.dirs=PWD/.java−buildpack/containersecurityprovider:PWD/.java−buildpack/containersecurityprovider:PWD/.java-buildpack/container_security_provider:PWD/.java-buildpack/open_jdk_jre/lib/ext -Djava.security.properties=PWD/.java−buildpack/javasecurity/java.securityPWD/.java−buildpack/javasecurity/java.securityPWD/.java-buildpack/java_security/java.security JAVA_OPTS -Daccess.logging.enabled=false -Dhttp.port=PORT\" && CALCULATED_MEMORY=PORT\" && CALCULATED_MEMORY=PORT\" && CALCULATED_MEMORY=(PWD/.java−buildpack/openjdkjre/bin/java−buildpack−memory−calculator−3.13.0RELEASE−totMemory=PWD/.java−buildpack/openjdkjre/bin/java−buildpack−memory−calculator−3.13.0RELEASE−totMemory=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:JAVA_OPTS\") && echo JVM Memory Configuration:JAVA_OPTS\") && echo JVM Memory Configuration: CALCULATED_MEMORY && JAVA_OPTS=\”JAVAOPTSJAVAOPTSJAVA_OPTS CALCULATED_MEMORY\” && MALLOC_ARENA_MAX=2 JAVA_OPTS=JAVAOPTSJAVAHOME=JAVAOPTSJAVAHOME=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启动脚本。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年06月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Netweaver
  • CloudFoundry
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档