oracle 10g 调用 axis2,接口有发布成功。但oracle 调用有问题。第一次写oracle 调用 webservice.CREATE OR REPLACE FUNCTION call_sayHello(username IN VARCHAR2)
RETURN VARCHAR2 AS
l_service SYS.UTL_DBWS.service;
l_call SYS.UTL_DBWS.call;
l_result ANYDATA;
l_wsdl_url VARCHAR2(1024);
l_service_name VARCHAR2(200);
l_operation_name VARCHAR2(200);
l_input_params SYS.UTL_DBWS.anydata_list;
BEGIN
l_wsdl_url := 'http://192.168.0.169:8081/ic/services/ICSMSService?wsdl';
l_service_name := 'ICSMSService';
l_operation_name := 'sendMsg';
l_service := SYS.UTL_DBWS.create_service(wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),
service_name => l_service_name);
l_call := SYS.UTL_DBWS.create_call(service_handle => l_service,
port_name => NULL,
operation_name => l_operation_name);
l_input_params(1) := ANYDATA.ConvertVarchar2(username);
l_result := SYS.UTL_DBWS.invoke(call_handle => l_call,
input_params => l_input_params);
SYS.UTL_DBWS.release_call(call_handle => l_call);
SYS.UTL_DBWS.release_service(service_handle => l_service);
RETURN ANYDATA.AccessVarchar2(l_result);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(sqlerrm);
RETURN NULL;
return sqlerrm;
END call_sayHello;报错ORA-29532: Java 调用被未捕获的 Java 异常错误终止: serialization error: java.lang.IllegalArgumentException: getSerializer requires a Java type and/or an XML type求实例或发现错误。
RETURN VARCHAR2 AS
l_service SYS.UTL_DBWS.service;
l_call SYS.UTL_DBWS.call;
l_result ANYDATA;
l_wsdl_url VARCHAR2(1024);
l_service_name VARCHAR2(200);
l_operation_name VARCHAR2(200);
l_input_params SYS.UTL_DBWS.anydata_list;
BEGIN
l_wsdl_url := 'http://192.168.0.169:8081/ic/services/ICSMSService?wsdl';
l_service_name := 'ICSMSService';
l_operation_name := 'sendMsg';
l_service := SYS.UTL_DBWS.create_service(wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),
service_name => l_service_name);
l_call := SYS.UTL_DBWS.create_call(service_handle => l_service,
port_name => NULL,
operation_name => l_operation_name);
l_input_params(1) := ANYDATA.ConvertVarchar2(username);
l_result := SYS.UTL_DBWS.invoke(call_handle => l_call,
input_params => l_input_params);
SYS.UTL_DBWS.release_call(call_handle => l_call);
SYS.UTL_DBWS.release_service(service_handle => l_service);
RETURN ANYDATA.AccessVarchar2(l_result);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(sqlerrm);
RETURN NULL;
return sqlerrm;
END call_sayHello;报错ORA-29532: Java 调用被未捕获的 Java 异常错误终止: serialization error: java.lang.IllegalArgumentException: getSerializer requires a Java type and/or an XML type求实例或发现错误。
解决方案 »
- oracle数据库和数据仓库的关系
- 怎么循环添加数据?
- 大侠们,oracle中的字符串能否比较大小啊??
- oracle不同IP不同数据库,同一机子如何连接上两个oracle数据库
- 我有个sql,3个字符型的数值,求平均值。可是这3个数中如果有0,就得到空值?
- 安装好8.16在w2kads底下server端还要配置什么啊?oem怎么样配置?
- toad中如何设置成自动提交语句呢?如何设置rollback区域呢
- 救命呀,我的数据库DOWN了-----在线等待
- 很着急!!这个问题如何解决?数据导入问题?
- oracle9i导入问题
- 数据相应字段生成head头,超难。。高手来回答
- 关于myEclipse中tomcat 6.0启动慢的问题
return VARCHAR2 AS
service_ sys.utl_dbws.SERVICE;
call_ sys.utl_dbws.CALL;
service_qname sys.utl_dbws.QNAME;
port_qname sys.utl_dbws.QNAME;
operation_qname sys.utl_dbws.QNAME;
string_type_qname sys.utl_dbws.QNAME;
retx ANYDATA;
retx_string VARCHAR2(100);
retx_len number;
params sys.utl_dbws.ANYDATA_LIST;
begin
service_qname := sys.utl_dbws.to_qname(null, 'ICSMSService');
service_ := sys.utl_dbws.create_service(service_qname);
port_qname := sys.utl_dbws.to_qname(null, 'ICSMSServicePortType');
operation_qname := sys.utl_dbws.to_qname('http://webService.ic.jst.com', 'sendMsg');
call_ := sys.utl_dbws.create_call(service_, port_qname, operation_qname);
sys.utl_dbws.set_target_endpoint_address(call_, 'http://192.168.0.169:8081/ic/services/ICSMSService.ICSMSServiceHttpSoap11Endpoint');
-- sys.utl_dbws.set_property(call_, 'ENCODINGSTYLE_URI', 'http://schemas.xmlsoap.org/soap/encoding/');
string_type_qname := sys.utl_dbws.to_qname('http://www.w3.org/2001/XMLSchema', 'string');
sys.utl_dbws.add_parameter(call_, 'String_1', string_type_qname, 'ParameterMode.IN');
sys.utl_dbws.set_return_type(call_, string_type_qname);
params(0) := ANYDATA.convertvarchar(xmlstring);
retx := sys.utl_dbws.invoke(call_, params);
retx_string := retx.accessvarchar2;
dbms_output.put_line('PL/SQL DII client return ' || retx_string);
RETURN ANYDATA.AccessVarchar2(retx);
EXCEPTION
WHEN OTHERS THEN
RETURN substr(sqlerrm, 0, 2000);
END FUNC_GENERATE_LOGINNAME;
<MSG><HEAD><RET_CODE>F</RET_CODE><RET_MSG>xml文件格式不正确</RET_MSG></HEAD><BODY></BODY></MSG>