使用WebLogic共享库连续交付ADF应用程序

介绍

当ADF应用程序建立在共享库之上时,有一种非常流行的架构模式。 因此,主应用程序被部署为EAR,并且所有子系统都在共享库中实现,这些共享库可以在“热”模式下独立构建并作为JAR部署到WebLogic,而无需停机。 这种方法的优点似乎很明显:

  • 它分解了实现模块化和重用概念的应用程序
  • CI / CD流程可能会更快,因为将只重建/重新部署一个库
  • 重新部署共享库没有停机时间

看起来太酷了,人们可以在新项目中选择这种架构模式,并且对实现应用程序时所做出的决定感到非常满意。 当他们投入生产时,他们会变得更加高兴,因为他们可以轻松地修复大多数错误并实施新的要求,从而避免完全重新部署且没有任何停机时间。

毫无疑问,在投入生产之前,任何更改(以及相应的共享库)都应在以前的环境(例如QA,UAT等)中进行部署和测试。

一段时间内,没有人确切知道每种环境中部署了什么版本的共享库。 支持这种应用程序并在这种情况下实现新的更改有些棘手,因为即使它在这种环境下也可以工作,但由于共享库的组合可能有所不同,因此无法保证它将在下一个环境中正常工作。 如果它是一个大型应用程序,并且有许多共享库,那么这可能会成为一场噩梦,而且很多时候人们只是放弃重新部署所有内容,最终回到整体EAR。 并不是很酷,但是至少他们现在可以再次入睡了。

在这篇文章中,我将展示如何整理事物,并建立一个使用FlexDeploy在共享库之上构建的ADF应用程序的连续交付过程。 FlexDeploy是一个快速增长的自动化和DevOps解决方案,如果您想了解所有内容,请随时访问该网站 。 在这里,我将专注于FlexDeploy如何通过引入快照管线的概念,共享库帮助。

快照是代表整个系统的一组可部署工件。 如果要重建其中任何一个工件,那么将创建一个新快照,其中包含该工件的新版本以及其余工件的先前版本。 在我们的情况下,快照将包含用于主ADF应用程序的EAR和用于共享库的JAR。

为了为我们的应用程序创建快照,FlexDeploy应该知道它的全部内容和组成的项目。 FlexDeploy中有一个“ 发布”概念,它是一堆项目,应将其内置到快照中,并在整个环境中作为一个单元一起部署。

在我们的示例中,有3个项目-一个作为主应用程序,两个针对部门和员工任务流,部署为共享库。 每个项目都在FlexDeploy中单独配置,每个项目“知道”如何获取其源代码,如何构建和部署(FlexDeploy使用工作流进行构建和部署,但这是另一个重要的故事,远远超出了本文)。

完成所有定义后,只要开发人员为版本中包含的任何项目推动代码更改,FlexDeploy都会构建一个新快照。 它仅重建那些已更改的项目(生产耳朵和罐子),其余工件原样包含在新快照中。

好的,现在我们可以构建快照并将其部署到整个环境中。 版本定义是指管道。

管道是一种确保严格按照预定顺序在整个环境中部署整个快照的方法。 这意味着只能以Dev-> QA-> Prod的顺序(如果以此方式定义了管道)来部署此快照(换句话说,ear / jar版本的这种组合)。 如果在Dev和QA上不成功,那就无法进入Prod。 管道由涉及环境的各个阶段组成,每个阶段均由多个门(批准,测试结果等)组成,这意味着快照在此环境下进行处理之前应先通过所有门)和步骤(部署,运行自动测试,通知,手动步骤) ,…)。

因此,基本上,部署只是管道阶段(环境)中的一个管道步骤。 此步骤足够聪明,可以仅重新部署已更改的工件(除非将该步骤配置为执行“强制”部署)。 FlexDeploy跟踪在每个环境中已部署了哪些工件版本。

总结一下,我想说的是,当将FlexDeploy用作具有共享库的ADF应用程序的DevOps解决方案时,我们一方面获得了该架构模式的所有好处,另一方面我们可以使事情井井有条,确切知道已部署了哪种组合跨环境,什么已经过测试,可以投入使用,什么失败了。

而已!

翻译自: https://www.javacodegeeks.com/2017/12/continuous-delivery-adf-applications-weblogic-shared-libraries.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信号与系统 chapter1 常见信号及其变换

什么是信号? 它的定义及其宽泛,但在我们电子通信工程中,我们可以把它看成一种波形;在数学上,我们可以把它看成一个函数。说到函数,函数又分为离散与连续,信号也是一样,分为离散信号…

信号与系统 chapter2 冲激偶函数与阶跃函数

什么是冲激偶函数 简单来说,从负方向向0趋近,结果为无穷大,从正方向趋近于0,结果为无穷小 它的性质: 冲激函数求导得来,推广: 阶跃函数 会考察你让你写出函数表达式 看上面那个式子&#xf…

c语言对中文字符串编码_Python || 学习笔记(1):数据类型字符串变量和编码

数据类型特性:对于0很多的整数,python允许用_对0进行分离10_000_000_000就等同于1000000000016进制用0x开头进行表示对于很大或很小的浮点数必须使用科学计数法表示,表示方法为 2.13e10表示2.13x10^10转义字符与C语言一样,为\&…

信号与系统 chapter3 冲激函数的尺度变换

在chapter2里我们简单的示例了一个阶跃函数做尺度变换的例子,在这一节里我们会对冲激函数做尺度变换,同样很简单 关于δ(at)\delta(at)δ(at) 它的证明如下,使用换元法即可得到: 始终利用的是冲激函数只在t0t0t0处有意义 如果它…

