在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的更多相关文章

  1. Write Custom Java to Create LZO Files

    https://cwiki.apache.org/confluence/display/Hive/LanguageManual+LZO LanguageManual LZO     Skip to e ...

  2. Java语言编码规范(Java Code Conventions)

    Java语言编码规范(Java Code Conventions) 名称 Java语言编码规范(Java Code Conventions) 译者 晨光(Morning) 简介 本文档讲述了Java语 ...

  3. java code to byte code--partone--reference

    Understanding how Java code is compiled into byte code and executed on a Java Virtual Machine (JVM) ...

  4. [转]Java Code Examples for android.util.JsonReader

    [转]Java Code Examples for android.util.JsonReader The following are top voted examples for showing h ...

  5. SQL to Java code for Elasticsearch

    Elasticsearch虽然定位为Search Engine,但是因其可以持久化数据,很多时候,我们把Elasticsearch当成Database用,但是Elasticsearch不支持SQL,就 ...

  6. JUnit单元测试教程(翻译自Java Code Geeks)

    JUnit单元测试教程--终极指南 JUnit单元测试教程终极指南 说明 单元测试简介 1 什么是单元测试 2 测试覆盖 3 Java中的单元测试 JUnit简介 1 使用Eclipse实现简单JUn ...

  7. Java Code Style

    近期困惑于团队成员代码风格迥异,代码质量不可控,作为一名老司机,忧患于后期服务的可维护性,多次一对一的代码Review,耗时耗力不说,效果也不明显.痛定思痛,多次反思之后得出结论:无规矩不成方圆,可靠 ...

  8. 玩转Eclipse — 自动代码生成的Java Code Template

    文章转载地址:点击打开链接 当代码写到一定程度之后,就会发现很多代码都被重复地敲了N多遍,甚至毫不夸张地说:闭着眼睛都能敲出来.大量地敲这些重复地代码,除了锻炼敲键盘的速度,基本上没有其他益处,但是长 ...

  9. 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 ...

随机推荐

  1. MySQL 查询优化简记

    今天尝试对一张MySQL表做查询优化, 500W数据 但是发现加了索引比不加索引使用全表扫描还慢, 上网查, 据说是因为需要回表, 因为没有用到 using index(覆盖索引), 而回表查询是随机 ...

  2. postgresql共享内存的三个结构体

    本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/16105797 postgresql的共享内存维护主要 ...

  3. FastReport.Net 入门

    任何一门编程技术入门体验都是以“Hello World”开始的,但我想再复杂一点的“Hello World”,才能算真正的入门.   FastReport.Net V1.2.76 ,vs2008 在 ...

  4. maskrcnn_benchmark代码分析(2)

    maskrcnn_benchmark训练过程 ->训练命令: python tools/train_net.py --config-file "configs/e2e_mask_rcn ...

  5. Gridview利用DataFormatString属性设置数据格式

    首 先把Gridview的AutoGenerateColumns属性设为False(默认是False),DataField选择相应的字段,特别需要注 意的是要把需要设置的字段的HtmlEncode属性 ...

  6. iOS开发-消息通知机制(NSNotification和NSNotificationCenter)

    iOS中委托模式和消息机制基本上开发中用到的比较多,一般最开始页面传值通过委托实现的比较多,类之间的传值用到的比较多,不过委托相对来说只能是一对一,比如说页面A跳转到页面B,页面的B的值改变要映射到页 ...

  7. RxJava【变换】操作符 map flatMap concatMap buffer MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. VB.NET,C#.NET调用Web Service,利用visual studio 的实现方法

    下面是一篇文章比较详细,其实具体操作很简单,把Web Service服务地址,利用工具(VS2010),通过添加引用的形式,添加到项目中来就可以应用了. 大家如果这个地方不会操场的话,可以问问我QQ: ...

  9. 实战HMM-Viterbi角色标注地名识别

    http://www.hankcs.com/nlp/ner/place-names-to-identify-actual-hmm-viterbi-role-labeling.html 命名实体识别(N ...

  10. ueditor插入自定义内容和样式

    UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点   通过UEditor提供的API接口可以很方便的读写操作内容并设置编辑器里的样式   页 ...