Netweaver

在Jerry的微信公众号文章SAP Fiori应用的三种部署方式里提到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?
打开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/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启动脚本。

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

Netweaver和CloudFoundry是如何运行Web应用的?相关推荐

  1. linux安装eclipse运行web,Linux安装Tomcat,运行Eclipse,web项目

    到官网下载:https://tomcat.apache.org/download-80.cgi  在这里是8.5.39版本 下载tar,gz 提取解压后,我这里是放到opt目录下 cd  切换目录 / ...

  2. Idea运行web项目时,提示java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方法

    Idea运行web项目时,提示java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方法 参考文章: (1)Idea运行web项目时,提示j ...

  3. Jetty实战之 嵌入式Jetty运行web app

    Jetty实战之 嵌入式Jetty运行web app 博客分类: 应用服务器 jettywar  转载地址:http://blog.csdn.net/kongxx/article/details/72 ...

  4. eclipse集成tomcat运行web时提示引入jar包的类找不到的解决办法

    在eclipse集成tomcat开发web时,java类引入的jar包,编译通过,但启动tomcat运行web时提示找不到jar包内的类,需要作如下配置,将jar包在部署到集成的tomcat环境中. ...

  5. docker 运行 web 服务和部署 Go web app

    docker 运行 web 服务 和 部署 Go web app 文章目录 docker 运行 web 服务 和 部署 Go web app 一.docker 简介 二.docker 运行 web 服 ...

  6. 解决运行web项目问题:localhost: 8080 is already in use

    在我们运行web项目中,有时候可能会出现localhost: 8080 is already in use这个问题.这表示我们8080端口已经被占用.据我目前所见,总共有两种类型. 第一种:tomca ...

  7. IDEA运行web项目及乱码处理

    一.IDEA配置Tomcat运行web项目的步骤 之前一直在eclipse上进行web项目开发,刚转IDEA,发现在IDEA上部署Tomcat并不一样,比eclipse部署要麻烦些. 这是我使用的版本 ...

  8. jsp日报系统+mysql_工作日报系统软件(运行web程序+说明) 日报管理系统 - 下载 - 搜珍网...

    文件名大小更新时间 工作日报系统软件(运行web程序+说明)\工作日报系统软件\ribao\app\add.html29272015-01-16 工作日报系统软件(运行web程序+说明)\工作日报系统 ...

  9. 关于运行web项目出现的问题及解决方案

    文章目录 1.运行web项目之后,发现没有出现.iml文件 问题描述 解决方法 2.在运行Tomcat的时候没有显示出target目录 问题描述 解决方法 3.当在Idea中运行Tomcat会出现报错 ...

最新文章

  1. 一周内咸鱼疯传2.4W次,最终被所有大厂封杀
  2. 给eth0增加一个IP
  3. latex中bibtex中引用会议和期刊论文时的写法及规则
  4. oracle 中时间类型 date 与 long 互转
  5. 【渝粤教育】国家开放大学2018年春季 0529-22T高级英语阅读(1) 参考试题
  6. java invoke 泛型_利用Java反射机制和泛型,全自动解析json
  7. springboot公共模块打包_SpringBoot多模块项目打包方法(jar和war)
  8. 【记录】我在浙江省机器人大赛的第一天
  9. 使用c++为node.js扩展模块
  10. 右键桌面的计算机图标管理没用,计算机桌面图标消失了,鼠标右键没有响应
  11. Excel 批量删除空白行,你用了 2 小时,同事 3 分钟就搞定了
  12. AD9854 MSP430 代码总结
  13. Πολιτική απορρήτου
  14. 2022年度“十大基础研究关键词”在深发布
  15. java http请求发送unicode_Java发送http请求
  16. okhttp3 Response.body().toString()
  17. IP协议以及IP地址分类
  18. 计算机系男生生的都是女儿吗,IT男只能生女孩,生男孩几率很小吗?
  19. 加快数字创新赋能实体经济 CDEC2021中国数字智能生态大会成都站今日举行
  20. TSN网络中的Qbu和IEEE 802.3br帧抢占是如何工作的?

热门文章

  1. 基于ID3、C4.5算法的决策树相关知识
  2. 第三次学JAVA再学不好就吃翔(part93)--LinkedHashMap
  3. R语言之离群点检验(part1)--利用箱线图原理检测离群点
  4. mysql循环建表_mysql创建存储过程,批量建表分表00到99
  5. 实用知识点梳理:BGP协议、调制解调技术、路由特点、VOIP、FTP、Cookie、滑动窗口协议与自动重传请求
  6. 通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识
  7. SAP Spartacus新建org unit之后,排序不正确的问题分析
  8. Hybris服务器启动日志分析
  9. how is configuration data loaded for framework preloadLibCss
  10. My task - how is inline creation implemented