信号与系统 chapter4 单位脉冲与单位阶跃序列

标题里有序列,说明咱们这里的自变量都是离散的,离散序列是相对于前面的连续信号而言,这里给它做了一个比较 单位脉冲序列 可以看到单位脉冲函数依然是十分牛批,只有在t0t0t0的地方才发挥作用 单位阶跃 两个单位阶跃序列做差可以…

原始性能数字– Spring Boot 2 Webflux与Spring Boot 1

我对性能测试的设置如下: 示例应用程序公开了一个端点(/ passthrough / message),该端点又调用下游服务。 到端点的请求消息如下所示: {"id": "1","payload": "sample payload&q…

信号与系统 chapter5 线性系统与非线性系统

今天我们说一说系统的分类 线性系统 顾名思义,满足线性性质的系统 它有三个特性: 齐次性可加性线性性 这里常见在选择题里让你判断 f1(.)f_{1}(.)f1​(.)代表的是激励,系统的响应不仅和它当前的状态相关,还和以前的状态相关的…

信号与系统 chapter6 时变与时不变系统

时不变系统 通俗来说,就是输入延迟一段时间后,输出也延迟一段相同的时间。比如说一个示波器,你要给它上电显示波形,你就是示波器的输入,你一按下开关,它就马上亮了;下次你在开关上发呆5秒钟再按…

信号与系统 chapter7 因果与非因果

“因果”这个词常常在佛教里提到,比如有因才有果,放在信号与系统里就是你有输入才有输出,但是在所有的系统中你有输入就一定有输出吗?又或者是你有输出但没有输入,这样的系统如何称呼? 此类系统称为非因果系…

互联网和大数据是什么意思_何为互联网大数据?为什么每个人在数据的面前,相当于一丝不挂?...

何为互联网大数据?大数据背后核心迷局是什么?那通过下面一段对话,您可能就明白了。——必胜客店的电话铃响了。客服拿起电话:客服:您好! 请问有什么需要我为您服务?顾客:你好! 我想要…

信号与系统 chapter8 LTI连续系统的描述

我们这里对LTI系统的描述主要是用在电路分析上,我们一般先写出电路方程,对电路方程抽象以后得到微分方程 LTI系统的数学模型 这里注意一下电感上要求二阶导数,电阻上求一阶,然后为每一项分别写上系数,倘若读者到这里还…

安装jdk步骤rpm_jenkins rpm包方式安装

war包方式安装jenkins已经说过java openjdk的安装和注意事项,这里不做赘述前提:确保 java的jdk或者jre已安装#]java -version#]whereis java (whereis查看程序运行命令的)#]ls -lrt /usr/bin/java#]ls -lrt /etc/alternatives/java这里简单讲下which、wh…

使用ADF绑定创建视图对象行CreateInsert操作

在这篇简短的文章中,我将重点介绍与在任务流中创建新记录的一种非常常见的方法有关的一个小陷阱。 让我们考虑一个简单的任务流示例,该任务流创建一个新的VO行,如果用户单击“确定”按钮,则在页面片段上显示该行并提交事务&#…

信号与系统 chapter9 关于信号与系统中微分方程的求解

微分方程的求解 许多同学之所以觉得信号与系统难的原因之一就在于它的数学推导,特别是对于一些高等数学基础比较薄弱的同学来说,且不说后面的求解傅里叶变换部分,目前的LTI连续系统微分方程的求解,已经是的有的同学感到云里雾里。…

信号与系统 chapter10 系统的初值问题与系数匹配法

系统的初值问题就是让你求一下系统在0时刻的y(t)y(t)y(t)函数 我们看到它要我们求关于t0t0t0时刻的一些参数,我们这里首先就要想到冲激函数,为什么?因为冲激函数最特殊,它的特性就是在0时刻才有定义,才有值&#xff0…

信号与系统 chapter11 LTI系统的响应

我发现好多人都喜欢写“LTI连续系统”,殊不知LTI的全称就是LinearTimeInvariantSystemsLinear Time Invariant SystemsLinearTimeInvariantSystems,已经写出线性连续时不变了,就不要再翻译中画蛇添足了。 言归正传,前面我们分析的…

Spring Boot&Angular 5&Spring Data&Rest示例(CRUD)

本教程提供了Spring Boot,Angular 5和spring数据的完整实现,以示例为例构建端到端的单页Java Web应用程序。我们将使用Spring Boot 1.5公开REST API和angular5并通过路由来构建我们的客户端不仅要消耗服务器公开的API,还要将MySql数据库与后端…

信号与系统 chapter12 卷积及其性质

卷积的概念 卷积算得上是信号与系统里面一个比较抽象的概念,它广泛应用在统计学、工程学,好多人明白了怎么做题,却仍然说不清楚卷积的概念,我们把它当作一种运算,它的运算形式如下: 有f1(t)f2(t)f_1(t)f_2…

第二章导数与微分思维导图_线性代数第二章 矩阵 思维导图

这章内容复习集中在两方面:矩阵乘法;可逆矩阵及相关内容(矩阵方程和伴随矩阵)。可逆矩阵是全课程的一个关键性概念,与各章内容都有联系,应着重注意这些联系。

图像的常用压缩技术以及视频码率的计算

图像压缩方法: 冗余度压缩方法:也称无损压缩,压缩比较低信息量压缩方法:有损压缩,多用在数字电视技术与静止图像通信,压缩编码中丢弃了一些没有作用的信息 压缩种类压缩方法无损压缩哈夫曼编码&#xff0…