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

oracle adf_Fn函数来构建Oracle ADF应用程序相关推荐

  1. oracle中文转换为unicode,oracle 用函数unistr将Oracle数据库中的Unicode转换为中文

    用函数unistr将Oracle数据库中的Unicode转换为中文 1:保留连续的中文 select regexp_substr('Hello,大家好!greeting', '[' || unistr ...

  2. Fn函数来构建Oracle ADF应用程序

    在我以前的一篇文章中,我描述了如何创建一个Docker容器作为ADF应用程序的构建器. 在这里,我将展示如何将此容器用作 在FN平台的功能 . 首先,让我们更新容器,使其符合功能要求,这意味着可以将其 ...

  3. oracle自定义函数获取省份,oracle 自定义函数 方法 基本例子

    核心提示:函数用于返回特定数据.执行时得找一个变量接收函数的返回值; 语法如下: create or replace function function_name ( argu1 [mode1] da ...

  4. docker构建oracle集群,docker 构建 oracle数据库 镜像-Go语言中文社区

    前言 之前docker 部署的 oracle 镜像,突然从 dockerhub 下架了.所以没办法,只能自己打包一个oracle 数据库的镜像. 找来找去,其实oracle 自身就提供了oracle ...

  5. oracle in函数的使用,oracle in 函数

    IN操作符 select * from scott.emp where empno=7369 or empno=7566 or empno=7788 or empno=9999: select * f ...

  6. oracle decode函数什么意思,oracle decode函数的用法

    oracle decode函数,不管查询的结果是否满足'PRIMARY',参数中的select语句还是会执行的,通过查看执行计划就知道 set autotrace traceonly select d ...

  7. oracle instr函数用法和(oracle 用instr 来代替 like)

    最近项目中出现oracle instr函数,于是在网上找了一下关于它的资料. Oracle中INSTR和SUBSTR的用法 Oracle中INSTR的用法: INSTR方法的格式为 INSTR(源字符 ...

  8. oracle开窗函数是什么,ORACLE数据库(六)-----开窗函数

    ORACLE数据库(六)-----开窗函数 开窗函数又名分析函数.窗口函数.OLAP(数据分析)函数 聚合函数:将数据按照一定的规则分组,统一分析各组的某项情况,每个分组返回一行结果 开窗函数:将数据 ...

  9. oracle sum函数返回类型,Oracle / PLSQL SUM函数

    这个Oracle教程解释了如何使用Oracle / PLSQL SUM函数. SUM(x) 添加x中的所有值,并返回总和. SUM函数对一组行进行操作,并返回一行输出. Null值被SUM函数忽略.您 ...

最新文章

  1. CSS 盒子模型(转)
  2. ASP.NET连接带密码Access的方法
  3. ie 打开后端发过来的pdf_某办公软件PDF阅读器漏洞挖掘及Crash分析
  4. Win32汇编ListBox最简Demo
  5. 张向东:就以当年期望别人对我们那样的方式
  6. Ibatis中的大于、小于、like等符号写法
  7. 20145307《信息安全系统设计基础》第二周学习总结
  8. 20165306 Exp9 Web安全基础
  9. 操作系统—哲学家进餐问题
  10. 2021年华为杯数学建模参赛经验分享
  11. Centos安装maven
  12. ImageIO 先read再write 文件变小了
  13. 新媒体运营与营销秘笈
  14. 微信小程序第七章 图片替换
  15. 如何用requests获取百度网站的图片资源
  16. 深度学习项目实战——手写数字识别项目
  17. 一步步构建剧本杀门店应用小程序
  18. 淘宝打标 卡首屏auction tag代码(关键词、黑搜、猜你喜欢、直通车、打标)
  19. 【光学】基于matlab GS算法高斯光转换成高阶高斯光+一阶空心高斯光+贝塞尔高斯光【含Matlab源码 2166期】
  20. Linux操作系统——系统用户与用户组管理

热门文章

  1. 4.6模拟 宽度优先搜索
  2. P5180-[模板]支配树
  3. 【DP】错排问题(ybtoj DP-1-1)
  4. 初一级模拟试题总结(2019.3.2)
  5. 34、JAVA_WEB开发基础之EL表达式和标签
  6. Sentinel(二)之Quick Start
  7. JS document.execCommand实现复制功能
  8. Redis 常用操作命令,非常详细
  9. JavaFX UI控件教程(二十一)之Tooltip
  10. 跟我学 Java 8 新特性之 Stream 流(七)流与迭代器,流系列大结局