zoukankan      html  css  js  c++  java
  • 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包

    image

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

    image

    2.2 方法二 手工编译并打包成jar包

    javac 编译  jar打包

    >javac HelloWorld.java
    
    >jar cvf HelloWorld.jar odi

     

    三、复制生成的jar包到指定的目录

    根据执行的逻辑代理的不同,复制jar包到不同的位置

    image

    3.1 使用本地Agent执行的时候(以window为例)

    方法一:     复制生成的jar包到 C:Users<user-name>AppDataRoamingodioraclediuserlib

    方法二:   复制生成的jar包到 E:ODI12CMiddlewareOracle_Homeodisdklib

    方法三:     任意路径,但在 C:Users<user-name>AppDataRoamingodioraclediuserlibadditional_path.txt 中指定

    ; Additional paths file
    ; You can add here paths to additional libraries
    ; Examples:
    ;    C: javalibsmyjar.jar
    ;    C: javalibsmyzip.zip
    ;    C:javalibs*.jar will add all jars contained in the C:javalibs directory
    ;    C:javalibs***.jar will add all jars contained in the C:javalibs 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

    clip_image003

    windows下代码

    import os
    import sys
    
     
    jars = [
    "C:UsersxqztAppDataRoamingodioraclediuserlibHelloWorld.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、运行并验证过程

    clip_image004

    参考:

    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

  • 相关阅读:
    求树的直径算法
    二叉排序树BST+求树深度算法
    HDU1114Piggy-Bank(完全背包)
    HDU1102(最小生成树Kruskal算法)
    NYoj289苹果(0-1背包)
    NYOJ201作业题
    C#发送邮件附件
    JS用户登录保存账号密码
    远程连接服务器
    博客园页面更新了
  • 原文地址:https://www.cnblogs.com/xqzt/p/4762316.html
Copyright © 2011-2022 走看看