"No Deserializer found" using UTL_DBWS
Hi guys,
I've been using web services before, but I just can't set this one up.
I tried sooo many different combinations in namespaces and such, but the code below still gives
ORA-29532: Java call terminated by uncaught Java exception: javax.xml.rpc.soap.SOAPFaultException: No Deserializer found to deserialize a 'http://es.tsystems.icam.iit.comunicacioIndirecta.consultarIt.presentacio.webservices/IConsultarItWS.xsd:ns1:usuari' using encoding style 'null'. [java.lang.IllegalArgumentException]
CREATE OR REPLACE FUNCTION K_TEST RETURN VARCHAR2 AS
v_WSDL VARCHAR2(100) := 'https://pre.salut.gencat.net/sic_iit/AppJava/ConsultarItWS?WSDL';
v_service UTL_DBWS.SERVICE;
v_call UTL_DBWS.CALL;
v_request CLOB;
v_response XMLTYPE;
BEGIN
v_service := UTL_DBWS.CREATE_SERVICE(UTL_DBWS.TO_QNAME(NULL, 'ConsultarItWS'));
v_call := UTL_DBWS.CREATE_CALL(v_service);
UTL_DBWS.SET_TARGET_ENDPOINT_ADDRESS(v_call, v_WSDL);
UTL_DBWS.SET_PROPERTY(v_call, 'OPERATION_STYLE', 'DOCUMENT');
UTL_DBWS.SET_PROPERTY(v_call, 'ENCODINGSTYLE_URI', 'http://schemas.xmlsoap.org/soap/encoding/');
v_request := '
<ns1:ConsultaSituacioIT xmlns:tns="http://es/tsystems/icam/iit/comunicacioIndirecta/consultarIt/presentacio/webservices/ConsultarItWS.wsdl" xmlns:ns1="http://es.tsystems.icam.iit.comunicacioIndirecta.consultarIt.presentacio.webservices/IConsultarItWS.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns1:es_tsystems_icam_iit_comunicacioIndirecta_comuns_vo_ConsultaSituacioITVO">
<ns1:usuari xsi:type="ns1:es_tsystems_icam_iit_comunicacioIndirecta_comuns_vo_UsuariVO">
<CODI_USUARI xsi:type="xsd:string">M003</CODI_USUARI>
<CLAU_USUARI xsi:type="xsd:string">temp</CLAU_USUARI>
<NOM_USUARI xsi:type="xsd:string">Proves</NOM_USUARI>
<PRIMER_COGNOM_USUARI xsi:type="xsd:string">Activa</PRIMER_COGNOM_USUARI>
<SEGON_COGNOM_USUARI xsi:type="xsd:string"></SEGON_COGNOM_USUARI>
<NUM_COLEGIAT xsi:type="xsd:string"></NUM_COLEGIAT>
<DNI_USUARI xsi:type="xsd:string">37735679K</DNI_USUARI>
</ns1:usuari>
<atencioPrimaria xsi:type="ns1:es_tsystems_icam_iit_comunicacioIndirecta_comuns_vo_AtencioPrimariaVO">
<TIPUS_AP_COMUNICADORA xsi:type="xsd:string">1</TIPUS_AP_COMUNICADORA>
<CODI_AP_COMUNICADORA xsi:type="xsd:string">M003</CODI_AP_COMUNICADORA>
<COLEGIACIO xsi:type="xsd:string"></COLEGIACIO>
<CODI_PROVINCIA_COLEGIAT xsi:type="xsd:string"></CODI_PROVINCIA_COLEGIAT>
<NUMERO_COLEGIAT xsi:type="xsd:string"></NUMERO_COLEGIAT>
<DIGIT_CONTROL_COLEGIAT xsi:type="xsd:string"></DIGIT_CONTROL_COLEGIAT>
<NOM_COLEGIAT xsi:type="xsd:string"></NOM_COLEGIAT>
<PRIMER_COGNOM_COLEGIAT xsi:type="xsd:string"></PRIMER_COGNOM_COLEGIAT>
<SEGON_COGNOM_COLEGIAT xsi:type="xsd:string"></SEGON_COGNOM_COLEGIAT>
</atencioPrimaria>
<ciutada xsi:type="ns1:es_tsystems_icam_iit_comunicacioIndirecta_comuns_vo_PeticioCiutadaVO">
<NIC_CIUTADA xsi:type="xsd:string"></NIC_CIUTADA>
<NASS_CIUTADA xsi:type="xsd:string">080213160436</NASS_CIUTADA>
<NIA_CIUTADA xsi:type="xsd:string"></NIA_CIUTADA>
<CIP_CIUTADA xsi:type="xsd:string"></CIP_CIUTADA>
<DOCUMENT_ID_CIUTADA xsi:type="xsd:string">37453036M</DOCUMENT_ID_CIUTADA>
<TIPUS_DOCUMENT_CIUTADA xsi:type="xsd:string">1</TIPUS_DOCUMENT_CIUTADA>
<NOM_CIUTADA xsi:type="xsd:string">JORGE</NOM_CIUTADA>
<PRIMER_COGNOM_CIUTADA xsi:type="xsd:string">ADRO</PRIMER_COGNOM_CIUTADA>
<SEGON_COGNOM_CIUTADA xsi:type="xsd:string">MO</SEGON_COGNOM_CIUTADA>
<GENERE xsi:type="xsd:string">H</GENERE>
<DATA_NAIXEMENT xsi:type="xsd:string">11/01/1952</DATA_NAIXEMENT>
</ciutada>
<episodi xsi:type="ns1:es_tsystems_icam_iit_comunicacioIndirecta_comuns_vo_EpisodiIndicadorAnulacioVO">
<IND_ANULATS xsi:type="xsd:string"></IND_ANULATS>
</episodi>
<resultat xsi:type="ns1:es_tsystems_icam_iit_comunicacioIndirecta_comuns_vo_ResultatVO">
<CODI_ERROR xsi:type="xsd:string"></CODI_ERROR>
<DESCRIPCIO_ERROR xsi:type="xsd:string"></DESCRIPCIO_ERROR>
</resultat>
</ns1:ConsultaSituacioIT>
v_response := UTL_DBWS.INVOKE(v_call, XMLTYPE(v_request));
RETURN null;
END K_TEST;Any expert in WSDL that knows how to define the XML for the request to deserialize?
Thanks for any suggestions,
K.
Hi guys,
I've been using web services before, but I just can't set this one up.
I tried sooo many different combinations in namespaces and such, but the code below still gives
ORA-29532: Java call terminated by uncaught Java exception: javax.xml.rpc.soap.SOAPFaultException: No Deserializer found to deserialize a 'http://es.tsystems.icam.iit.comunicacioIndirecta.consultarIt.presentacio.webservices/IConsultarItWS.xsd:ns1:usuari' using encoding style 'null'. [java.lang.IllegalArgumentException]
CREATE OR REPLACE FUNCTION K_TEST RETURN VARCHAR2 AS
v_WSDL VARCHAR2(100) := 'https://pre.salut.gencat.net/sic_iit/AppJava/ConsultarItWS?WSDL';
v_service UTL_DBWS.SERVICE;
v_call UTL_DBWS.CALL;
v_request CLOB;
v_response XMLTYPE;
BEGIN
v_service := UTL_DBWS.CREATE_SERVICE(UTL_DBWS.TO_QNAME(NULL, 'ConsultarItWS'));
v_call := UTL_DBWS.CREATE_CALL(v_service);
UTL_DBWS.SET_TARGET_ENDPOINT_ADDRESS(v_call, v_WSDL);
UTL_DBWS.SET_PROPERTY(v_call, 'OPERATION_STYLE', 'DOCUMENT');
UTL_DBWS.SET_PROPERTY(v_call, 'ENCODINGSTYLE_URI', 'http://schemas.xmlsoap.org/soap/encoding/');
v_request := '
<ns1:ConsultaSituacioIT xmlns:tns="http://es/tsystems/icam/iit/comunicacioIndirecta/consultarIt/presentacio/webservices/ConsultarItWS.wsdl" xmlns:ns1="http://es.tsystems.icam.iit.comunicacioIndirecta.consultarIt.presentacio.webservices/IConsultarItWS.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns1:es_tsystems_icam_iit_comunicacioIndirecta_comuns_vo_ConsultaSituacioITVO">
<ns1:usuari xsi:type="ns1:es_tsystems_icam_iit_comunicacioIndirecta_comuns_vo_UsuariVO">
<CODI_USUARI xsi:type="xsd:string">M003</CODI_USUARI>
<CLAU_USUARI xsi:type="xsd:string">temp</CLAU_USUARI>
<NOM_USUARI xsi:type="xsd:string">Proves</NOM_USUARI>
<PRIMER_COGNOM_USUARI xsi:type="xsd:string">Activa</PRIMER_COGNOM_USUARI>
<SEGON_COGNOM_USUARI xsi:type="xsd:string"></SEGON_COGNOM_USUARI>
<NUM_COLEGIAT xsi:type="xsd:string"></NUM_COLEGIAT>
<DNI_USUARI xsi:type="xsd:string">37735679K</DNI_USUARI>
</ns1:usuari>
<atencioPrimaria xsi:type="ns1:es_tsystems_icam_iit_comunicacioIndirecta_comuns_vo_AtencioPrimariaVO">
<TIPUS_AP_COMUNICADORA xsi:type="xsd:string">1</TIPUS_AP_COMUNICADORA>
<CODI_AP_COMUNICADORA xsi:type="xsd:string">M003</CODI_AP_COMUNICADORA>
<COLEGIACIO xsi:type="xsd:string"></COLEGIACIO>
<CODI_PROVINCIA_COLEGIAT xsi:type="xsd:string"></CODI_PROVINCIA_COLEGIAT>
<NUMERO_COLEGIAT xsi:type="xsd:string"></NUMERO_COLEGIAT>
<DIGIT_CONTROL_COLEGIAT xsi:type="xsd:string"></DIGIT_CONTROL_COLEGIAT>
<NOM_COLEGIAT xsi:type="xsd:string"></NOM_COLEGIAT>
<PRIMER_COGNOM_COLEGIAT xsi:type="xsd:string"></PRIMER_COGNOM_COLEGIAT>
<SEGON_COGNOM_COLEGIAT xsi:type="xsd:string"></SEGON_COGNOM_COLEGIAT>
</atencioPrimaria>
<ciutada xsi:type="ns1:es_tsystems_icam_iit_comunicacioIndirecta_comuns_vo_PeticioCiutadaVO">
<NIC_CIUTADA xsi:type="xsd:string"></NIC_CIUTADA>
<NASS_CIUTADA xsi:type="xsd:string">080213160436</NASS_CIUTADA>
<NIA_CIUTADA xsi:type="xsd:string"></NIA_CIUTADA>
<CIP_CIUTADA xsi:type="xsd:string"></CIP_CIUTADA>
<DOCUMENT_ID_CIUTADA xsi:type="xsd:string">37453036M</DOCUMENT_ID_CIUTADA>
<TIPUS_DOCUMENT_CIUTADA xsi:type="xsd:string">1</TIPUS_DOCUMENT_CIUTADA>
<NOM_CIUTADA xsi:type="xsd:string">JORGE</NOM_CIUTADA>
<PRIMER_COGNOM_CIUTADA xsi:type="xsd:string">ADRO</PRIMER_COGNOM_CIUTADA>
<SEGON_COGNOM_CIUTADA xsi:type="xsd:string">MO</SEGON_COGNOM_CIUTADA>
<GENERE xsi:type="xsd:string">H</GENERE>
<DATA_NAIXEMENT xsi:type="xsd:string">11/01/1952</DATA_NAIXEMENT>
</ciutada>
<episodi xsi:type="ns1:es_tsystems_icam_iit_comunicacioIndirecta_comuns_vo_EpisodiIndicadorAnulacioVO">
<IND_ANULATS xsi:type="xsd:string"></IND_ANULATS>
</episodi>
<resultat xsi:type="ns1:es_tsystems_icam_iit_comunicacioIndirecta_comuns_vo_ResultatVO">
<CODI_ERROR xsi:type="xsd:string"></CODI_ERROR>
<DESCRIPCIO_ERROR xsi:type="xsd:string"></DESCRIPCIO_ERROR>
</resultat>
</ns1:ConsultaSituacioIT>
v_response := UTL_DBWS.INVOKE(v_call, XMLTYPE(v_request));
RETURN null;
END K_TEST;Any expert in WSDL that knows how to define the XML for the request to deserialize?
Thanks for any suggestions,
K.
Similar Messages
-
Consuming Web Services using UTL_DBWS
Hi,
I am trying to call a web service using UTL_DBWS package.
But I am getting this error:
ORA-29532: Java call terminated by uncaught Java exception: [failed to localize] No Deserializer found!
It is failing at this point:
l_result := sys.UTL_DBWS.invoke (
call_handle => l_call,
input_params => l_input_params);
Is this a problem with database or Web Service? How to resolve this?No awnsers???
I'm having the same problem here.... -
Unable to call WSS (WS-Security) enabled Web Service using UTL_DBWS
We are attempting to call a WSS (WS-Security) enabled Web Service from PL/SQL using the UTL_DBWS package (see [http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/u_dbws.htm#CHDIDGJH] ). We are doing this in similar fashion to [http://www.oracle-base.com/articles/10g/utl_dbws10g.php] with calls to utl_dbws.create_service, utl_dbws.create_call and utl_dbws.invoke.
Using this method we can successfully call an unsecured Web Service, but calls to WSS-enabled Web Services fail. We are currently using Oracle Database 10.2.0.3.
The failure we are getting is:
ORA-29532: Java call terminated by uncaught Java exception: javax.xml.rpc.soap.SOAPFaultException:
com.sun.xml.wss.XWSSecurityException: Message does not conform to configured
policy ( AuthenticationTokenPolicy(S) ): No Security Header found;nested
exception is com.sun.xml.wss.XWSSecurityException:
com.sun.xml.wss.XWSSecurityException: Message does not conform to configured
policy ( AuthenticationTokenPlicy(S) ): No Security Header found
Apparently UTL_DBWS does not support calling WSS enabled services, although this doesn't appear to be an officially recognised position. Does anyone know if Oracle are planning to support this soon (if ever)? Looking at Re: Calling WS from PL/SQL using WS-security suggests that support has been considered before, but not yet realised.
Thanks,
TomHaving raised a Service Request with Oracle support on this, I got the following response from Oracle Development (On unpublished bug [8542959|https://metalink2.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=BUG&p_id=8542959]):
Development has confirmed that WS-Security is not supported through UTL_DBWS. They have also acknowledged that this is not documented and they will change the official Oracle documentation will reflect this fact. From what is being stated, it would appear that there is no plan to support the use of WS-Security through UTL_DBWS in any release in the near future.
So, in short, without developing your own home-grown SOAP request, there is no way to call a WSS enabled web service from within PL/SQL.
-Tom -
XML Character Encoding Using UTL_DBWS
Hi,
I have a database with WINDOWS-1252 character encoding. I'm using UTL_DBWS to call a web service method which echoes a given string. For this purpose, I do the following:
DECLARE
v_wsdl CONSTANT VARCHAR2(500) := 'http://myhost/myservice?wsdl';
v_namespace CONSTANT VARCHAR2(500) := 'my.namespace';
v_service_name CONSTANT UTL_DBWS.QNAME := UTL_DBWS.to_qname(v_namespace, 'MyService');
v_service_port CONSTANT UTL_DBWS.QNAME := UTL_DBWS.to_qname(v_namespace, 'MySoapServicePort');
v_ping CONSTANT UTL_DBWS.QNAME := UTL_DBWS.to_qname(v_namespace, 'ping');
v_wsdl_uri CONSTANT URITYPE := URIFACTORY.getURI(v_wsdl);
v_str_request CONSTANT VARCHAR2(4000) :=
'<?xml version="1.0" encoding="UTF-8" ?>
<ping>
<pingRequest>
<echoData>Dev Team üöäß</echoData>
</pingRequest>
</ping>';
v_service UTL_DBWS.SERVICE;
v_call UTL_DBWS.CALL;
v_request XMLTYPE := XMLTYPE (v_str_request);
v_response SYS.XMLTYPE;
BEGIN
DBMS_JAVA.set_output(20000);
UTL_DBWS.set_logger_level('FINE');
v_service := UTL_DBWS.create_service(v_wsdl_uri, v_service_name);
v_call := UTL_DBWS.create_call(v_service, v_service_port, v_ping);
UTL_DBWS.set_property(v_call, 'oracle.webservices.charsetEncoding', 'UTF-8');
v_response := UTL_DBWS.invoke(v_call, v_request);
DBMS_OUTPUT.put_line(v_response.getStringVal());
UTL_DBWS.release_call(v_call);
UTL_DBWS.release_all_services;
END;
/Here is the SERVER OUTPUT:
ServiceFacotory: oracle.j2ee.ws.client.ServiceFactoryImpl@a9deba8d
WSDL: http://myhost/myservice?wsdl
Service: oracle.j2ee.ws.client.dii.ConfiguredService@c881d39e
*** Created service: -2121202561 - oracle.jpub.runtime.dbws.DbwsProxy$ServiceProxy@afb58220 ***
ServiceProxy.get(-2121202561) = oracle.jpub.runtime.dbws.DbwsProxy$ServiceProxy@afb58220
Collection Call info: port={my.namespace}MySoapServicePort, operation={my.namespace}ping, returnType={my.namespace}PingResponse, params count=1
setProperty(oracle.webservices.charsetEncoding, UTF-8)
dbwsproxy.add.map: ns, my.namespace
Attribute 0: my.namespace: xmlns:ns, my.namespace
dbwsproxy.lookup.map: ns, my.namespace
createElement(ns:ping,null,my.namespace)
dbwsproxy.add.soap.element.namespace: ns, my.namespace
Attribute 0: my.namespace: xmlns:ns, my.namespace
dbwsproxy.element.node.child.3: 1, null
createElement(echoData,null,null)
dbwsproxy.text.node.child.0: 3, Dev Team üöäß
request:
<ns:ping xmlns:ns="my.namespace">
<pingRequest>
<echoData>Dev Team üöäß</echoData>
</pingRequest>
</ns:ping>
Jul 8, 2008 6:58:49 PM oracle.j2ee.ws.client.StreamingSender _sendImpl
FINE: StreamingSender.response:<?xml version = '1.0' encoding = 'UTF-8'?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Header/><env:Body><ns0:pingResponse xmlns:ns0="my.namespace"><pingResponse><responseTimeMillis>0</responseTimeMillis><resultCode>0</resultCode><echoData>Dev Team üöäß</echoData></pingResponse></ns0:pingResponse></env:Body></env:Envelope>
response:
<ns0:pingResponse xmlns:ns0="my.namespace">
<pingResponse>
<responseTimeMillis>0</responseTimeMillis>
<resultCode>0</resultCode>
<echoData>Dev Team üöäß</echoData>
</pingResponse>
</ns0:pingResponse>As you can see the character encoding is broken in the request and in the response, i.e. the SOAP encoder does not take into consideration the UTF-8 encoding.
I tracked down the problem to the method oracle.jpub.runtime.dbws.DbwsProxy.dom2SOAP(org.w3c.dom.Node, java.util.Hashtable); and more specifically to the calls of oracle.j2ee.ws.saaj.soap.soap11.SOAPFactory11.
My question is: is there a way to make the SOAP encoder use the correct character encoding?
Thanks a lot in advance!
Greetings,
DimitarI found a workaround of the problem:
v_response := XMLType(v_response.getBlobVal(NLS_CHARSET_ID('CHAR_CS')), NLS_CHARSET_ID('AL32UTF8'));Ugly, but I'm tired of decompiling and debugging Java classes ;)
Greetings,
Dimitar -
Using utl_dbws to call web service
We're calling a web service using utl_dbws and getting a response but the problem is the parameters. I haven't been able to find much documentation about how to use the utl_dbws package and have only one example to work from so could do with some expert help.
The following code calls the webservice:
procedure call_web_service(p_application_key in number,
out_success_message out varchar2)
is
v_service utl_dbws.service;
v_call utl_dbws.call;
v_service_qname utl_dbws.qname;
v_port_qname utl_dbws.qname;
v_operation_qname utl_dbws.qname;
v_string_type_qname utl_dbws.qname;
v_return anydata;
v_send_data anydata;
v_return_string varchar2 (100);
v_return_length number;
v_parameter_string varchar2(32767);
v_params utl_dbws.anydata_list;
v_interview_xml xmltype;
v_policy_number varchar2(14);
-- return parameters
v_interviewId varchar2(1000);
v_statusType varchar2(1000);
v_error_reason varchar2(1000);
begin
message_handler.set_module_name('ostp_to_xpb.call_web_service');
message_handler.set_current_process('retrieve generated xml');
begin
select upload_xml, extractvalue(upload_xml, '/interview/externalReferenceNumber') policy_number
into v_interview_xml, v_policy_number
from xpb_upload_data
where application_key = p_application_key
and extractvalue(upload_xml, '/interview/externalReferenceNumber') is not null;
--dbms_output.put_line('xml retrieved');
exception
when no_data_found then
v_success_message := 'No xml found for application_key = '||p_application_key;
raise v_procedure_error;
end;
message_handler.set_current_process('call web service');
-- create service
v_service_qname := utl_dbws.to_qname (null, 'xpertBridge');
v_service := utl_dbws.create_service (v_service_qname);
-- create call
v_port_qname := utl_dbws.to_qname (null, 'xpertBridgePort');
v_operation_qname :=
utl_dbws.to_qname
('http://m0154ukdox1/xpertBridgeEDSLV/services/xpertBridge',
'orcaAppUpload'
v_call := utl_dbws.create_call (v_service, v_port_qname, v_operation_qname);
-- set endpoint
utl_dbws.set_target_endpoint_address
(v_call,
'http://m0154ukdox1/xpertBridgeEDSLV/services/xpertBridge'
-- set type of input and output parameters
v_string_type_qname :=
utl_dbws.to_qname ('http://www.w3.org/2001/XMLSchema', 'string');
utl_dbws.add_parameter (v_call,
'orcaXml',
v_string_type_qname,
'ParameterMode.IN'
utl_dbws.add_parameter (v_call,
'interviewId',
v_string_type_qname,
'ParameterMode.OUT'
utl_dbws.add_parameter (v_call,
'status',
v_string_type_qname,
'ParameterMode.OUT'
utl_dbws.add_parameter (v_call,
'errorReason',
v_string_type_qname,
'ParameterMode.OUT'
utl_dbws.set_return_type (v_call, v_string_type_qname);
-- convert xmltype to string for call
select xmlserialize(document v_interview_xml)
into v_parameter_string
from dual;
v_params (1) := anydata.convertvarchar(v_parameter_string);
-- call
v_return := utl_dbws.invoke (v_call, v_params);
-- values which can be returned are Success / MessageError / ApplicationError
v_return_string := v_return.accessvarchar2;
dbms_output.put_line ('Message returned is: ' || nvl(v_return_string, 'No success message returned'));
-- retrieve out parameters
v_interviewId := v_params(2).accessvarchar2;
dbms_output.put_line ('Message returned is: ' || nvl(v_interviewId, 'No interviewId returned'));
v_statusType := v_params(3).accessvarchar2;
dbms_output.put_line ('Message returned is: ' || nvl(v_statusType, 'No status type returned'));
v_error_reason := v_params(4).accessvarchar2;
dbms_output.put_line ('Message returned is: ' || nvl(v_error_reason, 'No error reason returned'));
-- release call
utl_dbws.release_call ( v_call );
-- release services
utl_dbws.release_service ( v_service );
message_handler.set_module_finish;
exception
when others then
out_success_message := message_handler.formatted_error_message;
end call_web_service;
Here is an excerpt from the WSDL relating to the call being made:
<xs:element name="orcaAppUpload">
<xs:annotation>
<xs:documentation xml:lang="en">Message payload XML</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="orcaXml" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="orcaAppUploadResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="interviewId" type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en">Interview identifier used to access the interview from UI</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="status" type="tns:StatusType"/>
<xs:element name="errorReason" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation xml:lang="en">Only included if an error has occured </xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="StatusType">
<xs:restriction base="xs:string">
<xs:enumeration value="Success"/>
<xs:enumeration value="MessageError">
<xs:annotation>
<xs:documentation xml:lang="en">MessageError arises if the request payload was
rejected by xpertBridge. This might be because it does not validate against the
expected schema. Alternatively, a business rule is not satisfied.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="ApplicationError">
<xs:annotation>
<xs:documentation xml:lang="en">ApplicationError would indicate application or system
error or exception occured in xpertBridge while processing the request.</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:schema>
<wsdl:message name="orcaAppUploadReq">
<wsdl:part name="orcaAppUpload" element="tns:orcaAppUpload"/>
</wsdl:message>
<wsdl:message name="orcaAppUploadResp">
<wsdl:part name="orcaAppUploadResponse" element="tns:orcaAppUploadResponse"/>
</wsdl:message>
<wsdl:portType name="xpertBridgePort">
<wsdl:operation name="orcaAppUpload">
<wsdl:documentation>Upload (typically paper) application from ORCA/Ingenium</wsdl:documentation>
<wsdl:input message="tns:orcaAppUploadReq"/>
<wsdl:output message="tns:orcaAppUploadResp"/>
</wsdl:operation>
</wsdl:portType>
etc.
The error being returned is the following:
ostp_to_xpb.call_web_service.call web service.ORA-29532: Java call terminated by uncaught Java exception: unexpected element name: expected=interviewId, actual=status
Initially I started the params at params(0) but when I received the response above I thought it might solve the problem by starting at 1 - try anything :-) but still had the same response.
I'm now out of ideas!UTL_DBWS is not part of XDB, XDB is more about being the web service, rather than calling a web service. Here's an example of using UTL_HTTP to test a XML DB Database Native Web Service which may help
SQL*Plus: Release 11.2.0.1.0 Production on Wed Jun 17 08:23:14 2009
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> spool password.log
SQL> --
SQL> connect sys/oracle as sysdba
Connected.
SQL> --
SQL> def USERNAME=DBNWS
SQL> --
SQL> def PASSWORD=DBNWS
SQL> --
SQL> def HOSTNAME=&1
SQL> --
SQL> DROP USER &USERNAME CASCADE
2 /
old 1: DROP USER &USERNAME CASCADE
new 1: DROP USER DBNWS CASCADE
User dropped.
SQL> grant connect, resource to &USERNAME identified by &PASSWORD
2 /
old 1: grant connect, resource to &USERNAME identified by &PASSWORD
new 1: grant connect, resource to DBNWS identified by DBNWS
Grant succeeded.
SQL> begin
2 dbms_network_acl_admin.drop_acl('localhost.xml');
3 end;
4 /
PL/SQL procedure successfully completed.
SQL> begin
2 dbms_network_acl_admin.create_acl('localhost.xml', 'ACL for &HOSTNAME', '&USERNAME', true, 'connect');
3 dbms_network_acl_admin.assign_acl('localhost.xml', '&HOSTNAME');
4 end;
5 /
old 2: dbms_network_acl_admin.create_acl('localhost.xml', 'ACL for &HOSTNAME', '&USERNAME', true, 'connect');
new 2: dbms_network_acl_admin.create_acl('localhost.xml', 'ACL for localhost', 'DBNWS', true, 'connect');
old 3: dbms_network_acl_admin.assign_acl('localhost.xml', '&HOSTNAME');
new 3: dbms_network_acl_admin.assign_acl('localhost.xml', 'localhost');
PL/SQL procedure successfully completed.
SQL> COMMIT
2 /
Commit complete.
SQL> GRANT XDB_WEBSERVICES TO &USERNAME
2 /
old 1: GRANT XDB_WEBSERVICES TO &USERNAME
new 1: GRANT XDB_WEBSERVICES TO DBNWS
Grant succeeded.
SQL> GRANT XDB_WEBSERVICES_OVER_HTTP TO &USERNAME
2 /
old 1: GRANT XDB_WEBSERVICES_OVER_HTTP TO &USERNAME
new 1: GRANT XDB_WEBSERVICES_OVER_HTTP TO DBNWS
Grant succeeded.
SQL> connect &USERNAME/&PASSWORD
Connected.
SQL> --
SQL> create or replace function GET_SQRT (INPUT_VALUE number) return number
2 as
3 begin
4 return SQRT(2);
5 end;
6 /
Function created.
SQL> select GET_SQRT(2)
2 from dual
3 /
GET_SQRT(2)
1.41421356
SQL> VAR URL VARCHAR2(4000)
SQL> --
SQL> BEGIN
2 :url := 'http://&USERNAME:&PASSWORD@&HOSTNAME:' || dbms_xdb.getHttpPort() || '/orawsv/&USERNAME/GET_SQRT';
3 end;
4 /
old 2: :url := 'http://&USERNAME:&PASSWORD@&HOSTNAME:' || dbms_xdb.getHttpPort() || '/orawsv/&USERNAME/GET_SQRT';
new 2: :url := 'http://DBNWS:DBNWS@localhost:' || dbms_xdb.getHttpPort() || '/orawsv/DBNWS/GET_SQRT';
PL/SQL procedure successfully completed.
SQL> print url
URL
http://DBNWS:DBNWS@localhost:80/orawsv/DBNWS/GET_SQRT
SQL> --
SQL> set long 100000 pages 0 lines 256
SQL> --
SQL> select httpuritype( :url || '?wsdl' ).getXML() from dual
2 /
<definitions name="GET_SQRT" targetNamespace="http://xmlns.oracle.com/orawsv/DBNWS/GET_SQRT" xmlns="http://schemas.xmlsoap.org/wsdl/
" xmlns:tns="http://xmlns.oracle.com/orawsv/DBNWS/GET_SQRT" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://
schemas.xmlsoap.org/wsdl/soap/">
<types>
<xsd:schema targetNamespace="http://xmlns.oracle.com/orawsv/DBNWS/GET_SQRT" elementFormDefault="qualified">
<xsd:element name="SNUMBER-GET_SQRTInput">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="INPUT_VALUE-NUMBER-IN" type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GET_SQRTOutput">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="RETURN" type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</types>
<message name="GET_SQRTInputMessage">
<part name="parameters" element="tns:SNUMBER-GET_SQRTInput"/>
</message>
<message name="GET_SQRTOutputMessage">
<part name="parameters" element="tns:GET_SQRTOutput"/>
</message>
<portType name="GET_SQRTPortType">
<operation name="GET_SQRT">
<input message="tns:GET_SQRTInputMessage"/>
<output message="tns:GET_SQRTOutputMessage"/>
</operation>
</portType>
<binding name="GET_SQRTBinding" type="tns:GET_SQRTPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GET_SQRT">
<soap:operation soapAction="GET_SQRT"/>
<input>
<soap:body parts="parameters" use="literal"/>
</input>
<output>
<soap:body parts="parameters" use="literal"/>
</output>
</operation>
</binding>
<service name="GET_SQRTService">
<documentation>Oracle Web Service</documentation>
<port name="GET_SQRTPort" binding="tns:GET_SQRTBinding">
<soap:address location="http://localhost:80/orawsv/DBNWS/GET_SQRT"/>
</port>
</service>
</definitions>
SQL> set serveroutput on
SQL> --
SQL> DECLARE
2 V_SOAP_REQUEST XMLTYPE := XMLTYPE(
3 '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/
encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
4 <SOAP-ENV:Body>
5 <m:SNUMBER-GET_SQRTInput xmlns:m="http://xmlns.oracle.com/orawsv/&USERNAME/GET_SQRT">
6 <m:INPUT_VALUE-NUMBER-IN>2</m:INPUT_VALUE-NUMBER-IN>
7 </m:SNUMBER-GET_SQRTInput>
8 </SOAP-ENV:Body>
9 </SOAP-ENV:Envelope>');
10 V_SOAP_REQUEST_TEXT CLOB := V_SOAP_REQUEST.getClobVal();
11 V_REQUEST UTL_HTTP.REQ;
12 V_RESPONSE UTL_HTTP.RESP;
13 V_BUFFER VARCHAR2(1024);
14 BEGIN
15
16 V_REQUEST := UTL_HTTP.BEGIN_REQUEST(URL => :URL, METHOD => 'POST');
17 UTL_HTTP.SET_HEADER(V_REQUEST, 'User-Agent', 'Mozilla/4.0');
18 V_REQUEST.METHOD := 'POST';
19 UTL_HTTP.SET_HEADER (R => V_REQUEST, NAME => 'Content-Length', VALUE => DBMS_LOB.GETLENGTH(V_SOAP_REQUEST_TEXT));
20 UTL_HTTP.WRITE_TEXT (R => V_REQUEST, DATA => V_SOAP_REQUEST_TEXT);
21
22 V_RESPONSE := UTL_HTTP.GET_RESPONSE(V_REQUEST);
23 LOOP
24 UTL_HTTP.READ_LINE(V_RESPONSE, V_BUFFER, TRUE);
25 DBMS_OUTPUT.PUT_LINE(V_BUFFER);
26 END LOOP;
27 UTL_HTTP.END_RESPONSE(V_RESPONSE);
28 EXCEPTION
29 WHEN UTL_HTTP.END_OF_BODY THEN
30 UTL_HTTP.END_RESPONSE(V_RESPONSE);
31 END;
32 /
old 5: <m:SNUMBER-GET_SQRTInput xmlns:m="http://xmlns.oracle.com/orawsv/&USERNAME/GET_SQRT">
new 5: <m:SNUMBER-GET_SQRTInput xmlns:m="http://xmlns.oracle.com/orawsv/DBNWS/GET_SQRT">
<?xml version="1.0" ?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GET_SQRTOutput xmlns="http://xmlns.oracle.com/orawsv/DBNWS/GET_SQRT">
<RETURN>1.41421356237309504880168872420969807857</RETURN>
</GET_SQRTOutput>
</soap:Body>
</soap:Envelope>
PL/SQL procedure successfully completed.
SQL> set serveroutput on
SQL> --
SQL>
SQL> -
PL/SQL Web Service Error: IllegalArgumentException : No Deserializer found
I deployed a pl/sql web service on a stand-alone OC4J, when I test this I am getting error "IllegalArgumentException : No Deserializer found to deserialize". Find below the detailed response:
<?xml version="1.0" encoding="UTF-8" ?>
- <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <SOAP-ENV:Body>
- <SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server.Exception:</faultcode>
<faultstring>java.lang.IllegalArgumentException: No Deserializer found to deserialize a 'http://cmem.oracle.apps.cs.ws/ICmem_cs_ws_pkg.xsd:cmem_oracle_apps_cs_ws_CmemServiceRequestParamObj' using encoding style 'http://schemas.xmlsoap.org/soap/encoding/'.</faultstring>
<faultactor>/cmemws/CmemServiceRequests</faultactor>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
I was using a complex parameter as well as response. Below is the WSDL. If anyone has any idea what could be the issue, let me know.
<?xml version="1.0" encoding="UTF-8" ?>
- <!-- Generated by the Oracle JDeveloper Web Services WSDL Generator
-->
- <!-- Date Created: Tue Oct 27 12:30:19 CST 2009
-->
- <definitions name="CmemServiceRequests" targetNamespace="http://cmem/oracle/apps/cs/ws/CmemServiceRequests.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://cmem/oracle/apps/cs/ws/CmemServiceRequests.wsdl" xmlns:ns1="http://cmem.oracle.apps.cs.ws/CmemServiceRequests.xsd">
- <types>
- <schema targetNamespace="http://cmem.oracle.apps.cs.ws/CmemServiceRequests.xsd" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://www.w3.org/2001/XMLSchema">
- <complexType name="cmem_oracle_apps_cs_ws_CmemServiceRequestParamObjUser" jdev:packageName="cmem.oracle.apps.cs.ws" xmlns:jdev="http://xmlns.oracle.com/jdeveloper/webservices">
- <all>
<element name="srId" type="decimal" nillable="true" minOccurs="0" />
<element name="srNumber" type="string" nillable="true" minOccurs="0" />
<element name="srGroupOwner" type="string" nillable="true" minOccurs="0" />
<element name="srOwner" type="string" nillable="true" minOccurs="0" />
<element name="srDateFrom" type="dateTime" nillable="true" minOccurs="0" />
<element name="srDateTo" type="dateTime" nillable="true" minOccurs="0" />
<element name="caller" type="string" nillable="true" minOccurs="0" />
<element name="inspector" type="string" nillable="true" minOccurs="0" />
<element name="problemCode" type="string" nillable="true" minOccurs="0" />
</all>
</complexType>
- <complexType name="cmem_oracle_apps_cs_ws_CmemServiceRequestObjUser" jdev:packageName="cmem.oracle.apps.cs.ws" xmlns:jdev="http://xmlns.oracle.com/jdeveloper/webservices">
- <all>
<element name="srId" type="decimal" />
<element name="srNumber" type="string" />
<element name="srGroupOwner" type="string" />
<element name="srOwner" type="string" />
<element name="srType" type="string" />
<element name="srDate" type="dateTime" />
<element name="statusCode" type="string" />
<element name="srParty" type="string" />
<element name="caller" type="string" />
<element name="srSummary" type="string" />
<element name="problemCode" type="string" />
<element name="problemDescription" type="string" />
<element name="resolutionCode" type="string" />
<element name="resolutionDesc" type="string" />
<element name="resolutionSummary" type="string" />
<element name="srAddress" type="string" />
<element name="srCity" type="string" />
<element name="srZipCode" type="string" />
<element name="srState" type="string" />
</all>
</complexType>
</schema>
</types>
- <message name="getSrDetails0Request">
<part name="pSeletionConditions" type="ns1:cmem_oracle_apps_cs_ws_CmemServiceRequestParamObjUser" />
</message>
- <message name="getSrDetails0Response">
<part name="return" type="ns1:cmem_oracle_apps_cs_ws_CmemServiceRequestObjUser" />
</message>
- <portType name="CmemServiceRequestsPortType">
- <operation name="getSrDetails">
<input name="getSrDetails0Request" message="tns:getSrDetails0Request" />
<output name="getSrDetails0Response" message="tns:getSrDetails0Response" />
</operation>
</portType>
- <binding name="CmemServiceRequestsBinding" type="tns:CmemServiceRequestsPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
- <operation name="getSrDetails">
<soap:operation soapAction="" style="rpc" />
- <input name="getSrDetails0Request">
<soap:body use="encoded" namespace="CmemServiceRequests" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</input>
- <output name="getSrDetails0Response">
<soap:body use="encoded" namespace="CmemServiceRequests" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</output>
</operation>
</binding>
- <service name="CmemServiceRequests">
- <port name="CmemServiceRequestsPort" binding="tns:CmemServiceRequestsBinding">
<soap:address location="http://isd104364:8888/cmemws/CmemServiceRequests" />
</port>
</service>
</definitions>
Appreciate any help. Thanks.
BinishOk, this sounds like a known bug ( Bug 5908689 ) in 10.1.3.1, but this was specific to non-Windows platforms. Are you on Linux/Solaris or any other platform? It might or might not be the same problem you are hitting but it does seem quite close (can't say for sure without a close investigation, I am afraid!)
In any case, this bug is fixed in the 10.1.3.4 patchset (besides quite a few other fixes and enhancements) - so would recommend you to first apply the 10.1.3.4 patchset and retest. The patchset is available on My Oracle Support (formerly Metalink) under Patch 7272722. Or you could go a step ahead, and apply the 10.1.3.5 patchset (Patch 8626084) instead which is the latest patchset for OracleAS 10.1.3.x.
HTH,
Yogesh -
Hi,
I'm trying to connect to a web-service that has a wsdl on this url:
http://shimmer.oslo.dnmi.no/metdata/MetDataService?WSDL
I can reach this site from a browser.
In the Connection Manager I create a new 'UDDI Registry' connection, and type in the url above as the 'Inquiry endpoint url'. When I try to test the connection I get the folowing error:
Testing connection with no proxy...
Contacting http://shimmer.oslo.dnmi.no/metdata/MetDataService?WSDL...
The inquiry endpoint could not be contacted. Test failed.
No Deserializer found to deserialize a 'urn:uddi-org:api_v2:name' using encoding style 'null'. [java.lang.IllegalArgumentException]
Have I missed something here ? I just want to connect to a public web-service, if someone could point me in the right direction I would be happy...
Regards
Erik
Message was edited by:
BradskiHi,
actually this URL is non that points to a UDDI but to a Web Service directly. So you can build a WS client for this WSDL file by providing the URL in teh Web Services field
Frank -
Deserializer found to deserialize
Anybody knows why I would get this message Deserializer found to deserialize? I
am using apache soap in weblogic. Each time I use a custom Serializer and deserializer
I am getting Deserializer found to deserialize at apache soap servlet router.
Your help will be appreciated.
Thanks.This looks more like an apache SOAP question and i think
you have a better change of getting answer if you post this
in the apache mailing list.
Also, WLS 7.0 or later comes with a much better soap stack.
Please give it a try:
http://edocs.bea.com/wls/docs81/webservices.html
Thanks,
-manoj
"kita" <[email protected]> wrote in message
news:3e9f1f60$[email protected]..
>
Anybody knows why I would get this message Deserializer found todeserialize? I
am using apache soap in weblogic. Each time I use a custom Serializer anddeserializer
I am getting Deserializer found to deserialize at apache soap servletrouter.
Your help will be appreciated.
Thanks. -
hi all,
i am using tomcat5 and when i run a command
java org.apache.soap.server.ServiceManagerClient http://localhost:8080/soap/servlet/rpcrouter list
the following error is coming. even after i deploy when i run this command also the same
java org.apache.soap.server.ServiceManagerClient http://localhost:8080/soap/servlet/rpcrouter query "urn:helloworldservice"
[SOAPException: faultCode=SOAP-ENV:Client; msg=No Deserializer found to deserialize a 'http://schemas.xmlsoap.org/soap/envelope/:Parameter' using encoding style 'null'.; targetException=java.lang.IllegalArgumentException: No Deserializer found to deserialize a 'http://schemas.xmlsoap.org/soap/envelope/:Parameter' using encoding style 'null'.]
can any one help me the problem is what and how to rectify itI'm having the same problem, did you resolve this?
-
Soap client No Deserializer found to deserialize ...
Hello,
I am trying to call a .net service from my java code and i as soon as i get the result an exception occurs as no deserializer is found for my result.
I tried everything, i tried regestering deserializers, using the default but nothing seems to work.
the exception as well as my code are provided below.
Can anyone help me?
the exception
[SOAPException: faultCode=SOAP-ENV:Client; msg=No Deserializer found to deserialize a 'http://tempuri.org/:methodnameResult' using encoding style 'null'.; targetException=java.lang.IllegalArgumentException: No Deserializer found to deserialize a 'http://tempuri.org/:methodnameResult' using encoding style 'null'.]
import java.io.*;
import java.net.*;
import java.util.*;
import org.apache.soap.util.xml.*;
import org.apache.soap.*;
import org.apache.soap.rpc.*;
import org.apache.soap.encoding.*;
import org.apache.soap.encoding.soapenc.*;
import org.apache.soap.encoding.soapenc.ArraySerializer;
public class LoginClient
public String void main(string args[]) throws Exception{
System.err.println("SOAP call testing");
String str1 = "the first string";
String str2 = "the second string";
LoginClient smc = new LoginClient();
String returnValue = smc.doRequest(str1,str2);
System.err.println(returnValue);
public String doRequest(String str1,String str2) throws Exception {
Call call = new Call ();
call.setTargetObjectURI ("http://host");
call.setMethodName ("methodname");
SOAPMappingRegistry soapMappingRegistry = new SOAPMappingRegistry();
BeanSerializer beanSer = new BeanSerializer();
soapMappingRegistry.mapTypes(Constants.NS_URI_SOAP_ENC, new QName("http://host", "methodname"), java.util.List.class, beanSer, beanSer);
call.setSOAPMappingRegistry(soapMappingRegistry);
Vector params = new Vector ();
call.setEncodingStyleURI("http://schemas.xmlsoap.org/soap/encoding/");
params.addElement (new Parameter("parameter", String.class, new String (str1), "http://schemas.xmlsoap.org/soap/encoding/"));
params.addElement (new Parameter("ticket", String.class, new String (str2), "http://schemas.xmlsoap.org/soap/encoding/"));
call.setParams (params);
Response resp = call.invoke (new URL("http://host/DataService.asmx"),"http://tempuri.org/methodname");
if (resp.generatedFault ()) {
Fault fault = resp.getFault ();
System.out.println ("the call failed: ");
System.out.println (" Fault Code = " + fault.getFaultCode ());
System.out.println (" Fault String = " + fault.getFaultString ());
return fault.getFaultCode ()+fault.getFaultString ();
else {
Parameter result = resp.getReturnValue ();
return ((String)result.getValue());
}I had a similar problem to this when trying to connect a Java Client to a C-Sharp Server. Apparently M$ has issues with allowing anyone other than their products to connect to their server. I had to modify their server to list the namespace for each component of soap document. By default, the body of M$ looks like this....
<soap:Body>
<types:HelloWorld xsi:type="types:HelloWorld">
<name xsi:type="xsd:string">string</name>
</types:HelloWorld>
</soap:Body>
Wheras... with Java, you need to the namespace listed for each element... so the body would look like this:
<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<types:HelloWorld xsi:type="types:HelloWorld">
<name xsi:type="xsd:string">string</name>
</types:HelloWorld>
</soap:Body>
This may or may not help you, but it took me a while to discover it, so maybe it is something wrong with the server, not your code.
Kevin Bryan -
Error while calling .svc web service from pl/sql using utl_dbws
Hello Folks,
I am calling a .svc web service from pl/sql using utl_dbws and encountering the following error
javax.xml.rpc.soap.SOAPFaultException: The message with Action '' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None).
Can you help me find what am I doing wrong?
Thanks
RkHi,
Here are the details
1. What version?
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for 64-bit Windows: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
2. What error message ... we need the full and complete error stack not your interpretation of it.
ORA-29532: Java call terminated by uncaught Java exception: javax.xml.rpc.soap.SOAPFaultException: The message with Action '' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Messag
3. "I am calling means what?" We need the full and complete statement showing the values of all parameters.
The input to the web-service is a xmltype containing address information and the web-service returns a string
CREATE OR REPLACE FUNCTION get_id
RETURN VARCHAR2
AS
l_service UTL_DBWS.service;
l_call UTL_DBWS.CALL;
l_wsdl_url VARCHAR2 (32767);
l_namespace VARCHAR2 (32767);
l_service_qname UTL_DBWS.qname;
l_port_qname UTL_DBWS.qname;
l_operation_qname UTL_DBWS.qname;
l_xmltype_in SYS.XMLTYPE;
l_xmltype_out SYS.XMLTYPE;
l_return VARCHAR2 (32767);
BEGIN
l_wsdl_url := 'http://test.com/test.svc?wsdl';
l_namespace := 'http://test.org/';
l_service_qname := UTL_DBWS.to_qname (l_namespace, 'SName');
l_port_qname := UTL_DBWS.to_qname (l_namespace, 'BasicHttpBinding_ISName');
l_operation_qname := UTL_DBWS.to_qname (l_namespace, 'Iden');
l_service :=
UTL_DBWS.create_service
(wsdl_document_location => urifactory.geturi
(l_wsdl_url),
service_name => l_service_qname
l_call :=
UTL_DBWS.create_call (service_handle => l_service,
port_name => l_port_qname,
operation_name => l_operation_qname
l_xmltype_in :=
SYS.XMLTYPE
('<IdenRequest xmlns:i="http://www.w3.org/XMLSchema-instance" xmlns="http://test.org/SNameIden.WCFService">
<address />
<zip>12345</zip>
<state>AA</state>
<street>W Test </street>
</address>
</IdenRequest>'
l_xmltype_out :=
UTL_DBWS.invoke (call_handle => l_call,
request => l_xmltype_in);
UTL_DBWS.release_call (call_handle => l_call);
UTL_DBWS.release_service (service_handle => l_service);
l_return := l_xmltype_out.EXTRACT ('//Iden/text()').getstringval();
RETURN l_return;
END;
/ -
Problem with authentication using UTL_DBWS
Hi,
I'm trying to call out to a web service from a PL/SQL procedure using UTL_DBWS. I am getting the following error when executing the procedure:
ORA-29532: Java call terminated by uncaught Java exception: javax.xml.rpc.soap.SOAPFaultException: ARERR [149] A user name must be supplied in the control record
This is despite the fact that I have set the USERNAME property using utl_dbws.set_property. I am 99% sure that the problem is within my Oracle call, becuase I have used a web services utility (SoapSonar) to successfully call the web service, and I have also been able to recreate the error message using the same utility by removing the username information from the xml message header. I have also been able to successfully call the web service if I allow anonymous use of the web service (unfortuantely I need to use the security/authentication for this project).
I have used utl_dbws.get_property to verify that the USERNAME property is being set correctly, but it still seems that the username is not being included in the header when I call the web service with UTL_DBWS.invoke.
Does anyone have any suggestions?
Thanks,
JasonHi,
I'm having the same issue using UTL_DBWS. Calls to services that don't require authentication seem to work well using this package but I can't get the basic authentication calls working. When I examine the HTTP header it missing the "Authorization: Basic <base64-encoded-string>" line that I'd expect to see.
I'm using the utl_dbws.set_property procedure to set the USERNAME and PASSWORD properties.
Anyone have any ideas how to overcome this problem?
Cheers,
Anand. -
Error while using UTL_DBWS package
Hello
I want to call a web service using UTL_DBWS package as explained in this link.
http://www.oracle-base.com/articles/10g/utl_dbws10g.php
I implemented the example successfully, and I need to my own web service.
my web service is just a java class that return a hello world and a parameter. deployed on Integrated weblogic server shipped with Jdeveloper11g.
here is my java class
package ws;
import javax.jws.Oneway;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public class HelloWorld {
public HelloWorld() {
@WebMethod(action = "http://ws//sayHelloWorld")
public String sayHelloWorld(){
return "Hello World";
@WebMethod(action = "http://ws//sayHelloWorld")
public String sayHelloName(@WebParam(name = "arg0")
String n){
return "Hello " + n;
}my WSDL is
<?xml version="1.0" encoding="UTF-8" ?>
- <!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Oracle JAX-WS 2.1.5.
-->
- <!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Oracle JAX-WS 2.1.5.
-->
- <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://ws/" name="HelloWorldService">
- <types>
- <xsd:schema>
<xsd:import namespace="http://ws/" schemaLocation="http://127.0.0.1:7101/Application15-Model-context-root/HelloWorldPort?xsd=1" />
</xsd:schema>
</types>
- <message name="sayHelloWorld">
<part name="parameters" element="tns:sayHelloWorld" />
</message>
- <message name="sayHelloWorldResponse">
<part name="parameters" element="tns:sayHelloWorldResponse" />
</message>
- <message name="sayHelloName">
<part name="parameters" element="tns:sayHelloName" />
</message>
- <message name="sayHelloNameResponse">
<part name="parameters" element="tns:sayHelloNameResponse" />
</message>
- <portType name="HelloWorld">
- <operation name="sayHelloWorld">
<input message="tns:sayHelloWorld" />
<output message="tns:sayHelloWorldResponse" />
</operation>
- <operation name="sayHelloName">
<input message="tns:sayHelloName" />
<output message="tns:sayHelloNameResponse" />
</operation>
</portType>
- <binding name="HelloWorldPortBinding" type="tns:HelloWorld">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
- <operation name="sayHelloWorld">
<soap:operation soapAction="http://ws//sayHelloWorld" />
- <input>
<soap:body use="literal" />
</input>
- <output>
<soap:body use="literal" />
</output>
</operation>
- <operation name="sayHelloName">
<soap:operation soapAction="http://ws//sayHelloWorld" />
- <input>
<soap:body use="literal" />
</input>
- <output>
<soap:body use="literal" />
</output>
</operation>
</binding>
- <service name="HelloWorldService">
- <port name="HelloWorldPort" binding="tns:HelloWorldPortBinding">
<soap:address location="http://127.0.0.1:7101/Application15-Model-context-root/HelloWorldPort" />
</port>
</service>
</definitions>and my function is to call the web service
CREATE OR REPLACE FUNCTION SAYHelloMYNAME (p_int_1 IN Varchar2)
RETURN NUMBER
AS
l_service UTL_DBWS.service;
l_call UTL_DBWS.call;
l_wsdl_url VARCHAR2(32767);
l_namespace VARCHAR2(32767);
l_service_qname UTL_DBWS.qname;
l_port_qname UTL_DBWS.qname;
l_operation_qname UTL_DBWS.qname;
l_xmltype_in XMLTYPE;
l_xmltype_out XMLTYPE;
l_return VARCHAR2(100);
BEGIN
l_wsdl_url := 'http://127.0.0.1:7101/Application15-Model-context-root/HelloWorldPort?wsdl';
l_namespace := 'http://ws/';
l_service_qname := UTL_DBWS.to_qname(l_namespace, 'HelloWorldService');
l_port_qname := UTL_DBWS.to_qname(l_namespace, 'HelloWorldPort');
l_operation_qname := UTL_DBWS.to_qname(l_namespace, 'sayHelloName');
l_service := UTL_DBWS.create_service (
wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),
service_name => l_service_qname);
l_call := UTL_DBWS.create_call (
service_handle => l_service,
port_name => l_port_qname,
operation_name => l_operation_qname);
l_xmltype_in := XMLTYPE('<?xml version="1.0" encoding="utf-8"?>
<sayHelloWorld xmlns="' || l_namespace || '">
<parameters>' || p_int_1 || '</parameters>
</sayHelloWorld>');
l_xmltype_out := UTL_DBWS.invoke(call_Handle => l_call,
request => l_xmltype_in);
UTL_DBWS.release_call (call_handle => l_call);
UTL_DBWS.release_service (service_handle => l_service);
l_return := l_xmltype_out.extract('//return/text()').getstringVal();
RETURN l_return;
END;
/but when I test the function I get this error
ORA-29532: Java call terminated by uncaught Java exception: java.lang.IllegalAccessException: error.build.wsdl.model: oracle.j2ee.ws.common.tools.api.WsdlValidationException: Failed to read wsdl file at: "http://127.0.0.1:7101/Application15-Model-context-root/HelloWorldPort?wsdl", caused by: java.net.ConnectException. : Connection refused
ORA-06512: at "WSUSER.UTL_DBWS", line 193
ORA-06512: at "WSUSER.UTL_DBWS", line 190
ORA-06512: at "WSUSER.SAYHELLOMYNAME", line 24any suggestions?M.Jabr wrote:
can you elaborate more on this?
I can open http://127.0.0.1:7101/Application15-Model-context-root/HelloWorldPort?wsdl
on my browser.Is your browser on that Oracle server? You are instructing Oracle server code (the UTL_DBWS package) to access that URL.
The IP in that URL is a localhost IP address - and that means using the local IP stack only. So it expects a web server on the Oracle server platform on tcp port 7101. It cannot use that IP to access your client/development machine.
How can I test it using UTL_HTTP?You can write a basic web browser, minus the rendering engine, using UTL_HTTP. You can also use it for web service calls - which is my preference as I deem the UTL_DBWS package to clunky and complex.
See:
{message:id=1925297} (sample PL/SQL web browser)
{message:id=4205205} (sample PL/SQL web browser SOAP call) -
How to set endpoint address using UTL_DBWS
Hi,
I have been struggling to invoke a web service in the Oracle 10g database using UTL_DBWS. Now I reached a point where I need to set an endpoint address using UTL_DBWS to complete the invoking process, I try to use UTL_DBWS.Set_Target_Endpoint_Address to do this, but SQL*Plus is returning an error saying Set_Target_Endpoint_Address must be declared.
Am I calling the wrong function? If so which function should I call to set endpoint address in UTL_DBWS? I have all the necessary jar files installed and the right grants to access this package.
any hint would be appreciated.
Thanks.Did you try using 'UTL_SMTP.WRITE_DATA'?
Like:
DECLARE
con UTL_SMTP.CONNECTION;
BEGIN
con := UTL_SMTP.OPEN_CONNECTION('alpha.beta.com');
UTL_SMTP.HELO(con, 'gamma.com');
UTL_SMTP.MAIL(con, '[email protected]');
UTL_SMTP.RCPT(con, '[email protected]');
UTL_SMTP.OPEN_DATA(con);
UTL_SMTP.WRITE_DATA(con,'Importance: HIGH'||UTL_TCP.CRLF);
END;I have not tested the code. I am not sure if it is going to work in your case. -
ORA-29532 error when invoking SSL web services using UTL_DBWS
Web Service gurus,
The WSDL for web services is as follows -
<definitions name="Webservice" targetNamespace="http://webservice.airclic.com/">
−
<types>
−
<xs:schema targetNamespace="http://webservice.airclic.com/" version="1.0">
<xs:element name="Exception" type="tns:Exception"/>
<xs:element name="listenForEvents" type="tns:listenForEvents"/>
<xs:element name="listenForEventsResponse" type="tns:listenForEventsResponse"/>
<xs:element name="sendAuthenticationResponse" type="tns:sendAuthenticationResponse"/>
<xs:element name="sendAuthenticationResponseResponse" type="tns:sendAuthenticationResponseResponse"/>
<xs:element name="upsertTask" type="tns:upsertTask"/>
<xs:element name="upsertTaskResponse" type="tns:upsertTaskResponse"/>
−
<xs:complexType name="upsertTask">
−
<xs:sequence>
<xs:element minOccurs="0" name="task" type="tns:Task"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="Task">
−
<xs:complexContent>
−
<xs:extension base="tns:PlatformObject">
−
<xs:sequence>
<xs:element minOccurs="0" name="status" type="tns:status"/>
<xs:element minOccurs="0" name="assignee" type="xs:string"/>
<xs:element minOccurs="0" name="assigneeUserId" type="xs:string"/>
<xs:element minOccurs="0" name="name" type="xs:string"/>
<xs:element minOccurs="0" name="type" type="xs:string"/>
<xs:element minOccurs="0" name="creationTimestamp" type="xs:long"/>
<xs:element minOccurs="0" name="updateTimestamp" type="xs:long"/>
<xs:element minOccurs="0" name="startTimestamp" type="xs:long"/>
<xs:element minOccurs="0" name="endTimestamp" type="xs:long"/>
<xs:element minOccurs="0" name="source" type="tns:source"/>
<xs:element minOccurs="0" name="notes" type="xs:string"/>
<xs:element minOccurs="0" name="priority" type="xs:int"/>
<xs:element minOccurs="0" name="penalized" type="xs:boolean"/>
<xs:element minOccurs="0" name="hasSLA" type="xs:boolean"/>
<xs:element minOccurs="0" name="location" type="tns:Location"/>
<xs:element minOccurs="0" name="windowStartTimestamp" type="xs:long"/>
<xs:element minOccurs="0" name="windowEndTimestamp" type="xs:long"/>
<xs:element minOccurs="0" name="signee" type="xs:string"/>
<xs:element minOccurs="0" name="signature" type="xs:base64Binary"/>
<xs:element minOccurs="0" name="customerId" type="xs:string"/>
<xs:element minOccurs="0" name="travelTime" type="xs:int"/>
<xs:element minOccurs="0" name="expirationTimestamp" type="xs:long"/>
<xs:element minOccurs="0" name="parentId" type="xs:long"/>
<xs:element minOccurs="0" name="externalTimezone" type="xs:string"/>
<xs:element minOccurs="0" name="localTimeOffset" type="xs:long"/>
<xs:element minOccurs="0" name="consignee" type="xs:string"/>
<xs:element minOccurs="0" name="assignmentWindowStartTimestamp" type="xs:long"/>
<xs:element minOccurs="0" name="assignmentWindowEndTimestamp" type="xs:long"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
−
<xs:complexType name="PlatformObject">
−
<xs:sequence>
<xs:element name="id" type="xs:string"/>
<xs:element name="externalId" type="xs:string"/>
<xs:element name="revision" type="xs:long"/>
<xs:element name="platformDateCreated" type="xs:dateTime"/>
<xs:element name="platformDateUpdated" type="xs:dateTime"/>
<xs:element name="objectName" type="xs:string"/>
<xs:element maxOccurs="unbounded" name="extendedAttributes" type="tns:ExtendedAttribute"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="Location">
−
<xs:sequence>
<xs:element minOccurs="0" name="name" type="xs:string"/>
<xs:element minOccurs="0" name="description" type="xs:string"/>
<xs:element minOccurs="0" name="type" type="xs:string"/>
<xs:element minOccurs="0" name="address" type="tns:Address"/>
<xs:element minOccurs="0" name="position" type="tns:Position"/>
<xs:element minOccurs="0" name="geofenceId" type="xs:long"/>
<xs:element minOccurs="0" name="capcity" type="xs:int"/>
<xs:element minOccurs="0" name="contact" type="xs:string"/>
<xs:element minOccurs="0" name="email" type="xs:string"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="Address">
−
<xs:sequence>
<xs:element minOccurs="0" name="addressLine" type="xs:string"/>
<xs:element minOccurs="0" name="addressLine2" type="xs:string"/>
<xs:element minOccurs="0" name="city" type="xs:string"/>
<xs:element minOccurs="0" name="secondaryCity" type="xs:string"/>
<xs:element minOccurs="0" name="subdivision" type="xs:string"/>
<xs:element minOccurs="0" name="postalCode" type="xs:string"/>
<xs:element minOccurs="0" name="country" type="xs:string"/>
<xs:element minOccurs="0" name="phone" type="xs:string"/>
<xs:element minOccurs="0" name="freeform" type="xs:string"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="Position">
−
<xs:sequence>
<xs:element name="latitude" type="xs:double"/>
<xs:element name="longitude" type="xs:double"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="ExtendedAttribute">
−
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="value" type="xs:anyType"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="upsertTaskResponse">
−
<xs:sequence>
<xs:element minOccurs="0" name="task" type="tns:Task"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="Exception">
−
<xs:sequence>
<xs:element minOccurs="0" name="message" type="xs:string"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="listenForEvents">
−
<xs:sequence>
<xs:element minOccurs="0" name="listenParams" type="tns:ListenParams"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="ListenParams">
−
<xs:sequence>
<xs:element name="queueName" type="xs:string"/>
<xs:element name="resendLast" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="listenForEventsResponse">
−
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="events" type="tns:Event"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="Event">
−
<xs:sequence>
<xs:element name="id" type="xs:string"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="AuthenticationRequestEvent">
−
<xs:complexContent>
−
<xs:extension base="tns:RequestEvent">
−
<xs:sequence>
<xs:element name="username" type="xs:string"/>
<xs:element minOccurs="0" name="password" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
−
<xs:complexType name="RequestEvent">
−
<xs:complexContent>
−
<xs:extension base="tns:Event">
−
<xs:sequence>
<xs:element name="correlationId" type="xs:string"/>
<xs:element name="response" type="tns:Response"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
−
<xs:complexType name="Response">
−
<xs:sequence>
<xs:element name="correlationId" type="xs:string"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="AuthenticationResponse">
−
<xs:complexContent>
−
<xs:extension base="tns:Response">
−
<xs:sequence>
<xs:element name="success" type="xs:boolean"/>
<xs:element name="username" type="xs:string"/>
<xs:element minOccurs="0" name="password" type="xs:string"/>
<xs:element minOccurs="0" name="firstName" type="xs:string"/>
<xs:element minOccurs="0" name="lastName" type="xs:string"/>
<xs:element minOccurs="0" name="email" type="xs:string"/>
<xs:element minOccurs="0" name="active" type="xs:boolean"/>
<xs:element minOccurs="0" name="timeZone" type="xs:string"/>
<xs:element minOccurs="0" name="group" type="xs:string"/>
<xs:element minOccurs="0" name="role" type="xs:string"/>
<xs:element minOccurs="0" name="errorCode" type="xs:string"/>
<xs:element minOccurs="0" name="errorMessage" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
−
<xs:complexType name="DispatchEvent">
−
<xs:complexContent>
−
<xs:extension base="tns:Event">
−
<xs:sequence>
<xs:element name="type" type="tns:eventType"/>
<xs:element minOccurs="0" name="previousTask" type="tns:Task"/>
<xs:element name="changeTask" type="tns:Task"/>
<xs:element minOccurs="0" name="newTask" type="tns:Task"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
−
<xs:complexType name="sendAuthenticationResponse">
−
<xs:sequence>
<xs:element minOccurs="0" name="authenticationResponse" type="tns:AuthenticationResponse"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="sendAuthenticationResponseResponse">
<xs:sequence/>
</xs:complexType>
−
<xs:simpleType name="status">
−
<xs:restriction base="xs:string">
<xs:enumeration value="NULL"/>
<xs:enumeration value="UNASSIGNED"/>
<xs:enumeration value="ASSIGNED"/>
<xs:enumeration value="RECEIVED"/>
<xs:enumeration value="ACCEPTED"/>
<xs:enumeration value="REJECTED"/>
<xs:enumeration value="IN_PROGRESS"/>
<xs:enumeration value="POSTPONED"/>
<xs:enumeration value="COMPLETED"/>
<xs:enumeration value="CANCELED"/>
<xs:enumeration value="CLEARED"/>
<xs:enumeration value="EXPIRED"/>
</xs:restriction>
</xs:simpleType>
−
<xs:simpleType name="source">
−
<xs:restriction base="xs:string">
<xs:enumeration value="NULL"/>
<xs:enumeration value="DISPATCH"/>
<xs:enumeration value="SYSTEM"/>
<xs:enumeration value="ENDUSER"/>
</xs:restriction>
</xs:simpleType>
−
<xs:simpleType name="eventType">
−
<xs:restriction base="xs:string">
<xs:enumeration value="TaskCreated"/>
<xs:enumeration value="TaskUpdated"/>
<xs:enumeration value="TaskAssigned"/>
<xs:enumeration value="TaskDeleted"/>
<xs:enumeration value="TaskStatusChanged"/>
<xs:enumeration value="TaskConflicted"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
</types>
−
<message name="Webservice_listenForEvents">
<part element="tns:listenForEvents" name="listenForEvents"/>
</message>
−
<message name="Webservice_sendAuthenticationResponseResponse">
<part element="tns:sendAuthenticationResponseResponse" name="sendAuthenticationResponseResponse"/>
</message>
−
<message name="Webservice_sendAuthenticationResponse">
<part element="tns:sendAuthenticationResponse" name="sendAuthenticationResponse"/>
</message>
−
<message name="Webservice_upsertTaskResponse">
<part element="tns:upsertTaskResponse" name="upsertTaskResponse"/>
</message>
−
<message name="Exception">
<part element="tns:Exception" name="Exception"/>
</message>
−
<message name="Webservice_upsertTask">
<part element="tns:upsertTask" name="upsertTask"/>
</message>
−
<message name="Webservice_listenForEventsResponse">
<part element="tns:listenForEventsResponse" name="listenForEventsResponse"/>
</message>
−
<portType name="Webservice">
−
<operation name="listenForEvents" parameterOrder="listenForEvents">
<input message="tns:Webservice_listenForEvents"/>
<output message="tns:Webservice_listenForEventsResponse"/>
<fault message="tns:Exception" name="Exception"/>
</operation>
−
<operation name="sendAuthenticationResponse" parameterOrder="sendAuthenticationResponse">
<input message="tns:Webservice_sendAuthenticationResponse"/>
<output message="tns:Webservice_sendAuthenticationResponseResponse"/>
<fault message="tns:Exception" name="Exception"/>
</operation>
−
<operation name="upsertTask" parameterOrder="upsertTask">
<input message="tns:Webservice_upsertTask"/>
<output message="tns:Webservice_upsertTaskResponse"/>
<fault message="tns:Exception" name="Exception"/>
</operation>
</portType>
−
<binding name="WebserviceBinding" type="tns:Webservice">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
−
<operation name="listenForEvents">
<soap:operation soapAction=""/>
−
<input>
<soap:body use="literal"/>
</input>
−
<output>
<soap:body use="literal"/>
</output>
−
<fault name="Exception">
<soap:fault name="Exception" use="literal"/>
</fault>
</operation>
−
<operation name="sendAuthenticationResponse">
<soap:operation soapAction=""/>
−
<input>
<soap:body use="literal"/>
</input>
−
<output>
<soap:body use="literal"/>
</output>
−
<fault name="Exception">
<soap:fault name="Exception" use="literal"/>
</fault>
</operation>
−
<operation name="upsertTask">
<soap:operation soapAction=""/>
−
<input>
<soap:body use="literal"/>
</input>
−
<output>
<soap:body use="literal"/>
</output>
−
<fault name="Exception">
<soap:fault name="Exception" use="literal"/>
</fault>
</operation>
</binding>
−
<service name="Webservice">
−
<port binding="tns:WebserviceBinding" name="WebservicePort">
<soap:address location="https://webservice.mp.b.airclic.com:443/webservice/product/fieldservice/v1/Webservice"/>
</port>
</service>
</definitions>
Following is the pl/sql code using UTL_DBWS
DECLARE
l_service UTL_DBWS.service;
l_call UTL_DBWS.call;
l_wsdl_url VARCHAR2(32767);
l_namespace VARCHAR2(32767);
l_service_qname UTL_DBWS.qname;
l_port_qname UTL_DBWS.qname;
l_operation_qname UTL_DBWS.qname;
l_input_params UTL_DBWS.anydata_list;
soap_request xmltype;
l_result xmltype;
result_output VARCHAR2(32767);
BEGIN
l_wsdl_url := 'https://webservice.mp.b.airclic.com/webservice/product/fieldservice/v1/Webservice?WSDL';
l_namespace := 'http://webservice.airclic.com/';
dbms_output.put_line ('1');
l_service_qname := UTL_DBWS.to_qname(l_namespace, 'Webservice');
dbms_output.put_line ('2');
l_port_qname := UTL_DBWS.to_qname(l_namespace, 'WebservicePort');
dbms_output.put_line ('3');
l_operation_qname := UTL_DBWS.to_qname(l_namespace, 'sendAuthenticationResponse');
dbms_output.put_line ('4');
l_service := UTL_DBWS.create_service (
wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),
service_name => l_service_qname);
dbms_output.put_line ('5');
l_call := UTL_DBWS.create_call (
service_handle => l_service,
port_name => l_port_qname,
operation_name => l_operation_qname);
dbms_output.put_line ('6');
UTL_DBWS.SET_PROPERTY(l_call,'USERNAME',<username to access wsdl>);
dbms_output.put_line ('7');
UTL_DBWS.SET_PROPERTY(l_call,'PASSWORD',<password>);
dbms_output.put_line ('8');
utl_dbws.set_property(l_call,'OPERATION_STYLE', 'document');
dbms_output.put_line ('9');
soap_request := xmltype.createxml('<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:sendAuthenticationResponse xmlns:ns2="http://webservice.airclic.com/">
<authenticationResponse>
<correlationId>4646735802698040711:[email protected]</correlationId>
<success>true</success>
<username>changlanih</username>
<password>abcd1234</password>
<firstName>hero</firstName>
<lastName>changlani</lastName>
<email>[email protected]</email>
<active>true</active>
<timeZone>eastern</timeZone>
<group>Northeast</group>
<role>Service Manager</role>
</authenticationResponse>
</ns2:sendAuthenticationResponse>
</S:Body>
</S:Envelope>');
l_result := UTL_DBWS.invoke ( l_call,soap_request);
UTL_DBWS.release_call (call_handle => l_call);
UTL_DBWS.release_service (service_handle => l_service);
result_output := l_result.getstringval;
dbms_output.put_line('web svc output ===> ' || result_output);
END;
Following is the error from pl/sql code
1
2
3
4
DECLARE
ERROR at line 1:
ORA-29532: Java call terminated by uncaught Java exception: java.lang.IllegalAccessException: error.build.wsdl.model: oracle.j2ee.ws.common.tools.api.WsdlValidationException:
Failed to read WSDL from https://webservice.mp.b.airclic.com/webservice/product/fieldservice/v1/Webservice?WSDL:
HTTP connection error code is 401
ORA-06512: at "SYS.UTL_DBWS", line 193
ORA-06512: at "SYS.UTL_DBWS", line 190
ORA-06512: at line 20
Notes
The program fails at following line of code -
l_service := UTL_DBWS.create_service (
wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),
service_name => l_service_qname);
Web services are SSL.
The WSDL is at https location and needs username/password for access. The username/password to access WSDL are set using UTL_DBWS.SET_PROPERTY
To access the SSL site, I have imported the CA in Oracle Wallet, JVM home and JDK home.
Can anyone tell me what am I doing wrong here. I am not able to even establish connection to web service host.
This is very frustrating - Oracle has no examples on how to access a SSL Web Service (that needs authentication) from Database.
This is effecting our project deadlines ......... any help would be greatly appreciated.
Thanks.Hi,
I presume your Web Service needs HTTP (BASIC?) Authentication.
All this needs is setting the following 2 properties, which as can be seen, you are setting....
UTL_DBWS.set_property(l_call, 'USERNAME', '<username>');
UTL_DBWS.set_property(l_call, 'PASSWORD', '<pwd>');
This should work as long as your DBWS Callout Utility was downloaded from OTN after June 2008, and it's version is atleast 10.1.3.1.
Following is a sample code snippet that was tested successfully for this :
Declare
l_service UTL_DBWS.service;
l_call UTL_DBWS.call;
l_result sys.XMLTYPE;
l_request sys.XMLTYPE;
BEGIN
l_service := UTL_DBWS.create_service(null);
l_call := UTL_DBWS.create_call(l_service);
UTL_DBWS.set_target_endpoint_address(l_call, 'http://xxx.oracle.com:8888/basic/MyWebService1SoapHttpPort');
UTL_DBWS.set_property(l_call, 'USERNAME', 'username');
UTL_DBWS.set_property(l_call, 'PASSWORD', 'pwd');
UTL_DBWS.set_property(l_call, 'OPERATION_STYLE', 'document');
UTL_DBWS.set_property(l_call, 'SOAPACTION_USE', 'true');
UTL_DBWS.set_property(l_call, 'SOAPACTION_URI', 'http://xxx.oracle.com:8888/basic/MyWebService1SoapHttpPort');
l_request := XMLTYPE('<Z_CENTRICITY_GET_DOCLIST
xmlns:urn="urn:sap-com:document:sap:rfc:functions">' ||
'<I_INCLUDE_OLD_VERSIONS></I_INCLUDE_OLD_VERSIONS>' ||
'<I_INSTITUTION>0001</I_INSTITUTION>' ||
'<I_PATIENT_NR>0000000181</I_PATIENT_NR>' ||
'</Z_CENTRICITY_GET_DOCLIST>');
l_result := UTL_DBWS.invoke(l_call, l_request);
UTL_DBWS.release_call (call_handle => l_call);
UTL_DBWS.release_service (service_handle => l_service);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(sqlcode || ' ' || sqlerrm);
END;
Hope this helps,
Yogesh
Maybe you are looking for
-
Connecting ARD to UNIX computer
I currently have ARD 3.1 installed on my MacBook Pro as the Server. I would like to be able to acces a UNIX computer I have running Brisque software (Scitex imagesetter software) so I can operate this computer from my MacBook Pro. Is this possible an
-
Problem in executing BDC through interface.
Hello, We have developed an interface program for creating notifications through BDC in IW21 . Standard notification transaction IW21 has been enhanced with a screen table control for entering certain data.We have recorded the transaction IW21 in SHD
-
MIGO User Exit/BADI to disable field
Hi, I would like to disable a specific set of fields in MIGO (fields under the GOITEM structure). Is there a BADI (or user exit) I can use to implement this functionality ? Thanks.
-
IPod Nano with built in Nike+ question
My Nano has the Fitness app that allows you to track walking (pedometer) and running. I've noticed that when syncing it shows up as two separate things under the Nike+ tab when I have clicked on the device in iTunes. Furthermore, I have noticed tha
-
Hi all, I am going through the whitepaper on using Run_Report_Object to call Reports with a parameter form and it references the FrmReportsInteg bean. Where can I get my hands on this little gem? I don't see it anywhere to download.