oracle adf_Fn函数来构建Oracle ADF应用程序

oracle adf

在我之前的一篇文章中,我描述了如何创建一个Docker容器作为ADF应用程序的构建器。 在这里,我将展示如何将此容器用作
在FN平台的功能

首先,让我们更新容器,使其符合功能要求,这意味着可以将其作为接受某些参数的可运行二进制文件进行调用。 在一个空文件夹中,我创建了一个具有以下内容的Dockerfile(只是一个具有此名称的简单文本文件):

FROM efedorenko/adfbuilder
ENTRYPOINT ["xargs","mvn","package","-DoracleHome=/opt/Oracle_Home","-f"]

该文件包含有关Docker的说明,说明如何从现有映像中创建新的Docker映像(上一篇文章中的efedorenko / adfbuilder),并指定一个入口点,以便容器知道由Docker 运行启动后该怎么做。命令。 在这种情况下,每当我们运行一个容器时,该容器都会为pom文件执行从stdin提取的名称的Maven 软件包目标。 这很重要,因为Fn平台将stdin / stdout用于函数输入/输出作为标准方法。

在同一文件夹中,我们执行命令以从我们的Docker文件中构建一个新的Docker映像(fn_adfbuilder):

docker build -t efedorenko/fn_adfbuilder.

现在,如果我们运行容器通过stdin传递pom文件名,如下所示:

echo -n "/opt/MySampleApp/pom.xml" | docker run -i --rm efedorenko/fn_adfbuilder

容器将在其内部执行我们实际需要的内容:

mvn package -DoracleHome=/opt/Oracle_Home -f/opt/MySampleApp/pom.xml

基本上,这样做之后,我们得到了一个充当函数的容器。 它为给定的pom文件构建一个应用程序。

让我们在Fn平台中使用此功能。 在本地计算机上安装Fn就像调用单个命令一样简单,并在GitHub Fn项目页面上进行了介绍。 安装完Fn之后,我们可以指定Docker注册表,在其中存储函数容器的映像并启动Fn服务器:

export FN_REGISTRY=efedorenko
fn start

下一步是创建一个Fn应用程序,它将使用我们的强大功能:

fn apps create adfbuilderapp

对于这个新创建的应用程序,我们必须指定一个指向函数约束器的路由,以便该应用程序知道何时以及如何调用它:

fn routes create --memory 1024 --timeout 3600 --type async adfbuilderapp /build efedorenko/fn_adfbuilder:latest

我们创建了一条路线,说每当adfbuilderapp请求/ build资源时,Fn平台应基于efedorenko存储库中最新版本的fn_adfbuilder映像创建一个新的Docker容器,并运行它以提供1GB内存并将参数传递给stdin (默认模式)。
  此外,由于建筑是一项耗时/耗资源的工作,因此我们将以一个小时超时的异步模式调用该函数。 创建路由后,我们可以使用Fn Cli调用该函数:

echo -n "/opt/MySampleApp/pom.xml" | fn call adfbuilderapp /buildor over http:curl -d "/opt/MySampleApp/pom.xml" http://localhost:8080/r/adfbuilderapp/build

在这两种情况下,平台都会将呼叫放入队列(因为它是异步的)并返回呼叫ID:

{"call_id":"01C5EJSJC847WK400000000000"}

该功能现在正在运行,我们可以通过多种不同方式检查它的运行情况。 由于函数调用只是创建和运行Docker容器,因此我们可以通过获取所有正在运行的容器的列表来查看它:

docker psCONTAINER ID        IMAGE                               CREATED             STATUS                NAMES6e69a067b714        efedorenko/fn_adfbuilder:latest     3 seconds ago       Up 2 seconds          01C5EJSJC847WK400000000000e957cc54b638        fnproject/ui                        21 hours ago        Up 21 hours           clever_turing68940f3f0136        fnproject/fnserver                  27 hours ago        Up 27 hours           fnserver

Fn创建了一个新容器,并使用函数调用ID作为其名称。 我们可以将stdin / stdout附加到容器上,看看里面发生了什么:

docker attach 01C5EJSJC847WK400000000000

函数执行后,我们可以使用Fn Rest API(或Fn Cli)来请求有关调用的信息:

