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 ...
随机推荐
- Orchard模块开发全接触5:深度改造前台第二部分
在这一部分,我们继续完善我们的购物车,我们要做以下一些事情: 1:完成 shoppingcart.cshtml: 2:让用户可以更新数量及从购物车删除商品: 3:创建一个 widget,在上面可以看到 ...
- 使用C++ Builder XE5获取Sensor值之Light Sensor
献上代码C++代码,仅供參考. 若使用Delphi.请參考文献,http://blogs.embarcadero.com/davidi/2013/12/02/43032/ 一定记得要安装FireMon ...
- QT中文乱码与国际化支持
QT国际化支持 Qt内部采用的全Unicode编码,这从根本上保证了多国语界面实现的正确性和便捷性.Qt本身提供的linguist工具,用来实现翻译过程十分方便.MFC中利用资源DLL切换资源,或 ...
- 【转】Redis 总结精讲 看一篇成高手系统-4
https://www.cnblogs.com/rjzheng/p/9096228.html 本文围绕以下几点进行阐述 1.为什么使用redis2.使用redis有什么缺点3.单线程的redis为什么 ...
- 不用中间变量交换两个数 swap(a,b);
#include <iostream> using namespace std; int main () { ; ; cout<<"a="<<a ...
- Visual Studio 2008 安装失败(“Web 创作组件”无法安装)(转)
今天安装VS2008时出现了问题,怎么都无法安装成功.装了好几次都在“Visual Studio Web 创作组件(Visual Studio Authoring Component)”的安装的时候失 ...
- 如何在Vblock里配置Boot from SAN
啥是vBlock ============ vBlock是VCE用在包含了它的数据中心产品的组件的机架上的一个商标名. 机架中的组件都是有VCE出厂前预先组装好的, 组件的预设以及解决方案, 都是客户 ...
- IIS通过HTML5实现应用程序缓存的离线浏览
这里我是使用的IIS7: IIS7发布了网站后要想使用HTML5的应用程序缓存,需要增加一个关于文本/缓存清单( text/cache-manifest)的新的MIME类型,选中网站添加一个MIME类 ...
- 混合开发 Hybird Cordova PhoneGap web 跨平台 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- LeakCanary 内存泄漏 监测 性能优化 简介 原理 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...