on 05-11-2007 11:19 PM
Hi folks,
Once again, my apology for this thread isnt 100% XI forum related. But, continuing with this issue
As you can see on my earlier post
Im trying to consume an external web service. Following Michals suggestion I have checked the WSDL in debug mode and I found some irregularities on it. It seams this WSDL doesnt describe the whole interface correctly. Looking to Diagnosis, I see an object <b>"<message name="listaCodSig0Request"> <part name..."</b> that is linked to an empty object, or either, doesnt exist in the WSDL document!!!
<i>ABAP proxy generation expects that all directly and indirectly referenced objects are in the WSDL document. Therefore, no proxy can be generated for this WSDL and the system displays an error message.</i>
It seams that this web service was developed through messages with several parts. Searching in http://service.sap.com I found a document <u>XSDandWSDL_XI30SP11.xls</u> with supported XML schema and WSDL. In this doc I can see that messages with several parts are not supported!!!
I would like to know how can I workaround this issue. Is it possible replace these elements<b> part name= </b> with other supported elements in the WSDL document and without changes on the web service? Im asking this because this external web service are working well with other third party client applications and is not supposed perform any changes on that.
I tried to replace <b>part name= </b> to <b>part element= </b>, but it doesnt work! Proxy generation terminated: WSDL error (object part without name)
Anyone knows which elements I should use in replace of these unsupported elements and which procedures I need to taking into account?
Thanks in advance,
Ricardo.
Hey Ricardo,
It'd help us to help you if you posted the .wsdl file (don't know if it is possible for you though...).
Regards,
Henrique.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
<?xml version="1.0" encoding="utf-8" ?>
- <!-- Generated by the Oracle JDeveloper 10g Web Services WSDL Generator
-->
- <!-- Date Created: Wed Nov 08 12:01:03 GMT 2006
-->
- <definitions name="Moradas_Edificios" targetNamespace="http://alcor.cm-lisboa.net:7777/CML-SRUs-context-root/Moradas_Edificios.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://alcor.cm-lisboa.net:7777/CML-SRUs-context-root/Moradas_Edificios.wsdl" xmlns:ns1="http://db_cml_alcor_mgb/Moradas_Edificios.xsd">
- <types>
- <schema targetNamespace="http://db_cml_alcor_mgb/Moradas_Edificios.xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
- <complexType name="db_cml_alcor_mgb_TabMoradaEdif" jdev:packageName="db_cml_alcor_mgb" xmlns:jdev="http://xmlns.oracle.com/jdeveloper/webservices">
- <all>
<element name="array" type="ns1:ArrayOfdb_cml_alcor_mgb_MoradaEdifUser" />
</all>
</complexType>
- <complexType name="db_cml_alcor_mgb_MoradaEdifUser" jdev:packageName="db_cml_alcor_mgb" xmlns:jdev="http://xmlns.oracle.com/jdeveloper/webservices">
- <all>
<element name="codSig" type="string" />
<element name="desigLocal" type="string" />
<element name="codLocal" type="string" />
<element name="nrPol" type="string" />
<element name="nome" type="string" />
<element name="nrObraConstrucao" type="string" />
<element name="freguesia" type="string" />
<element name="areaGestao" type="string" />
</all>
</complexType>
- <complexType name="ArrayOfdb_cml_alcor_mgb_MoradaEdifUser" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
- <complexContent>
- <restriction base="SOAP-ENC:Array">
<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="ns1:db_cml_alcor_mgb_MoradaEdifUser[]" />
</restriction>
</complexContent>
</complexType>
</schema>
</types>
- <message name="listaCodSig0Request">
<part name="pDesigLocal" type="xsd:string" />
</message>
- <message name="listaCodSig0Response">
<part name="return" type="ns1:db_cml_alcor_mgb_TabMoradaEdif" />
</message>
- <portType name="Moradas_EdificiosPortType">
- <operation name="listaCodSig">
<input name="listaCodSig0Request" message="tns:listaCodSig0Request" />
<output name="listaCodSig0Response" message="tns:listaCodSig0Response" />
</operation>
</portType>
- <binding name="Moradas_EdificiosBinding" type="tns:Moradas_EdificiosPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
- <operation name="listaCodSig">
<soap:operation soapAction="" style="rpc" />
- <input name="listaCodSig0Request">
<soap:body use="encoded" namespace="Moradas_Edificios" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</input>
- <output name="listaCodSig0Response">
<soap:body use="encoded" namespace="Moradas_Edificios" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</output>
</operation>
</binding>
- <service name="Moradas_Edificios">
- <port name="Moradas_EdificiosPort" binding="tns:Moradas_EdificiosBinding">
<soap:address location="http://alcor.cm-lisboa.net:7777/CML-SRUs-context-root/Moradas_Edificios" />
</port>
</service>
</definitions>
Thanks a lot.
Regards,
Ricardo.
Hey Ricardo,
First of all, when I tried to save your wsdl in XMLSpy, it complained about the empty soapaction declaration in the <operation> tag. I had to remove the line
<soap:operation soapAction="" style="rpc" />
in order to make it work in XMLSpy. It would be a good idea to check that out with the developers of the wsdl.
Anyway, after I removed that tag, I start comparing your wsdl to a common Message Interface wsdl generated by XI. By doing that, I have found out that the <part> element in XI has a name and also refers to an existing element, which was previously defined in the <schema> group.
I've made some modifications, you could try it, but I have found an issue about this approach. With your wsdl, the soap request message has a <listaCodSig> tag with namespace "http://db_cml_alcor_mgb/Moradas_Edificios.xsd", and inside it, you have a <pDesignLocal> tag with no namespace defined.
If you use the modificated wsdl below, both <listaCodSig> and <pDesignLocal> tags have namespace as "http://db_cml_alcor_mgb/Moradas_Edificios.xsd", and I think that'll cause issues in your server application. But you can try it out, playing with the wsdls, if you can remove the definition there.
The modificated wsdl is below (changed parts in bold).
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by the Oracle JDeveloper 10g Web Services WSDL Generator -->
<!-- Date Created: Wed Nov 08 12:01:03 GMT 2006 -->
<definitions
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://alcor.cm-lisboa.net:7777/CML-SRUs-context-root/Moradas_Edificios.wsdl"
xmlns:ns1="http://db_cml_alcor_mgb/Moradas_Edificios.xsd"
name="Moradas_Edificios"
targetNamespace="http://alcor.cm-lisboa.net:7777/CML-SRUs-context-root/Moradas_Edificios.wsdl">
<types>
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
targetNamespace="http://db_cml_alcor_mgb/Moradas_Edificios.xsd">
<b><element name="pDesignLocal" type="xsd:string"/>
<element name="return" type="ns1:db_cml_alcor_mgb_TabMoradaEdif"/></b>
<complexType name="db_cml_alcor_mgb_TabMoradaEdif"
jdev:packageName="db_cml_alcor_mgb"
xmlns:jdev="http://xmlns.oracle.com/jdeveloper/webservices">
<all>
<element name="array"
type="ns1:ArrayOfdb_cml_alcor_mgb_MoradaEdifUser"/>
</all>
</complexType>
<complexType name="db_cml_alcor_mgb_MoradaEdifUser"
jdev:packageName="db_cml_alcor_mgb"
xmlns:jdev="http://xmlns.oracle.com/jdeveloper/webservices">
<all>
<element name="codSig" type="string"/>
<element name="desigLocal" type="string"/>
<element name="codLocal" type="string"/>
<element name="nrPol" type="string"/>
<element name="nome" type="string"/>
<element name="nrObraConstrucao" type="string"/>
<element name="freguesia" type="string"/>
<element name="areaGestao" type="string"/>
</all>
</complexType>
<complexType name="ArrayOfdb_cml_alcor_mgb_MoradaEdifUser"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<complexContent>
<restriction base="SOAP-ENC:Array">
<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="ns1:db_cml_alcor_mgb_MoradaEdifUser[]"/>
</restriction>
</complexContent>
</complexType>
</schema>
</types>
<message name="listaCodSig0Request">
<b><part name="pDesigLocal" element="ns1:pDesignLocal"/></b>
</message>
<message name="listaCodSig0Response">
<b><part name="return" element="ns1:return"/></b>
</message>
<portType name="Moradas_EdificiosPortType">
<operation name="listaCodSig">
<input name="listaCodSig0Request" message="tns:listaCodSig0Request"/>
<output name="listaCodSig0Response" message="tns:listaCodSig0Response"/>
</operation>
</portType>
<binding name="Moradas_EdificiosBinding" type="tns:Moradas_EdificiosPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="listaCodSig">
<input name="listaCodSig0Request">
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="Moradas_Edificios"/>
</input>
<output name="listaCodSig0Response">
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="Moradas_Edificios"/>
</output>
</operation>
</binding>
<service name="Moradas_Edificios">
<port name="Moradas_EdificiosPort" binding="tns:Moradas_EdificiosBinding">
<soap:address location="http://alcor.cm-lisboa.net:7777/CML-SRUs-context-root/Moradas_Edificios"/>
</port>
</service>
</definitions>
Regards,
Henrique.
Hi Henrique,
Thanks a lot for your quick answer
It works with XMLSpy, but when I try to upload this wsdl into WAS I got errors, it seams there is an object that isnt defined or maybe is defined but in a wrong namespace.
In the WSDL document, the object
"<complex/simpleType name="ArrayOfdb_cml_alcor_m..."
from the namespace
"http://db_cml_alcor_mgb/Moradas_Edificios.xsd"
links to the object
"<attribute name="arrayType">"
from the namespace
"http://schemas.xmlsoap.org/soap/encoding/"
If you want you could check it - transaction se80, over the package name press right button and go to Create > Enterprise Service / Web Service > Proxy object; chose Local File to upload the wsdl and fill the package name and a prefix e.g. Z and you will get the same error!
About the empty soap action, thanks I will discuss it with web services team.
But, Im confused Is it not supposed that this kind of features has 100% SAP WAS compliant? Even with WSDLs as document type or rpc type?
Once again, thanks a lot for your help.
Regards,
Ricardo.
Hey Ricardo,
I found out something that might help.
I imported the .wsdl in IR and checked out messages tab but the messages weren't there.
That was really strange.
Then I tried to manipulate the .wsdl and found out that if I reduced the length of the main namespace, then the messages appeared.
Thus, I think that the namespace "http://alcor.cm-lisboa.net:7777/CML-SRUs-context-root/Moradas_Edificios.wsdl" has a larger length then maximum namespace length supported by XI.
Try to reduce it and see if you can create proxy in SE80.
Regards,
Henrique.
Hi Henrique,
You are right, I tested in XI and the messages dont appear until I reduced the namespace length. But this is not the real problem, I checked within WAS and I dont have any problem with namespaces lengt here, however I have problems with an object/element, it seams that is lost the link to the refereced object.
After your modifications I got this error message:
In the WSDL document, the object
<b>"<complex/simpleType name="ArrayOfdb_cml_alcor_m..."</b>
from the namespace
<b>"http://db_cml_alcor_mgb/Moradas_Edificios.xsd"</b>
links to the object
<b>"><attribute name="arrayType">"</b>
from the namespace
<b>"http://schemas.xmlsoap.org/soap/encoding/"</b>
However, this last object does not exist in the WSDL document.
Do you know whats happening?
Thanks in advance,
Ricardo.
Ricardo,
my last sugestion would be if you checked the supported wsdl elements document, in sap service marketplace:
https://sap.service.com/xi -> Media Library -> Documentation -> SAP XI 3.0 (SP11) - Supported XML Schema and WSDL (EN)
Regards,
Henrique.
Hi Henrique,
Thank you, but I already have checked this document.
I opened an oss message regarding this issue and I'm waiting an answer. However, there is a note (1046046) that handles this kind of problems. Unfortunatly, for that note others are required and I'm unable to implement them because one of them requires objects that will be provided with support package 13 of NW04s.
I hope an OSS answer during this next week. Once again, thanks a lot for your help and when I have the solution I'll post it here
Cheers,
Ricardo.
User | Count |
---|---|
83 | |
10 | |
10 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.