http://localhost:8080/v1/apps/adfbuilderapp/calls/01C5EJSJC847WK400000000000{"message":"Successfully loaded call","call":{"id":"01C5EJSJC847WK400000000000","status":"success","app_name":"adfbuilderapp","path":"/build","completed_at":"2018-02-03T19:52:33.204Z","created_at":"2018-02-03T19:46:56.071Z","started_at":"2018-02-03T19:46:57.050Z","stats":[{"timestamp":"2018-02-03T19:46:58.189Z","metrics":

……

http://localhost:8080/v1/apps/adfbuilderapp/calls/01C5EJSJC847WK400000000000/log
{"message":"Successfully loaded log","log":{"call_id":"01C5EKA5Y747WK600000000000","log":"[INFO] Scanning for projects...\n[INFO] ------------------------------------------------------------------------\n[INFO] Reactor Build Order:\n[INFO] \n[INFO] Model\n[INFO] ViewController\n[INFO]

我们还可以使用Fn UI仪表板以一种精美的方式监视函数调用:

我们工作的结果是构建ADF应用程序的功能。 它的优点在于,函数的使用者(调用者)仅使用基于HTTP的Rest API来构建应用程序,而调用者并不关心如何以及在何处完成此工作。 但是调用者可以肯定地知道,计算资源的使用时间不会超过完成工作所需的时间。

下次,我们将尝试在Fn Flow中协调功能。

而已!

翻译自: https://www.javacodegeeks.com/2018/02/fn-function-build-oracle-adf-application.html

oracle adf

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

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

相关文章

Sublime Text 4.0 4102 安装插件的问题

文章目录安装包控件(Package Control)如何安装插件打开 Install Package 面板搜索和安装插件无法打开 Install Package 面板的问题故障排除安装包控件(Package Control) 要安装插件,必须先安装 Package Control&#…

系统制成docker镜像_docker 制作自己的镜像

查看 docker的服务状态systemctl status docker如果没有启动的话,要先启动 docker 服务systemctl start docker制作自己的镜像1.从远程仓库拉取一个纯净的 centos 系统镜像查询 centos 相关的镜像docker search centos下载镜像到本地docker pull 镜像名查看本地镜像…

Pytorch机器学习/深度学习代码笔记

代码步骤笔记导入模块设置参数数据预处理定义数据集1.Dataset2.ImageFolder加载数据集DataLoadertorchvision--数据预处理要使用的库torchvision.datasetstorchvision.modelstorchvision.transforms训练网络参数训练前的准备设置指定的训练设备(GPU、CPU)定义损失函数定义优化器…

maven安装教程安装教程_Maven教程之春

maven安装教程安装教程1.简介 在这篇文章中,我们将演示如何针对非常特定的用例对Spring使用Maven依赖项。 我们使用的所有库的最新版本都可以在Maven Central上找到。 对于一个有效的构建周期来说,了解Maven依赖项的工作方式以及如何对其进行管理很重要…

如何完全卸载 Sublime Text

只是在应用程序删除软件是不够,你还必须把下面这个目录删除掉才行: /Users/liaowenxiong/Library/Application Support/Sublime Text /Users/liaowenxiong/Library/Preferences/Sublime Text /Users/liaowenxiong/Library/Caches/Sublime Text不这么干&…

5位随机数重复的概率 php_PHP产生不重复随机数的5个方法总结

无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地。在最近接触的几个小项目中,我也经常需要和随机数或者随机数组打交道,所以,对于PHP如何产生不重复随机数常用的几种方法小结一下(ps:方法1、4、5是…

pytorch实现图像分类代码实例

图像多标签分类例子 import os import torch import torch.nn as nn import torchvision.transforms as transforms import torchvision.datasets as datasets import torchvision.models as models import matplotlib.pyplot as plt from matplotlib.ticker import MultipleL…

空调吸气和排气_吸气剂和二传手被认为有害

空调吸气和排气Java程序员习惯性地用“ getters”和“ setters”来修饰类,这种做法根深蒂固,以至于几乎没有人质疑为什么这样做或是否应该这样做。 最近,我认为最好不要这样做,并且我开始在编写的Java代码中避免使用它。 在这篇博…

Sublime Text for Mac 如何格式化代码

文章目录格式化 HTML/CSS/JS格式化 Java/C/C格式化 HTML/CSS/JS 格式化 HTML/CSS/JS,请安装插件:html-css-js prettify 格式化的快捷键:Shift Cmd H html-css-js prettify 的简介: Usage Tools -> Command Palette (CmdS…

ic启动器我的世界_hmcl启动器下载-我的世界HMCL启动器下载 v3.3.172官方最新版--pc6下载站...

我的世界HMCL启动器是我的世界游戏玩家必备的游戏启动器,是三年来超过使用3亿次的老牌启动器,不需要其他任何设置,操作非常方便,本站提供现在最新版本下载。我的世界HMCL启动器是我的世界游戏玩家必备的游戏启动器,是三…

C++核心编程笔记

C核心编程1 内存分区模型1.1 程序运行前1.2 程序运行后1.3 new操作符2 引用2.1 引用的基本使用2.2 引用注意事项2.3 引用做函数参数2.4 引用做函数返回值2.5 引用的本质2.6 常量引用3 函数提高3.1 函数默认参数3.2 函数占位参数3.3 函数重载3.3.1 函数重载概述3.3.2 函数重载注…

Sublime Text 如何设置组合快捷键

Sublime 有个功能叫再次缩进(Reindent),我就以这个功能为例讲下如何设置快捷键,这个功能的菜单路径是:Edit ➠ Line ➠ Reindent,有人说这个再次缩进可以格式化代码,扯淡,缩进两下也…

朝着理想坚实迈进_坚实原则:开放/封闭原则

朝着理想坚实迈进先前我们讨论了单一责任原则。 关于实体原则首字母缩写, 打开/关闭原则是该行中的第二个原则。 “软件实体(类,模块,功能等)应打开以进行扩展,但应关闭以进行修改” 通过采用该原理&…

协程asyncio_Python 异步模块 asyncio 中的协程与任务

协程(Coroutine)是允许执行被挂起、恢复、以及取消的程序。Python 3 中最初是使用 asyncio.coroutine 装饰器和 yield from 关键字组合来实现协程。单词 yield 在这里并非在生成器(Generator)中所表示的“产出”,而是交…

ie8兼容性视图灰色修复_IE8网页显示不正常 用”兼容性视图”搞定

网页显示不正常,出现图片错位,文字跑远……等等,别急,试试IE8自带的”兼容性视图”功能吧!其实出现网页显示问题,一般不是您的电脑或者浏览器有问题,而是由于各网站开发标准不同,所以在不同的浏…

GAN对抗生成网络原始论文理解笔记

文章目录论文:Generative Adversarial Nets符号意义生成器(Generator)判别器(Discriminator)生成器和判别器的关系GAN的训练流程简述论文中的生成模型和判别模型GAN的数学理论最大似然估计转换为最小化KL散度问题定义PGP_GPG​全局最优论文:Generative A…

php cdi_CDI和lambda的策略模式

php cdi策略设计模式在运行时动态选择一种实现算法,一种策略。 该模式可用于根据情况选择不同的业务算法。 我们可以将不同的算法实现定义为单独的类。 或者,我们利用Java SE 8 lambda和函数,这些lambda和函数在此处用作轻量级策略实现。 C…

Linux 命令之 cp -- 复制文件或目录

文章目录一、命令介绍二、常用选项三、命令示例(一)复制某个目录到某个目录下(二)复制文件(三)复制文件到目标目录下,若存在文件则备份(四)复制某个目录的全部文件到某个…

向上累积频数怎么算_excel数据分析向上累计和向下累计怎么做呢

2016-07-08 00:25赵飞虎 客户经理一、Excel在分析性测试、复核中的运用注册会计师在分析审计风险确定重点审计领域、重要性水平和重大异常经济业务事项时,常常要对被审计单位的会计报表进行分析性测试和复核。在执行具体审计程序时,也常常要对本期数和上…

okta使用_使用Okta的单点登录保护您的Vert.x服务器

okta使用“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。 Vert.x是Spring生态系统中增长最快的元素之一,保护Vert.x服务器可…