oracle调用web severs,PL/SQL调用WebService

现在已经调通了,代码如下:

CREATE OR REPLACE PROCEDURE PRC_TEST_WEBSERVICE(p_i number,p_job_id number,p_monitor_id number,p_unit_id number,p_wsdl_url VARCHAR2)

AS

l_service  UTL_DBWS.service;

l_call     UTL_DBWS.call;

l_result   ANYDATA;

v_error_msg VARCHAR2(1000 CHAR);

l_wsdl_url        VARCHAR2(1024);

l_service_name    VARCHAR2(200);

l_operation_name  VARCHAR2(200);

l_input_params    UTL_DBWS.anydata_list;

BEGIN

--l_wsdl_url       := 'http://192.168.248.87:8090/test/services/testfordispatch.jws?WSDL';

--l_service_name   := 'testfordispatchService';

--l_operation_name := 'TaskUnitProgMonitor';

l_wsdl_url:='http://'||p_wsdl_url||'/framework/services/OracleCallJava.jws?wsdl';

--l_service_name:=p_service_name;

l_operation_name:='runJob';

l_service := UTL_DBWS.create_service (

wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),

service_name           => NULL);

l_call := UTL_DBWS.create_call (

service_handle => l_service,

port_name      => NULL,

operation_name => l_operation_name);

l_input_params(0) := ANYDATA.CONVERTNUMBER(p_job_id);

l_input_params(1) := ANYDATA.CONVERTNUMBER(p_unit_id);

l_input_params(2) := ANYDATA.CONVERTNUMBER(p_monitor_id);

l_result := UTL_DBWS.invoke (

call_handle  => l_call,

input_params => l_input_params);

UTL_DBWS.release_call (call_handle => l_call);

UTL_DBWS.release_service (service_handle => l_service);

--dbms_output.put_line(ANYDATA.AccessVarchar2(l_result));

--p_result:='S|'||ANYDATA.AccessVarchar2(l_result);

EXCEPTION

WHEN OTHERS THEN

--dbms_output.put_line(SQLERRM);

--p_result:='F|'||ANYDATA.AccessVarchar2(l_result);

v_error_msg:='内部错误:'||substr(SQLERRM,1,1000);

INSERT INTO tb_job_monitor_errmsg(monitor_id,task_id,unit_id,err_msg,monitor_dt)

VALUES(p_monitor_id,p_job_id,p_unit_id,v_error_msg,SYSDATE);

update tb_job_monitor set end_date=sysdate,status='CF' where ID=p_monitor_id and unit_id=p_unit_id;

COMMIT;

gpdic_tb_invoke_job.create_sub_job(p_i,p_unit_id,p_job_id,p_monitor_id);

END;

但还有一个问题就是,如果主机不存在,或者关机的话,这个要等7-8分钟的时间,才返回错误消息,我想设置超时时间短一些,不知道这里有没有什么方法可以设置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值