OdiInvokeWebService的应用

    技术2022-06-12  49

    在ODI中通过OdiInvokeWebService执行方案invokeScenario中,遇到了几个错误,总的来说可能由于以下几个方面设置报错造成的:

    1、用户名密码设置问题

       不管是JdbcPassword还是OdiPassword,都无需加密,直接输入该密码,注意大小写

    2、端口设置错误

        invokeScenario方法调用时,需要输入Agent的端口。该端口应为Scheduler对应的端口,通常容易滥用其他端口,如ListenerAgent对应的端口。端口不正确可能会产生类似以下错误:

    Agent didn't prepare this command: Error during Session Preparation : Driver must be specified

    3、方案的名称无需指定工程,直接写方案名即可

    4、Agent部分对应的Host应为ODI服务器主资料库所在的主机名或者是IP地址

    5、连接部分的jdbcURL应为ODI主资料库对应的url信息。

    6、执行超时,是否调用方案不成功问题

        直接运行的方案本身就需要执行很长时间时,在 invokeScenario方法的调用下,如果设置SyncMode模式为1,time out时间为默认,则会报以下错误:

     com.sunopsis.wsinvocation.SnpsWSInvocationException: java.net.SocketTimeoutException: Read timed out at com.sunopsis.wsinvocation.client.a.a.d.requestReply(d.java)

     

      原因是:SyncMode为1意味着同步执行,需等待方案执行完毕后才能返回消息,这就面临着超时的可能,因此在数据量很大的时候,可以设置SyncMode为2.但上述报错,本身没有影响方案调用的结果,方案还是被执行的。

     

    完整的参数信息如下所示:

     

    <invokeScenarioRequest>

     

    <invokeScenarioRequest>

     

    <RepositoryConnection>

     

    <JdbcDriver>oracle.jdbc.driver.OracleDriver</JdbcDriver>

     

    <JdbcUrl>jdbc:oracle:thin:@xxx.xx.xx.xxx:1521:orcl</JdbcUrl>

     

    <JdbcUser>SOAM</JdbcUser>

     

    <JdbcPassword>TEMP</JdbcPassword>

     

    <OdiUser>ADMIN</OdiUser>

     

    <OdiPassword>TEMP</OdiPassword>

     

    </RepositoryConnection>

     

    <Command>

     

    <ScenName>ERP_SIEBEL_LOAD_DISTRIBUTOR_RS_DATA_CDC</ScenName>

     

    <ScenVersion>001</ScenVersion>

     

    <Context>Global</Context>

     

    <LogLevel>5</LogLevel>

     

    <SyncMode>1</SyncMode>

     

    </Command>

     

    <Agent>

     

    <Host>xxx.xx.xx.xxx</Host>

     

    <Port>20913</Port>

     

    </Agent>

     

    </invokeScenarioRequest>

     

    </invokeScenarioRequest>

     


    最新回复(0)