我的前一篇文章 使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数介绍了在SAP云平台的Neo环境下如何通过SAP Cloud Connector消费ABAP On-Premise系统里的函数。在那篇文章demo程序的Java代码里,我们实际是通过JCO(Java Connector)来远程调用ABAP On-Premise系统里的函数。
今天我们换个环境,试试SAP云平台的CloudFoundry环境。
同时我们也试试换一种方式来消费ABAP On-Premise系统的服务。让我们开发一个Web应用,通过OData的方式显示ABAP On-Premise系统里的产品列表及价格信息。
该例子运行效果如下图所示。
同前一篇文章提到的在SAP云平台的Neo环境里消费ABAP On-Premise函数相比,在CloudFoundry环境里实现同样的需求,所需的步骤要复杂一些。
同Neo环境的部署相比,在CloudFoundry环境下最显著的架构区别就是多了个App Router。为什么CloudFoundry环境下需要这个东西?我的同事李贝宁在他的文章 SAP成都研究院李三郎:SCP Application Router简介 里做过详细阐述。
为了完成这个例子,我们需要部署两个应用到SAP云平台的CloudFoundry环境去,即App Router和Web应用本身。两个例子的完整代码在我的github上:
https://github.com/i042416/CloundFoundry_Connectivity
上图各模块间交互的简单阐述:
1. App Router作为用户访问Web应用的入口。
2. App Router将请求重定向到XSUAA实例,弹出登录界面。该实例负责完成登录认证,稍后会创建它。下图是登录界面在我手机上打开的效果。
3. 登录完成后,App Router将请求重定向到Web应用。
4. Web应用向XSUAA发起两个并行的请求,如图4a和4b所示,获取用于访问接下来第5,第6步的JSON Web Token。
5. Web应用访问Destination实例获取对应配置信息。
6. Web应用将请求发送给Connectivity实例。
7. Connectivity实例将请求通过Secure tunnel(安全隧道)转发给Cloud Connector。
8. Cloud Connector和On-Premise系统都位于Corporate Network里,直接调用其服务。
明白了原理,下面跟着Jerry一起做一做吧。
1. 我前一篇文章 使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数介绍了Cloud Connector的下载与安装,因此现在我们可以重用之前安装好的Cloud Connector。
点击Add Subaccount按钮,基于CloudFoundry Subaccount创建一个新的配置:
最重要的是维护CloudFoundry Subaccount的ID和用户名(登录邮箱)。
创建一个从Virtual Host到Internal Host的映射关系。Virtual Host的名称可以随便维护,我维护的是my-backend, 记住这个名称,以后会用到。Internal Host我维护的是提供OData服务的On-Premise系统的主机名和端口号。点击Check按钮,确保Cloud Connector能够成功连接On-Premise系统,状态为Reachable。
将On-Premise系统的下列4个ICF服务路径暴露出来:
-
/sap/bc/lrep
-
/sap/iwbep
-
/sap/opu/odata
-
/sap/public
至此Cloud Connector上的配置完成了。
2. 回顾我们之前介绍的模块交互图,Cloud Connector上的配置无法直接被部署在CloudFoundry上的应用消费。我们还需要在SAP云平台上创建三个不同类型的实例。
首先在SAP云平台Cockpit里创建一个新的Destination,URL字段指向前一步Cloud Connector里创建的Virtual Host。这个Destination的名称也得记录下来,后面会用到。
进入Service Marketplace,创建一个新的XSUAA实例:
这个connectivity-jerry-demo就是稍后我要部署到SAP云平台上的Web应用名称。
创建好的XSUAA实例:
connectivity和destination的实例创建的方式相同,不再赘述。下图是为了完成本文介绍的场景所需的三个不同类型的实例创建好之后的状态截图。
至此SAP云平台上的配置也全部完成。
3. 现在开始Web应用的开发。先看App Router的xs-app.json: 入口文件是index.html, 这个html文件其实就一行代码:
<a href="/app/">Go to App</a>
点击之后,会跳转到/app/, 而/app/的route配置如下,指向destination "dest-to-app":
而这个destination对应的真实url维护在App Router的manifest.yml文件中。同样需要在该yml文件的services字段里维护前一步创建的XSUAA实例:
再看Web应用的manifest.yml文件:需要将前一步骤依次创建的三种类型的实例名称分别维护如下图所示:
接下来我们需要进行Web应用里UI5部分的开发,指定产品列表的数据源基于哪一个OData服务。在UI5的controller文件里,指定OData模型的路径为相对路径data-eu。
针对这个相对路径data-eu,在neo-app.json里定义了一个路由,会被重定向到On-Premise系统的标准OData服务EPM_REF_APPS_SHOP_SRV。具体重定向到哪个On-Premise系统是由路由的target字段决定的。在我这个例子里是jerry-abap-backend, 它就是我们之前在SAP云平台Cockpit里创建的Destination。
这个Destination的URL字段指向Cloud Connector的Virtual host,该host又映射到On-Premise系统的主机名和端口号。至此大功告成了,SAP Cloud Connector上的配置,App Router,Web应用,SAP云平台上的connectivity,XSUAA和destination三个实例,这一系列模型犹如一台机器上的一个个零件,协同工作,实现了从Internet Network到Corporate Network的访问场景。
将两个应用部署到SAP云平台的CloudFoundry环境去,点击App Router作为访问的入口,能看到文章开头的产品列表页面。
并且Chrome开发者工具里观察到的网络请求的路径里仅仅包含前文提到的UI5应用的neo-app.json里配置的路由data-eu, 而On-Premise系统的主机名和端口号并未暴露到Cloud环境中。
当然,为了跑这个demo,您需要在On-Premise系统使用事务码/iwfnd/maint_service,为EPM_REF_APPS_SHOP_SRV这个标准的OData服务指定一个后台系统。在我下图的例子里,该服务的后台实现系统我指定成了AG3。
在Java代码里打印实际的url,发现是http://my-backend:80/sap/opu/odata/sap/EPM_REF_APPS_SHOP_SRV/$metadata。
该url里的my-backend:80会被Cloud Connector替换成实际的On-Premise系统的地址并发送到On-Premise系统去。
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
相关推荐
CloudFoundry作为一个开源的PaaS(Platform as a Service)平台,为开发者提供了极大的灵活性,让他们能够在不同的云平台上选择开发框架与应用服务。该平台最初由VMware创建,并迅速获得了业界广泛支持。 - **Cloud...
Cloud Foundry是一个开源的平台即服务(PaaS)系统,由Pivotal Software维护,用于构建、部署和管理云应用程序。这个技术的核心在于提供了一种高效、可扩展的方式来托管和运行各种应用程序,无论它们是基于微服务...
CloudFoundry是一种开源的PaaS(平台即服务)云平台,它允许用户在云环境中部署和运行应用程序,而无需关注底层硬件或操作系统的细节。它的设计理念是提供一个高可用、弹性的环境,帮助开发者快速部署应用程序,并且...
标题 "Spring 与 Cloud Foundry:在云中珠联璧合" 暗示了本文将探讨Spring框架如何与Cloud Foundry云平台相结合,发挥出强大的云计算能力。这两个技术的结合,为企业提供了高效的开发和部署环境,实现了快速迭代和可...
【标题】"cloudfoundry-runtime-0.8.4_Java8_cloud_" 指的是一个针对 Cloud Foundry 运行时环境的特定版本,这个版本是为 Java 8 语言定制的。Cloud Foundry 是一个开源的平台即服务(PaaS)系统,允许开发者构建、...
VMware鼓励第三方不仅在自己的CloudFoundry.com平台上部署应用,还可以创建私有云或公共云平台,提供更多的特性和服务。例如,AppFog基于Cloud Foundry并增加了PHP支持,AppState建立了支持Perl和Python的私有云,而...
在理解Cloud Foundry之前,我们需要先了解云计算的基本层次结构,即基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。其中,IaaS主要关注于硬件资源的虚拟化和自动化管理,实现了人与机器的解耦合...
CloudFoundry云平台部署手册.pdf
该存储库包含一个示例参考应用程序,该应用程序解释了使用SaaS Provisioning服务在Cloud Foundry环境的SAP Cloud Platform上开发和部署SaaS(软件即服务)多租户业务应用程序所涉及的步骤。 通过此示例应用程序,您...
Cloud Foundry是一个开源的PaaS(平台即服务)平台,旨在为开发者提供一个快速开发、部署和运行应用程序的环境。它最初由VMware发起,并于2011年公开发布,随后在Pivotal公司得到了进一步的发展。Cloud Foundry支持...
在CloudFoundry平台上部署MongoDB,可以充分利用其弹性和可扩展性优势。开发者可以轻松地为自己的应用绑定MongoDB服务实例,并利用CloudFoundry提供的自动化部署和管理功能。此外,CloudFoundry还支持使用Spring框架...
Cloud Foundry是一个开源的平台即服务(PaaS)框架,由Pivotal Software公司发起,并由Cloud Foundry基金会维护。这个平台旨在简化应用程序的部署和管理,为开发者提供了一个高效且灵活的开发环境,同时也为企业提供...
SAP Cloud Platform Cloud Foundry环境简介是一种开源的平台即服务(PaaS)技术,具有广泛的行业支持。 提供了开源Cloud Foundry技术的优势,以及多种差异化的企业级特性和功能。 Cloud Foundry的一项关键设计原则是...
CloudFoundry开源云计算平台简介rar,提供“CloudFoundry开源云计算平台简介”免费资料下载,主要包括Cloud Foundry的概述、Cloud Foundry的架构、使用Cloud Foundry部署应用等内容,可供学习使用。
Get started with Cloud Foundry, the leading Platform as a Service (PaaS) that’s dramatically changing how developers, operations practitioners, and especially DevOps teams deploy applications and ...
云计算、OpenStack、Cloud-Foundry、Kubernetes-简介-PPT
这些示例说明了如何使用由SAP Cloud Platform管理的独立应用程序路由器或HTML5应用程序运行时来实现不同的目标,它们还演示了Cloud Foundry环境中HTML5应用程序存储库服务的功能。 在SAP Cloud Platform的Cloud ...
Cloud Foundry是一个开源的平台即服务(PaaS)云平台,最初由VMware发起,旨在为开发者提供在不同云环境中自由选择开发框架和应用服务的能力。这个平台的核心目标是让开发者能够专注于应用程序的编写,而不必操心...
一个简单的应用程序,演示了如何使用Spring Cloud Cloud Foundry组件读取VCAP_SERVICES并初始化多个数据源。... 您可以在Cloud Foundry中使用代理服务,也可以将用户提供的服务与Spring Cloud Cloud
Cloud Foundry是VMware于推出的业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。同时,它本身是...