1. 概述

ODI11G默认提供了WebService的调用接口,供其他各种应用程序通过接口控制、访问ODI自身的同步任务。

ODI11G在安装完成,启动代理后,会自动启动webservice的服务端口,对外提供WSDL文件服务,外部应用可以通过WSDL文件利用各种技术反向生成自身应用程序所需要的调用代码,本文将以Axis作为WebService容器来介绍,如何生成代码并调用ODI接口。

2.   技术说明

2.1ODI WebService介绍

ODI在安装过程中会默认生成一个“代理“,代理有设置的端口号,假设代理的端口为:505,那么当代理在服务器上成功启动以后,会生成一个web服务对外提供ODI控制所用的WSDL文件,地址为:

http://hostname:505(端口号)/oraclediagent/OdiInvoke?wsdl

2.2生成客户端调用代码

本文档以Axis生成Java代码为例进行详细介绍如下:

首先将附件《WebService调用ODI所需Eclipse插件》解压缩至Eclipse的plugins目录下,并启动Eclipse。

在启动后的Eclipse界面中,点击fileànewàOther,弹出如下界面:

界面中选择Axis2 CodeGenerator--->Next:

生成接口调用client代码

输入ODI的WSDL地址:

一般是localhost:505/oraclediagent/OdiInvoke?wsdl

然后根据提示生成Java代码,可以选择将java代码生成至某已有项目,如oditest

调用代码生成完毕之后,便可以正式开始书写客户端调用方法,用于调用ODI的数据同步场景或代理。

2.3编写Java类,调用ODI集成场景

以TestOdi类为例:

public class TestOdi{

public static voidmain(String[] args){

try {

OdiInvokeStubodiS=new OdiInvokeStub();

//OdiCredentialType,ScenarioRequestType分别是接口调用的两个核心参数

//OdiStartScenRequest是接口调用的直接参数

OdiStartScenRequeststartScenRequest=new OdiStartScenRequest();

ScenarioRequestTypescenaroRequest=new ScenarioRequestType();

scenaroRequest.setContext("GLOBAL");

scenaroRequest.setSynchronous(false);

scenaroRequest.setLogLevel(5);

scenaroRequest.setScenarioName("PKG_SZGS_TO_SSBZ");

scenaroRequest.setScenarioVersion("001");

//设置场景启动所需要的变量

VariableTypevt=new VariableType();

vt.setName("PRO_SZGS.RW_ID");

vt.setValue("260");

scenaroRequest.addVariables(vt);

//设置OdiCredentialType变量

OdiCredentialTypeodiCredentialType=new OdiCredentialType();

odiCredentialType.setWorkRepository("WORKREP");

odiCredentialType.setOdiUser("SUPERVISOR");

odiCredentialType.setOdiPassword("sanyuan");

//为OdiStartScenRequest对象设置其两个核心参数ScenarioRequestType及OdiCredentialType

startScenRequest.setRequest(scenaroRequest);

startScenRequest.setCredentials(odiCredentialType);

//通过OdiStartScenRequest对象启动ODI已经发布到代理上的场景

odiS.invokeStartScen(startScenRequest);

}catch(Exception e){

System.out.println(e);

}

}

}

一、声明主对象

在调用过程中首先需要生命调用的主对象:

OdiInvokeStub odiS=new OdiInvokeStub();。

二、声明核心参数(对象)

其次是调用ODI所依赖的核心参数(对象),OdiStartScenRequest,最终调用ODI场景时,将根据OdiStartScenRequest 的内容来启动具体的同步场景:odiS.invokeStartScen(startScenRequest);。

三、设置OdiStartScenRequest所依赖的两大属性(对象)

1、ScenarioRequestType

scenaroRequest.setContext("GLOBAL");//设置上下文,默认为GLOBAL

scenaroRequest.setSynchronous(false);//设置同步方式,即应用程序调用时是否等待ODI场景执行完成后才执行下一步。ODI默认为True,建议当同步任务所要处理的数据量较大、时间较长时,将该属性设为false。

scenaroRequest.setLogLevel(5);//设置日志级别

scenaroRequest.setScenarioName("PKG_SZGS_TO_SSBZ");//设置要调用的ODI场景的名称

scenaroRequest.setScenarioVersion("001");//设置要调用的ODI场景的版本号

假如需要为场景传递启动参数,那么需要以下步骤:

//设置场景启动所需要的变量

VariableTypevt=new VariableType();  //VariableType是odiinvoke.odi.com.oracle.xmlns.OdiInvokeStub.VariableType类型,是用于向ODI场景传递参数信息的载体,必须要声明

vt.setName("PRO_SZGS.RW_ID");设置参数(ODI变量)的名称,名称必须为变量的全路径:项目名.变量名 的形式

vt.setValue("260");//设置要向ODI变量传递的内容

scenaroRequest.addVariables(vt);//将变量添加到scenaroRequest中

2、OdiCredentialType

//设置OdiCredentialType变量

OdiCredentialTypeodiCredentialType=new OdiCredentialType();//声明OdiCredentialType

