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 ...
随机推荐
- DES、MD5、RSA加密算法
本篇主要是实现标题中的三个加密算法,至于机制大家自行百度吧. 一.DES 实现类:DES.java package com.kale.des; import java.security.SecureR ...
- 在EditText中限制输入,自定义样式,监听输入的字符,自动换行
自动获取焦点 <!-- 添加:<requestFocus /> 会自动获取焦点 --> <EditText android:layout_width="matc ...
- Cannot convert type SomeClass to 'T'
以下代码会出问题: public static T Protect<T>(Func<T> func, UserLevel pageRole) where T : ActionR ...
- HTML5 本地文件操作之FileSystemAPI实例(三)
文件夹操作demo 1.读取根目录文件夹内容 window.requestFileSystem = window.requestFileSystem || window.webkitRequestFi ...
- SQLSERVER系统视图 sql server系统表详细说明
参考 https://www.cnblogs.com/luluping/archive/2012/11/05/2754639.html https://www.cnblogs.com/litubin/ ...
- 构建-4 dependencies 依赖管理
官方文档 Add build dependencies The Gradle build system in Android Studio makes it easy to include exter ...
- js获取当前域名、Url、相对路径和参数
用 Javascript 可以单独获取当前域名.Url.相对路径和参数,所谓单独攻取,即域名不包括网页文件的路径和参数.参数不包括域名和网页文件路径,下面分别介绍. 一.js获取当前域名有2种方法 1 ...
- 第一个手写Win32窗口程序
第一个手写Win32窗口程序 一 Windows编程基础 1 Win32应用程序的基本类型 1.1 控制台程序 不需要完善的Windows窗口,可以使用DOS窗口 的方式显示. 1.2 Win32窗口 ...
- 给ajax表单提交数据前面加上实体名称
有时候我们后台做了一个引用类型例如: 下面的实体以C#为例 public class Order{ public string orderId{get;set;} public OrderItem o ...
- 配置 Windows 下的 nodejs C++ 模块编译环境 安装 node-gyp
配置 Windows 下的 nodejs C++ 模块编译环境 根据 node-gyp 指示的 Windows 编译环境说明, 简单一句话就是 "Python + VC++ 编译环境&quo ...