Using Custom Java code in ODI
在ODI中调用jar包java方法的过程如下:
1、编写Java代码如下
代码写hello world字符串到一个文件。
package odi; import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream; public class HelloWorld { public static void Write_File_Windows() throws Exception { // 1、通过File找到一个文件 File file = new File("D:" + File.separator + "temp.txt"); // 2、实例化OutputStream对象 OutputStream out = new FileOutputStream(file); String info = "Hello World!!!"; // 要输出的字符串 byte data[] = info.getBytes();// 将字符串变为字节数组 out.write(data); // 输出内容 out.close(); } public static void Write_File_Linux() throws Exception { // 1、通过File找到一个文件 File file = new File("/home/oracle/temp.txt"); // 2、实例化OutputStream对象 OutputStream out = new FileOutputStream(file); String info = "Hello World!!!"; // 要输出的字符串 byte data[] = info.getBytes();// 将字符串变为字节数组 out.write(data); // 输出内容 out.close(); } }
2、生成Jar包
2.1 方法一 直接导出Jar包

如果引入了其他的jar包,则选择导出Runnable JAR file类型

2.2 方法二 手工编译并打包成jar包
javac 编译 jar打包
>javac HelloWorld.java >jar cvf HelloWorld.jar odi
三、复制生成的jar包到指定的目录
根据执行的逻辑代理的不同,复制jar包到不同的位置

3.1 使用本地Agent执行的时候(以window为例)
方法一: 复制生成的jar包到 C:\Users\<user-name>\AppData\Roaming\odi\oracledi\userlib
方法二: 复制生成的jar包到 E:\ODI12C\Middleware\Oracle_Home\odi\sdk\lib
方法三: 任意路径,但在 C:\Users\<user-name>\AppData\Roaming\odi\oracledi\userlib\additional_path.txt 中指定
; Additional paths file
; You can add here paths to additional libraries
; Examples:
; C:\ java\libs\myjar.jar
; C:\ java\libs\myzip.zip
; C:\java\libs\*.jar will add all jars contained in the C:\java\libs\ directory
; C:\java\libs\**\*.jar will add all jars contained in the C:\java\libs\ directory and subdirectories
D:\*.jar
3.2 使用配置的远程Agent(以Linux为例)
复制jar包到 data/Oracle/Middleware/Oracle_Home/user_projects/domains/odi_dev_domain/lib目录,需要重新启动ODI_Server
3.3 通用办法
复制jar到某个目录,后面在调用的时候使用下面的代码指定该位置。复制jar包到上面位置 ,在调用时无需下面的代码。
linux下
jars = [
"/data/script/HelloWorld.jar"
] for jar in jars:
sys.path.append(jar)
windows下
jars = [
"D:\HelloWorld.jar"
] for jar in jars:
sys.path.append(jar)
建议:开发的时候使用此方法,可以节省重启ODI_Server的时间。并且避免缓存对开发测试造成的影响。等测试优化完成后,可以使用第三种方法。
4、启动ODI,新建过程调用jar

windows下代码
import os
import sys
jars = [
"C:\Users\xqzt\AppData\Roaming\odi\oracledi\userlib\HelloWorld.jar"
] for jar in jars:
sys.path.append(jar)
from odi import HelloWorld hw=HelloWorld()
hw.Write_File_Windows()
linux下代码
import os
import sys jars = [
"/home/oracle/.odi/oracledi/userlib/HelloWorld.jar"
] for jar in jars:
sys.path.append(jar) from odi import HelloWorld hw=HelloWorld()
hw.Write_File_Linux()
4、运行并验证过程

参考:
http://karanbalkar.com/2013/06/tutorial-33-using-custom-java-code-in-odi/
http://shrikantdhagefmw.blogspot.com/2014/05/invoking-jar-in-oracle-data-integrator.html
http://askankit.blogspot.com/2010/09/call-java-jar-methods-from-odi.html
Using Custom Java code in ODI的更多相关文章
- Write Custom Java to Create LZO Files
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+LZO LanguageManual LZO Skip to e ...
- Java语言编码规范(Java Code Conventions)
Java语言编码规范(Java Code Conventions) 名称 Java语言编码规范(Java Code Conventions) 译者 晨光(Morning) 简介 本文档讲述了Java语 ...
- java code to byte code--partone--reference
Understanding how Java code is compiled into byte code and executed on a Java Virtual Machine (JVM) ...
- [转]Java Code Examples for android.util.JsonReader
[转]Java Code Examples for android.util.JsonReader The following are top voted examples for showing h ...
- SQL to Java code for Elasticsearch
Elasticsearch虽然定位为Search Engine,但是因其可以持久化数据,很多时候,我们把Elasticsearch当成Database用,但是Elasticsearch不支持SQL,就 ...
- JUnit单元测试教程(翻译自Java Code Geeks)
JUnit单元测试教程--终极指南 JUnit单元测试教程终极指南 说明 单元测试简介 1 什么是单元测试 2 测试覆盖 3 Java中的单元测试 JUnit简介 1 使用Eclipse实现简单JUn ...
- Java Code Style
近期困惑于团队成员代码风格迥异,代码质量不可控,作为一名老司机,忧患于后期服务的可维护性,多次一对一的代码Review,耗时耗力不说,效果也不明显.痛定思痛,多次反思之后得出结论:无规矩不成方圆,可靠 ...
- 玩转Eclipse — 自动代码生成的Java Code Template
文章转载地址:点击打开链接 当代码写到一定程度之后,就会发现很多代码都被重复地敲了N多遍,甚至毫不夸张地说:闭着眼睛都能敲出来.大量地敲这些重复地代码,除了锻炼敲键盘的速度,基本上没有其他益处,但是长 ...
- Use formatter to format your JAVA code
In order to make the codes looks unified and make it easy to understand, it's better to use the same ...
随机推荐
- MySQL 查询优化简记
今天尝试对一张MySQL表做查询优化, 500W数据 但是发现加了索引比不加索引使用全表扫描还慢, 上网查, 据说是因为需要回表, 因为没有用到 using index(覆盖索引), 而回表查询是随机 ...
- postgresql共享内存的三个结构体
本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/16105797 postgresql的共享内存维护主要 ...
- FastReport.Net 入门
任何一门编程技术入门体验都是以“Hello World”开始的,但我想再复杂一点的“Hello World”,才能算真正的入门. FastReport.Net V1.2.76 ,vs2008 在 ...
- maskrcnn_benchmark代码分析(2)
maskrcnn_benchmark训练过程 ->训练命令: python tools/train_net.py --config-file "configs/e2e_mask_rcn ...
- Gridview利用DataFormatString属性设置数据格式
首 先把Gridview的AutoGenerateColumns属性设为False(默认是False),DataField选择相应的字段,特别需要注 意的是要把需要设置的字段的HtmlEncode属性 ...
- iOS开发-消息通知机制(NSNotification和NSNotificationCenter)
iOS中委托模式和消息机制基本上开发中用到的比较多,一般最开始页面传值通过委托实现的比较多,类之间的传值用到的比较多,不过委托相对来说只能是一对一,比如说页面A跳转到页面B,页面的B的值改变要映射到页 ...
- RxJava【变换】操作符 map flatMap concatMap buffer MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- VB.NET,C#.NET调用Web Service,利用visual studio 的实现方法
下面是一篇文章比较详细,其实具体操作很简单,把Web Service服务地址,利用工具(VS2010),通过添加引用的形式,添加到项目中来就可以应用了. 大家如果这个地方不会操场的话,可以问问我QQ: ...
- 实战HMM-Viterbi角色标注地名识别
http://www.hankcs.com/nlp/ner/place-names-to-identify-actual-hmm-viterbi-role-labeling.html 命名实体识别(N ...
- ueditor插入自定义内容和样式
UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点 通过UEditor提供的API接口可以很方便的读写操作内容并设置编辑器里的样式 页 ...