odiCredentialType.setWorkRepository("WORKREP");//设定当前要操作的ODI工作资料配置库名称

odiCredentialType.setOdiUser("SUPERVISOR");//设定管理员帐号(与客户端登录ODI的帐号相同)

odiCredentialType.setOdiPassword("sanyuan");//设定管理员密码

四、执行

//为OdiStartScenRequest对象设置其两个核心参数ScenarioRequestType及OdiCredentialType

startScenRequest.setRequest(scenaroRequest);

startScenRequest.setCredentials(odiCredentialType);

//通过OdiStartScenRequest对象启动ODI已经发布到代理上的场景

odiS.invokeStartScen(startScenRequest);

3.   小结

通过WebService方式调用ODI中的集成场景还要很多其他的方法可以使用,建议参照ODI二次开发手册详细了解。WebService的方式为ODI集成任务整合到业务流程提供了必要的支撑。

WebService调用ODI同步任务相关推荐

  1. 通过WebService调用SQLXML(SQL Server 2005) [ZT]

    [翻译]通过WebService调用SQLXML(SQL Server 2005) 原文发布日期:2007.02.04 作者:Russ Quinn 翻译:webabcd 介绍 我最近需要给用户创建一个 ...

  2. ExtJs异步ajax调用和同步ajax调用公用方法

    Js代码 //异步ajax调用 /** * 异步调用ajax,成功后返回值,作为回调函数的参数 调用失败会提示 * * @param {} *            urlStr * @param { ...

  3. springboot版本升级导致webservice调用失败org.apache.cxf.common.jaxb.JAXBUtils.createMininumEscapeHandle

    很感谢这位作者的文章https://blog.csdn.net/q340505050518/article/details/105394315 近期对项目版本进行升级 原项目版本 从 Springcl ...

  4. WebService调用

    WebService调用方法总结 一.客户端代理类 1.方式一. using System; using System.CodeDom; using System.CodeDom.Compiler; ...

  5. java两个项目之间通过webservice调用-源码仅供参考

    项目1.本项目为struts2项目所以需要配置配置文件 applicationcontex-cxf.xml配置 <!-- 定义具体实现的 Bean ,这个 Bean 的定义与 Spring 普通 ...

  6. 抖音sdk调用,同步抖音聊天会话列表

    抖音sdk调用,同步抖音聊天会话列表 /*** 同步抖音会话列表* @author wechat:happybabby110* @blog http://www.wlkankan.cn*/@Async ...

  7. webservice调用国内飞机航班时刻表 WEB 服务

    昨天帮朋友写的一个调用国内航班时刻表的测试程序,折腾了我好一会的时间,打算把它分享出来,共大家参考,其中wsdl:http://ws.webxml.com.cn/webservices/Domesti ...

  8. java webservice调用方式_java语言使用post方式调用webService方式

    展开全部 WebService可以有Get. Post.Soap.Document四种方式调62616964757a686964616fe78988e69d8331333337396232用,以下Ja ...

  9. Webservice调用错误(unexpected element (uri:, local:billType))解决

    帮同事看Webservice调用问题, 网上找了半天,只有问题并没有实际解决答案,报错如下: Unmarshalling Error: unexpected element (uri:"&q ...

最新文章

  1. Python元组tuple(不可变)
  2. 穿越剧_张宇鑫:穿越剧——从皇帝到乞丐
  3. [k8s]kubelet重启后无法启动
  4. Xilinx FPGA PLL输出不能直接连接IO解决方法
  5. 使用管理员权限运行的程序无法浏览网络驱动器的问题
  6. 字符串反转的进一步应用----单词反转
  7. .arx 与此版本的 AutoCAD 不兼容。
  8. 复杂截面抗扭惯矩计算
  9. 机器人庄园作文_300个字我的梦想作文
  10. mkv导入Pr没有音频,mkv无法导入的解决方法
  11. 微软并购雅虎案:世界商业三巨头的财智较量
  12. haproxy编译安装以及配置文档介绍
  13. Java Web中乱码问题
  14. 保姆级使用PyTorch训练与评估自己的MobileNetV2网络教程
  15. java榨汁机榨取不同水果,榨汁机别乱买,亲测榨水果翻车,九阳迷你原汁机评测...
  16. linux设置nexus开机自启动_linux nexus自启动
  17. js 延时执行 比如 sleep(1000) 意味着等待1000毫秒
  18. 360 so加壳动态脱壳方法
  19. 完美解决:Python3.10报错 No module named ‘_ssl‘
  20. oracle 经纬度的数据类型,4.2 SDO_GEOMETRY类型、属性和值

热门文章

  1. Android Studio 如何 安装 HAXM
  2. 三星android8 日期,三星披露升级Android 8.0时间 明年年初
  3. ffmpeg调整视频角度
  4. 机器学习笔记之降维(二)样本均值与样本方差的矩阵表示
  5. User32.dll下载+丢失修复
  6. tomcat是什么?通俗解释
  7. My97DatePicker,年份加周显示 YYYY-WW
  8. EV录屏有很大电流音的解决方法
  9. 项目管理中-采购管理
  10. uni-app封装axios