Array in WSDL
Hi there,
I have a Proxy->PI->SOAP scenario.
The third-party WSDL contains an array, which is unfortunately not supported by PI.
The complex type looks as following:
<xs:complexType name="EmployeeInfo">
<xs:sequence>
<xs:element name="ID" type="xs:string"/>
<xs:element name="Name" type="xs:string"/>
<xs:element name="Qual" type="ns1:QualItems"/>
</xs:sequence>
</xs:complexType>
This is the array structure:
<xs:complexType name="QualItems">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute xmlns:n1="http://schemas.xmlsoap.org/wsdl/"
ref="soapenc:arrayType" n1:arrayType="ns1:QualRec[]"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="QualRec">
<xs:sequence>
<xs:element name="QualPos" type="xs:string"/>
</xs:sequence>
</xs:complexType>
Ive tried to change the WSDL in the following way:
<xs:complexType name="EmployeeInfo">
<xs:sequence>
<xs:element name="ID" type="xs:string"/>
<xs:element name="Name" type="xs:string"/>
<xs:element name="Qual" type="QualRec" minOccurs="1" maxOccurs="unbound"/>
</xs:sequence>
</xs:complexType>
But the field "QualPos" is not filled in the thir-party application.
I now asked the service provider to send me a proper payload for the web service.
It looks like that:
<Qual href="#id2" />
<soapenc:Array id="id2" xmlns:q4="urn:XXX" soapenc:arrayType="q4:TSAPQualRec[1]">
<Item href="#id3" />
</soapenc:Array>
<q5:QualRec id="id3" xsi:type="q5:TSAPQualRec" xmlns:q5="urn:XXX">
<QualPos xsi:type="xsd:string">XYZ</QualPos>
</q5:QualRec>
How can I achieve that in PI?
Do I have to use XSLT mapping?
Could you please give me an example?
Thanks in advance!
Hi Kolz,
A few cents. This can be done by PI, you can use a XSL or Java Mapping. Personally, i'd rather to use XSL mapping.
If you need to do the array in the request you would need only to set the tag soapen:Array manually in the XSL (if its the attributes are not parameters) and the rest with a value-of-select.
If you need to transform a response with the array you only need to do a for:each like this example looping through xslt split array - Xslt - our.umbraco.org
Finally, if you share a source XML and target XML (hidding the company information with another values) we can help you with the XSL easier.
Hope this helps.
Regards.
Similar Messages
-
Hey,
My Webservice is
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.incuity.com/schema/2005/11/incuity" xmlns:s1="http://www.incuity.com/schema/2005/11/incuity/metamodel" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s2="http://www.incuity.com/schema/2005/11/incuity/AbstractTypes" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://www.incuity.com/schema/2005/11/incuity" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://www.incuity.com/schema/2005/11/incuity">
<s:import namespace="http://www.incuity.com/schema/2005/11/incuity/metamodel" />
<s:element name="GetItemFromName">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="fullyQualifiedName" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetItemFromNameResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetItemFromNameResult" type="s1:ItemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetItemsFromNames">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="fullyQualifiedNames" type="tns:ArrayOfString" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ArrayOfString">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfItemData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="ItemData" nillable="true" type="s1:ItemData" />
</s:sequence>
</s:complexType>
<s:element name="GetItemsFromNamesResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetItemsFromNamesResult" type="tns:ArrayOfItemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetItemFromId">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="uniqueId" type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetItemFromIdResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetItemFromIdResult" type="s1:ItemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetItemsFromIds">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="uniqueIds" type="tns:ArrayOfInt" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ArrayOfInt">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="int" type="s:int" />
</s:sequence>
</s:complexType>
<s:element name="GetItemsFromIdsResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetItemsFromIdsResult" type="tns:ArrayOfItemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetItemNamesFromIds">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="uniqueIds" type="tns:ArrayOfInt" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetItemNamesFromIdsResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetItemNamesFromIdsResult" type="tns:ArrayOfString" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="PersistChanges">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="changeSet" type="s1:ChangeSet" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="PersistChangesResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="PersistChangesResult" type="s1:ChangeSetResult" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="SetPropertyById">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="itemId" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="propertyIndex" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="value" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="SetPropertyByIdResponse">
<s:complexType />
</s:element>
<s:element name="SetPropertyByName">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="propertyFqn" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="value" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="SetPropertyByNameResponse">
<s:complexType />
</s:element>
<s:element name="GetUpdate">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="itemId" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="utcModifiedOnTicks" type="s:long" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetUpdateResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetUpdateResult" type="s1:ItemUpdate" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="InvokeOperation">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" ref="s1:operationInvoke" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="InvokeOperationResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" ref="s1:InvokeOperationResult" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetMimeValue">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="documentId" type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetMimeValueResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetMimeValueResult" type="s1:MimeValue" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="ItemData" nillable="true" type="s1:ItemData" />
<s:element name="ArrayOfItemData" nillable="true" type="tns:ArrayOfItemData" />
<s:element name="ArrayOfString" nillable="true" type="tns:ArrayOfString" />
<s:element name="ItemUpdate" nillable="true" type="s1:ItemUpdate" />
<s:element name="MimeValue" nillable="true" type="s1:MimeValue" />
</s:schema>
<s:schema elementFormDefault="qualified" targetNamespace="http://www.incuity.com/schema/2005/11/incuity/metamodel">
<s:complexType name="ItemData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExternalId" />
<s:element minOccurs="0" maxOccurs="1" name="Properties" type="s1:ArrayOfNamedValue" />
</s:sequence>
<s:attribute name="Name" type="s:string" />
<s:attribute name="FullyQualifiedName" type="s:string" />
<s:attribute name="Description" type="s:string" />
<s:attribute name="ItemTypeId" type="s:int" use="required" />
<s:attribute name="UniqueId" type="s:int" use="required" />
<s:attribute name="SecurityDescriptorData" type="s:base64Binary" />
<s:attribute name="IsDeleted" type="s:boolean" use="required" />
<s:attribute name="CreatedOn" type="s:long" use="required" />
<s:attribute name="ModifiedOn" type="s:long" use="required" />
<s:attribute name="ParentId" type="s:int" use="required" />
<s:attribute name="MappingItemId" type="s:int" use="required" />
<s:attribute name="RequestHandlerId" type="s:int" use="required" />
<s:attribute name="StorageMode" type="s1:StorageMode" use="required" />
</s:complexType>
<s:complexType name="ArrayOfNamedValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="Property" type="s1:NamedValue" />
</s:sequence>
</s:complexType>
<s:complexType name="NamedValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Value" />
</s:sequence>
<s:attribute name="Name" type="s:string" />
</s:complexType>
<s:simpleType name="StorageMode">
<s:restriction base="s:string">
<s:enumeration value="SystemMeta" />
<s:enumeration value="SystemFlat" />
<s:enumeration value="Connector" />
</s:restriction>
</s:simpleType>
<s:complexType name="ChangeSet">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="NewItems" type="s1:ArrayOfItemSpec" />
<s:element minOccurs="0" maxOccurs="1" name="DeletedItems" type="s1:ArrayOfInt" />
<s:element minOccurs="0" maxOccurs="1" name="ChangedItems" type="s1:ArrayOfChangedItem" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfItemSpec">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="ItemSpec" type="s1:ItemSpec" />
</s:sequence>
</s:complexType>
<s:complexType name="ItemSpec">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Properties" type="s1:ArrayOfNamedValue1" />
</s:sequence>
<s:attribute name="ParentId" type="s:int" use="required" />
<s:attribute name="UniqueId" type="s:int" use="required" />
<s:attribute name="ItemTypeId" type="s:int" use="required" />
<s:attribute name="Name" type="s:string" />
<s:attribute name="FullyQualifiedName" type="s:string" />
<s:attribute name="SecurityDescriptorData" type="s:base64Binary" />
<s:attribute name="IsReadable" type="s:boolean" use="required" />
<s:attribute name="IsWriteable" type="s:boolean" use="required" />
<s:attribute name="IsExecutable" type="s:boolean" use="required" />
<s:attribute name="CreatedOn" type="s:long" use="required" />
<s:attribute name="ModifiedOn" type="s:long" use="required" />
<s:attribute name="RequestHandlerId" type="s:int" />
</s:complexType>
<s:complexType name="ArrayOfNamedValue1">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="PropValue" type="s1:NamedValue" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfInt">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="DeletedItemId" type="s:int" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfChangedItem">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="ChangedItem" type="s1:ChangedItem" />
</s:sequence>
</s:complexType>
<s:complexType name="ChangedItem">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ChangedProperties" type="s1:ArrayOfChangedProperty" />
</s:sequence>
<s:attribute name="ItemId" type="s:int" use="required" />
<s:attribute name="ModifiedOn" type="s:long" use="required" />
<s:attribute name="SecurityDescriptorData" type="s:base64Binary" />
</s:complexType>
<s:complexType name="ArrayOfChangedProperty">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="ChangedProperty" type="s1:ChangedProperty" />
</s:sequence>
</s:complexType>
<s:complexType name="ChangedProperty">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="NewValue" type="s1:NewPropertyValue" />
</s:sequence>
<s:attribute name="PropertyName" type="s:string" />
</s:complexType>
<s:complexType name="NewPropertyValue">
<s:sequence>
<s:choice minOccurs="1" maxOccurs="1">
<s:element minOccurs="0" maxOccurs="1" name="SimpleValue" />
<s:element minOccurs="0" maxOccurs="1" name="CollectionChanges" type="s1:ChangedCollectionValue" />
</s:choice>
</s:sequence>
</s:complexType>
<s:complexType name="ChangedCollectionValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CollectionChanges" type="s1:ArrayOfCollectionChangeInfo" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfCollectionChangeInfo">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="CollectionChangeInfo" type="s1:CollectionChangeInfo" />
</s:sequence>
</s:complexType>
<s:complexType name="CollectionChangeInfo" abstract="true" />
<s:complexType name="CCI_ItemAddedAt">
<s:complexContent mixed="false">
<s:extension base="s1:CollectionChangeInfo">
<s:attribute name="AddedItem" type="s:int" use="required" />
<s:attribute name="Position" type="s:int" use="required" />
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="CCI_ItemReplacedAt">
<s:complexContent mixed="false">
<s:extension base="s1:CollectionChangeInfo">
<s:attribute name="ReplacedItem" type="s:int" use="required" />
<s:attribute name="AddedItem" type="s:int" use="required" />
<s:attribute name="Position" type="s:int" use="required" />
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="CCI_ItemRemovedAt">
<s:complexContent mixed="false">
<s:extension base="s1:CollectionChangeInfo">
<s:attribute name="RemovedItem" type="s:int" use="required" />
<s:attribute name="Position" type="s:int" use="required" />
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="CCI_ItemsCleared">
<s:complexContent mixed="false">
<s:extension base="s1:CollectionChangeInfo" />
</s:complexContent>
</s:complexType>
<s:complexType name="ChangeSetResult">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="NewItems" type="s1:ArrayOfPersistedNewItem" />
<s:element minOccurs="0" maxOccurs="1" name="CascadedDeletedItems" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OnlyOriginalChangesItems" type="s1:ArrayOfPersistedChangedItem" />
<s:element minOccurs="0" maxOccurs="1" name="CascadedChangesItems" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfPersistedNewItem">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="NewItem" type="s1:PersistedNewItem" />
</s:sequence>
</s:complexType>
<s:complexType name="PersistedNewItem">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ItemData" type="s1:ItemData" />
</s:sequence>
<s:attribute name="TempId" type="s:int" use="required" />
</s:complexType>
<s:complexType name="ArrayOfPersistedChangedItem">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="ChangedItem" type="s1:PersistedChangedItem" />
</s:sequence>
</s:complexType>
<s:complexType name="PersistedChangedItem">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ItemData" type="s1:ItemData" />
</s:sequence>
<s:attribute name="ItemId" type="s:int" use="required" />
<s:attribute name="ModifiedOn" type="s:long" use="required" />
</s:complexType>
<s:complexType name="ItemUpdate">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ItemData" type="s1:ItemData" />
</s:sequence>
<s:attribute name="Status" type="s1:WorkingCopyStatus" use="required" />
</s:complexType>
<s:simpleType name="WorkingCopyStatus">
<s:restriction base="s:string">
<s:enumeration value="UpToDate" />
<s:enumeration value="Deleted" />
<s:enumeration value="Outdated" />
</s:restriction>
</s:simpleType>
<s:element name="operationInvoke" type="s1:OperationInvoke" />
<s:complexType name="OperationInvoke">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="InputParams" type="s1:ArrayOfNamedValue2" />
</s:sequence>
<s:attribute name="TargetItemId" type="s:int" use="required" />
<s:attribute name="Operation" type="s:string" />
</s:complexType>
<s:complexType name="ArrayOfNamedValue2">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="InputParam" type="s1:NamedValue" />
</s:sequence>
</s:complexType>
<s:complexType name="OperationResult">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ReturnValue" />
<s:element minOccurs="0" maxOccurs="1" name="OutValues" type="s1:ArrayOfNamedValue3" />
<s:element minOccurs="0" maxOccurs="1" name="AffectedItems">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="DeletedItems" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="NewItems" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ChangedItems" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfNamedValue3">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="OutValue" type="s1:NamedValue" />
</s:sequence>
</s:complexType>
<s:element name="InvokeOperationResult" type="s1:OperationResult" />
<s:complexType name="MimeValue">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="DocumentId" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="Content" type="s:base64Binary" />
</s:sequence>
</s:complexType>
</s:schema>
<s:schema targetNamespace="http://www.incuity.com/schema/2005/11/incuity/AbstractTypes">
<s:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
<s:complexType name="StringArray">
<s:complexContent mixed="false">
<s:restriction base="soapenc:Array">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="String" type="s:string" />
</s:sequence>
</s:restriction>
</s:complexContent>
</s:complexType>
</s:schema>
</wsdl:types>
<wsdl:message name="GetItemFromNameSoapIn">
<wsdl:part name="parameters" element="tns:GetItemFromName" />
</wsdl:message>
<wsdl:message name="GetItemFromNameSoapOut">
<wsdl:part name="parameters" element="tns:GetItemFromNameResponse" />
</wsdl:message>
<wsdl:message name="GetItemsFromNamesSoapIn">
<wsdl:part name="parameters" element="tns:GetItemsFromNames" />
</wsdl:message>
<wsdl:message name="GetItemsFromNamesSoapOut">
<wsdl:part name="parameters" element="tns:GetItemsFromNamesResponse" />
</wsdl:message>
<wsdl:message name="GetItemFromIdSoapIn">
<wsdl:part name="parameters" element="tns:GetItemFromId" />
</wsdl:message>
<wsdl:message name="GetItemFromIdSoapOut">
<wsdl:part name="parameters" element="tns:GetItemFromIdResponse" />
</wsdl:message>
<wsdl:message name="GetItemsFromIdsSoapIn">
<wsdl:part name="parameters" element="tns:GetItemsFromIds" />
</wsdl:message>
<wsdl:message name="GetItemsFromIdsSoapOut">
<wsdl:part name="parameters" element="tns:GetItemsFromIdsResponse" />
</wsdl:message>
<wsdl:message name="GetItemNamesFromIdsSoapIn">
<wsdl:part name="parameters" element="tns:GetItemNamesFromIds" />
</wsdl:message>
<wsdl:message name="GetItemNamesFromIdsSoapOut">
<wsdl:part name="parameters" element="tns:GetItemNamesFromIdsResponse" />
</wsdl:message>
<wsdl:message name="PersistChangesSoapIn">
<wsdl:part name="parameters" element="tns:PersistChanges" />
</wsdl:message>
<wsdl:message name="PersistChangesSoapOut">
<wsdl:part name="parameters" element="tns:PersistChangesResponse" />
</wsdl:message>
<wsdl:message name="SetPropertyByIdSoapIn">
<wsdl:part name="parameters" element="tns:SetPropertyById" />
</wsdl:message>
<wsdl:message name="SetPropertyByIdSoapOut">
<wsdl:part name="parameters" element="tns:SetPropertyByIdResponse" />
</wsdl:message>
<wsdl:message name="SetPropertyByNameSoapIn">
<wsdl:part name="parameters" element="tns:SetPropertyByName" />
</wsdl:message>
<wsdl:message name="SetPropertyByNameSoapOut">
<wsdl:part name="parameters" element="tns:SetPropertyByNameResponse" />
</wsdl:message>
<wsdl:message name="GetUpdateSoapIn">
<wsdl:part name="parameters" element="tns:GetUpdate" />
</wsdl:message>
<wsdl:message name="GetUpdateSoapOut">
<wsdl:part name="parameters" element="tns:GetUpdateResponse" />
</wsdl:message>
<wsdl:message name="InvokeOperationSoapIn">
<wsdl:part name="parameters" element="tns:InvokeOperation" />
</wsdl:message>
<wsdl:message name="InvokeOperationSoapOut">
<wsdl:part name="parameters" element="tns:InvokeOperationResponse" />
</wsdl:message>
<wsdl:message name="GetMimeValueSoapIn">
<wsdl:part name="parameters" element="tns:GetMimeValue" />
</wsdl:message>
<wsdl:message name="GetMimeValueSoapOut">
<wsdl:part name="parameters" element="tns:GetMimeValueResponse" />
</wsdl:message>
<wsdl:message name="GetItemFromNameHttpGetIn">
<wsdl:part name="fullyQualifiedName" type="s:string" />
</wsdl:message>
<wsdl:message name="GetItemFromNameHttpGetOut">
<wsdl:part name="Body" element="tns:ItemData" />
</wsdl:message>
<wsdl:message name="GetItemsFromNamesHttpGetIn">
<wsdl:part name="fullyQualifiedNames" type="s2:StringArray" />
</wsdl:message>
<wsdl:message name="GetItemsFromNamesHttpGetOut">
<wsdl:part name="Body" element="tns:ArrayOfItemData" />
</wsdl:message>
<wsdl:message name="GetItemFromIdHttpGetIn">
<wsdl:part name="uniqueId" type="s:string" />
</wsdl:message>
<wsdl:message name="GetItemFromIdHttpGetOut">
<wsdl:part name="Body" element="tns:ItemData" />
</wsdl:message>
<wsdl:message name="GetItemsFromIdsHttpGetIn">
<wsdl:part name="uniqueIds" type="s2:StringArray" />
</wsdl:message>
<wsdl:message name="GetItemsFromIdsHttpGetOut">
<wsdl:part name="Body" element="tns:ArrayOfItemData" />
</wsdl:message>
<wsdl:message name="GetItemNamesFromIdsHttpGetIn">
<wsdl:part name="uniqueIds" type="s2:StringArray" />
</wsdl:message>
<wsdl:message name="GetItemNamesFromIdsHttpGetOut">
<wsdl:part name="Body" element="tns:ArrayOfString" />
</wsdl:message>
<wsdl:message name="GetUpdateHttpGetIn">
<wsdl:part name="itemId" type="s:string" />
<wsdl:part name="utcModifiedOnTicks" type="s:string" />
</wsdl:message>
<wsdl:message name="GetUpdateHttpGetOut">
<wsdl:part name="Body" element="tns:ItemUpdate" />
</wsdl:message>
<wsdl:message name="GetMimeValueHttpGetIn">
<wsdl:part name="documentId" type="s:string" />
</wsdl:message>
<wsdl:message name="GetMimeValueHttpGetOut">
<wsdl:part name="Body" element="tns:MimeValue" />
</wsdl:message>
<wsdl:message name="GetItemFromNameHttpPostIn">
<wsdl:part name="fullyQualifiedName" type="s:string" />
</wsdl:message>
<wsdl:message name="GetItemFromNameHttpPostOut">
<wsdl:part name="Body" element="tns:ItemData" />
</wsdl:message>
<wsdl:message name="GetItemsFromNamesHttpPostIn">
<wsdl:part name="fullyQualifiedNames" type="s2:StringArray" />
</wsdl:message>
<wsdl:message name="GetItemsFromNamesHttpPostOut">
<wsdl:part name="Body" element="tns:ArrayOfItemData" />
</wsdl:message>
<wsdl:message name="GetItemFromIdHttpPostIn">
<wsdl:part name="uniqueId" type="s:string" />
</wsdl:message>
<wsdl:message name="GetItemFromIdHttpPostOut">
<wsdl:part name="Body" element="tns:ItemData" />
</wsdl:message>
<wsdl:message name="GetItemsFromIdsHttpPostIn">
<wsdl:part name="uniqueIds" type="s2:StringArray" />
</wsdl:message>
<wsdl:message name="GetItemsFromIdsHttpPostOut">
<wsdl:part name="Body" element="tns:ArrayOfItemData" />
</wsdl:message>
<wsdl:message name="GetItemNamesFromIdsHttpPostIn">
<wsdl:part name="uniqueIds" type="s2:StringArray" />
</wsdl:message>
<wsdl:message name="GetItemNamesFromIdsHttpPostOut">
<wsdl:part name="Body" element="tns:ArrayOfString" />
</wsdl:message>
<wsdl:message name="GetUpdateHttpPostIn">
<wsdl:part name="itemId" type="s:string" />
<wsdl:part name="utcModifiedOnTicks" type="s:string" />
</wsdl:message>
<wsdl:message name="GetUpdateHttpPostOut">
<wsdl:part name="Body" element="tns:ItemUpdate" />
</wsdl:message>
<wsdl:message name="GetMimeValueHttpPostIn">
<wsdl:part name="documentId" type="s:string" />
</wsdl:message>
<wsdl:message name="GetMimeValueHttpPostOut">
<wsdl:part name="Body" element="tns:MimeValue" />
</wsdl:message>
<wsdl:portType name="InstanceServiceSoap">
<wsdl:operation name="GetItemFromName">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the item with the specified name (if it exists; otherwise returns null).</wsdl:documentation>
<wsdl:input message="tns:GetItemFromNameSoapIn" />
<wsdl:output message="tns:GetItemFromNameSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetItemsFromNames">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the items with the specified names (if no item exists for a given name then a null value is returned in the corresponding slot of the result array).</wsdl:documentation>
<wsdl:input message="tns:GetItemsFromNamesSoapIn" />
<wsdl:output message="tns:GetItemsFromNamesSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetItemFromId">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the item with the specified unique id (if it exists; otherwise returns null).</wsdl:documentation>
<wsdl:input message="tns:GetItemFromIdSoapIn" />
<wsdl:output message="tns:GetItemFromIdSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetItemsFromIds">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the items with the specified unique ids (if no item exists for a given unique id then a null value is returned in the corresponding slot of the result array).</wsdl:documentation>
<wsdl:input message="tns:GetItemsFromIdsSoapIn" />
<wsdl:output message="tns:GetItemsFromIdsSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetItemNamesFromIds">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Retrieves the names of the items with the specified unique ids.</wsdl:documentation>
<wsdl:input message="tns:GetItemNamesFromIdsSoapIn" />
<wsdl:output message="tns:GetItemNamesFromIdsSoapOut" />
</wsdl:operation>
<wsdl:operation name="PersistChanges">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Persists the specified set of changes.</wsdl:documentation>
<wsdl:input message="tns:PersistChangesSoapIn" />
<wsdl:output message="tns:PersistChangesSoapOut" />
</wsdl:operation>
<wsdl:operation name="SetPropertyById">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Writes a property value.</wsdl:documentation>
<wsdl:input message="tns:SetPropertyByIdSoapIn" />
<wsdl:output message="tns:SetPropertyByIdSoapOut" />
</wsdl:operation>
<wsdl:operation name="SetPropertyByName">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Writes a property value.</wsdl:documentation>
<wsdl:input message="tns:SetPropertyByNameSoapIn" />
<wsdl:output message="tns:SetPropertyByNameSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetUpdate">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Allows the client to get the update for a given item based on the modified-on timestamp of the client-side cached version.</wsdl:documentation>
<wsdl:input message="tns:GetUpdateSoapIn" />
<wsdl:output message="tns:GetUpdateSoapOut" />
</wsdl:operation>
<wsdl:operation name="InvokeOperation">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Invokes an operation of a given item and returns the (optional) return value and the values of all out parameters.</wsdl:documentation>
<wsdl:input message="tns:InvokeOperationSoapIn" />
<wsdl:output message="tns:InvokeOperationSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetMimeValue">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the MIME value that is associated with the specified document id.</wsdl:documentation>
<wsdl:input message="tns:GetMimeValueSoapIn" />
<wsdl:output message="tns:GetMimeValueSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:portType name="InstanceServiceHttpGet">
<wsdl:operation name="GetItemFromName">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the item with the specified name (if it exists; otherwise returns null).</wsdl:documentation>
<wsdl:input message="tns:GetItemFromNameHttpGetIn" />
<wsdl:output message="tns:GetItemFromNameHttpGetOut" />
</wsdl:operation>
<wsdl:operation name="GetItemsFromNames">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the items with the specified names (if no item exists for a given name then a null value is returned in the corresponding slot of the result array).</wsdl:documentation>
<wsdl:input message="tns:GetItemsFromNamesHttpGetIn" />
<wsdl:output message="tns:GetItemsFromNamesHttpGetOut" />
</wsdl:operation>
<wsdl:operation name="GetItemFromId">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the item with the specified unique id (if it exists; otherwise returns null).</wsdl:documentation>
<wsdl:input message="tns:GetItemFromIdHttpGetIn" />
<wsdl:output message="tns:GetItemFromIdHttpGetOut" />
</wsdl:operation>
<wsdl:operation name="GetItemsFromIds">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the items with the specified unique ids (if no item exists for a given unique id then a null value is returned in the corresponding slot of the result array).</wsdl:documentation>
<wsdl:input message="tns:GetItemsFromIdsHttpGetIn" />
<wsdl:output message="tns:GetItemsFromIdsHttpGetOut" />
</wsdl:operation>
<wsdl:operation name="GetItemNamesFromIds">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Retrieves the names of the items with the specified unique ids.</wsdl:documentation>
<wsdl:input message="tns:GetItemNamesFromIdsHttpGetIn" />
<wsdl:output message="tns:GetItemNamesFromIdsHttpGetOut" />
</wsdl:operation>
<wsdl:operation name="GetUpdate">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Allows the client to get the update for a given item based on the modified-on timestamp of the client-side cached version.</wsdl:documentation>
<wsdl:input message="tns:GetUpdateHttpGetIn" />
<wsdl:output message="tns:GetUpdateHttpGetOut" />
</wsdl:operation>
<wsdl:operation name="GetMimeValue">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the MIME value that is associated with the specified document id.</wsdl:documentation>
<wsdl:input message="tns:GetMimeValueHttpGetIn" />
<wsdl:output message="tns:GetMimeValueHttpGetOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:portType name="InstanceServiceHttpPost">
<wsdl:operation name="GetItemFromName">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the item with the specified name (if it exists; otherwise returns null).</wsdl:documentation>
<wsdl:input message="tns:GetItemFromNameHttpPostIn" />
<wsdl:output message="tns:GetItemFromNameHttpPostOut" />
</wsdl:operation>
<wsdl:operation name="GetItemsFromNames">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the items with the specified names (if no item exists for a given name then a null value is returned in the corresponding slot of the result array).</wsdl:documentation>
<wsdl:input message="tns:GetItemsFromNamesHttpPostIn" />
<wsdl:output message="tns:GetItemsFromNamesHttpPostOut" />
</wsdl:operation>
<wsdl:operation name="GetItemFromId">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the item with the specified unique id (if it exists; otherwise returns null).</wsdl:documentation>
<wsdl:input message="tns:GetItemFromIdHttpPostIn" />
<wsdl:output message="tns:GetItemFromIdHttpPostOut" />
</wsdl:operation>
<wsdl:operation name="GetItemsFromIds">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the items with the specified unique ids (if no item exists for a given unique id then a null value is returned in the corresponding slot of the result array).</wsdl:documentation>
<wsdl:input message="tns:GetItemsFromIdsHttpPostIn" />
<wsdl:output message="tns:GetItemsFromIdsHttpPostOut" />
</wsdl:operation>
<wsdl:operation name="GetItemNamesFromIds">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Retrieves the names of the items with the specified unique ids.</wsdl:documentation>
<wsdl:input message="tns:GetItemNamesFromIdsHttpPostIn" />
<wsdl:output message="tns:GetItemNamesFromIdsHttpPostOut" />
</wsdl:operation>
<wsdl:operation name="GetUpdate">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Allows the client to get the update for a given item based on the modified-on timestamp of the client-side cached version.</wsdl:documentation>
<wsdl:input message="tns:GetUpdateHttpPostIn" />
<wsdl:output message="tns:GetUpdateHttpPostOut" />
</wsdl:operation>
<wsdl:operation name="GetMimeValue">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the MIME value that is associated with the specified document id.</wsdl:documentation>
<wsdl:input message="tns:GetMimeValueHttpPostIn" />
<wsdl:output message="tns:GetMimeValueHttpPostOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="InstanceServiceSoap" type="tns:InstanceServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="GetItemFromName">
<soap:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/GetItemFromName" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetItemsFromNames">
<soap:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/GetItemsFromNames" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetItemFromId">
<soap:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/GetItemFromId" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetItemsFromIds">
<soap:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/GetItemsFromIds" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetItemNamesFromIds">
<soap:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/GetItemNamesFromIds" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="PersistChanges">
<soap:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/PersistChanges" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="SetPropertyById">
<soap:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/SetPropertyById" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="SetPropertyByName">
<soap:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/SetPropertyByName" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetUpdate">
<soap:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/GetUpdate" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="InvokeOperation">
<soap:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/InvokeOperation" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetMimeValue">
<soap:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/GetMimeValue" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="InstanceServiceSoap12" type="tns:InstanceServiceSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="GetItemFromName">
<soap12:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/GetItemFromName" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetItemsFromNames">
<soap12:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/GetItemsFromNames" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetItemFromId">
<soap12:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/GetItemFromId" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetItemsFromIds">
<soap12:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/GetItemsFromIds" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetItemNamesFromIds">
<soap12:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/GetItemNamesFromIds" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="PersistChanges">
<soap12:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/PersistChanges" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="SetPropertyById">
<soap12:operation soapAction="http://www.incuity.com/schema/2005/11/incuity/SetPropertyById" style="document" />
<wsdl:input>Do u have any condition for getting MAX and MIN.If you remove that condition,u will be able to get max as well as min.
Thanks
prabhakar -
ArrayTypes with complexType members
I am basically pleased with WL7's initial support of web services. I have followed
the complexType examples provided and succesfully built the TraderService. I can
likewise build web services for my company that return single result complex types.
However, when I attempt to use Java arrays of complex types or java.util.ArrayList
to return multiple result complex content / complex types, I receive the attached
error. What am I doing incorrectly?
[array_invoke_error.txt]Hi Aaron,
Thanks for your comments.
From the stack trace you posted, it seems you are using an older version
of WLS (I think WLS 7.0 GA). The latest version is WLS 7.0.0.1 and
it supports JAX-RPC 1.0.
WLS do support ArrayList, but if possible it is better to use array. If you
use ArrayList, the schema inside the generated WSDL will use anyType.
So by looking at the WSDL alone, client will not know what data type
the web service accept. Instead, if you use arrays, the WSDL will
contain the definition for your data type.
An array example that works with 7.0.0.1 is attached.
regards,
-manoj
"Aaron Rhoden" <[email protected]> wrote in message
news:[email protected]..
>
I am basically pleased with WL7's initial support of web services. I havefollowed
the complexType examples provided and succesfully built the TraderService.I can
likewise build web services for my company that return single resultcomplex types.
However, when I attempt to use Java arrays of complex types orjava.util.ArrayList
to return multiple result complex content / complex types, I receive theattached
error. What am I doing incorrectly?[large.jar] -
Webservices with j2me base64Binary problem
Hi,
Iam new to webservices concepts, now iam trying to implement jsr172 with my project.
In that WSDL have the type "type="s:base64Binary" for image byte array.
While creating stubs the xxxx_stub file contains line :
"_type_image = new Element(_qname_CapturedImage, UNKNOWN, 0, 1, false);"
the error was canot resolve symbol "variable UNKNOWN"
Why the base64Binary type is not supported.
Please give me a hand.Hi,
I got through some documents "JAX-RPC for Java ME doesn't support soapenc:Array or wsdl:arrayType "
for that what will be the alternate. -
How do I get ColdFusion to put information in the WSDL to show it returns an array of strings?
How do I specify that the return value of my web service is an array of strings?
Saying
<cffunction name="getInfoSources" access="remote" returntype="string[]">
produces the error:
coldfusion.xml.rpc.CFCInvocationException: [coldfusion.xml.rpc.SkeletonClassLoader$UnresolvedCFCDataTypeException : Cannot resolve CFC datatype: string.]
when I try to create the WSDL
I know that I can specify "array", which puts into the WSDL:
<wsdl:part name="getInfoSourcesReturn" type="impl:ArrayOf_xsd_anyType"/>
I want users of the service to know that the array is specifically made up of _strings_.
Thanks!
-- Mabel :-)
[email protected]What if you click Never remember for this site and later change your mind? There should be a way to remember the username and password later if you'd like. I installed the Saved Password Editor 2.6.3 extension and added in the information manually i.e. by choosing New and it still isn't making a difference. What happened to the live chat support Firefox used to have?
-
Document-Literal and Arrays - WSDL seems incorrect ??
I have create a simple "document-literal" webservice that returns an object containing some simple fields and an array of another object.
Task.cfc
===============================
<cfcomponent>
<cfproperty name="Id" type="string">
<cfproperty name="Priority" type="numeric">
<cfproperty name="StartTime" type="date">
<cfproperty name="StopTime" type="date">
<cfproperty name="AOI" type="VertexPoint[]">
</cfcomponent>
VertexPoint.cfc
============================
<cfcomponent>
<cfproperty name="Latitude" type="numeric">
<cfproperty name="Longitude" type="numeric">
<cfproperty name="Altitude" type="numeric">
</cfcomponent>
My webservice returns a Task object
<cfcomponent style="document">
<cffunction name="getTask" returnType="Task" access="remote" output="false">
</cffunction>
</cfcomponent>
When I look at the generated WSDL is see the following complexTypes:
NOTICE THE name="item" IN THE COMPLEXTYPE ArrayOf_xsd_anyType.
<complexType name="VertexPoint">
<sequence>
<element name="Altitude" nillable="true" type="xsd:double"/>
<element name="Latitude" nillable="true" type="xsd:double"/>
<element name="Longitude" nillable="true" type="xsd:double"/>
</sequence>
</complexType>
<complexType name="Task">
<sequence>
<element name="AOI" nillable="true" type="tns1:ArrayOf_xsd_anyType"/>
<element name="Id" nillable="true" type="xsd:string"/>
<element name="Priority" nillable="true" type="xsd:double"/>
<element name="StartTime" nillable="true" type="xsd:dateTime"/>
<element name="StopTime" nillable="true" type="xsd:dateTime"/>
</sequence>
</complexType>
<complexType name="ArrayOf_xsd_anyType">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="item" type="impl:VertexPoint"/>
</sequence>
</complexType>
When I look at the XML/data returned when I call the webservice it is:
<getTaskResponse xmlns="http://users">
<getTaskReturn>
<AOI>
<AOI xsi:type="ns1:VertexPoint" xmlns:ns1="http://users">
<Altitude>1.0</Altitude>
<Latitude>1.0</Latitude>
<Longitude>1.0</Longitude>
</AOI>
<AOI xsi:type="ns2:VertexPoint" xmlns:ns2="http://users">
<Altitude>2.0</Altitude>
<Latitude>2.0</Latitude>
<Longitude>2.0</Longitude>
</AOI>
</AOI>
<Id>1</Id>
<Priority>99.0</Priority>
<StartTime>2009-10-15T06:00:00.000Z</StartTime>
<StopTime>2009-10-17T05:59:59.000Z</StopTime>
</getTaskReturn>
</getTaskResponse>
Shouldn't the tags be
<AOI>
<item>
</item>
<item>
</item>
<AOI>
I am trying to access this WS from a java client and the AOI is always null
Any help would be greatly appreciated. (BTW - If I use "rpc" WS everything work fine)repost.....
-
Hi all,
i have an webservice that i need to use as a reciever that has a WSDL containing soap arrays instead of repeating groups.
<xsd:complexType name="workOrderArray">
<xsd:complexContent>
<xsd:restriction base="soapenc:Array">
<xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="tns:workOrder[]" />
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
i understand that PI is not supporting this but maybe somebody has found a work around ? At the moment i 'm creating an XSD from the WSDL and then i will import the xml schema and i will see if that works.
any other suggestions ?<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://example/"
xmlns:types="http://example/encodedTypes"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<xsl:template match="/">
<env:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://example/" xmlns:types="http://example/encodedTypes" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</env:Body>
</env:Envelope>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/tns:workOrderMsg/tns:workOrderArray">
<workOrderArray soapenc:id="id1" soapenc:itemType="types:WorkOrder">
<xsl:attribute name="soapenc:arraySize">
<xsl:value-of select="count(./tns:workOrder)"/>
</xsl:attribute>
<xsl:for-each select="./tns:workOrder">
<Item>
<xsl:attribute name="soapenc:id">
<xsl:value-of select="concat('id', position())"/>
</xsl:attribute>
<order_id xsi:type="xsd:string"><xsl:value-of select="tns:order_id"/></order_id>
<description xsi:type="xsd:string"><xsl:value-of select="tns:description"/></description>
</Item>
</xsl:for-each>
</workOrderArray>
</xsl:template>
</xsl:stylesheet> -
Invoking WSDL with SOAP-Encoded Arrays get Errors
Hi,
i am invoking a web service through a partner link. This WSDL hava a SOAP-Encoded Arrays.
<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
name="IApWebServicesservice" targetNamespace="http://tempuri.org/"
xmlns:tns="http://tempuri.org/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:ns1="urn:unApTypes" xmlns:ns2="urn:unApWebServicesInterface"
xmlns:ns3="http://www.borland.com/namespaces/Types">
<types>
<xs:schema targetNamespace="urn:unApTypes" xmlns="urn:unApTypes">
<xs:simpleType name="TApLanguages">
<xs:restriction base="xs:string">
<xs:enumeration value="alPortuguese"/>
<xs:enumeration value="alEnglish"/>
<xs:enumeration value="alSpanish"/>
<xs:enumeration value="alPortuguesePT"/>
<xs:enumeration value="alDeutsch"/>
<xs:enumeration value="alItalian"/>
<xs:enumeration value="alFrench"/>
<xs:enumeration value="alRussian"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TApFieldType">
<xs:restriction base="xs:string">
<xs:enumeration value="aftNotDefined"/>
<xs:enumeration value="aftIntAutoInc"/>
<xs:enumeration value="aftIntAuto"/>
<xs:enumeration value="aftInteger"/>
<xs:enumeration value="aftByteAuto"/>
<xs:enumeration value="aftByte"/>
<xs:enumeration value="aftWordAuto"/>
<xs:enumeration value="aftWord"/>
<xs:enumeration value="aftFloat"/>
<xs:enumeration value="aftString"/>
<xs:enumeration value="aftDate"/>
<xs:enumeration value="aftTime"/>
<xs:enumeration value="aftBoolean"/>
<xs:enumeration value="aftBlob"/>
<xs:enumeration value="aftImage"/>
<xs:enumeration value="aftRichText"/>
<xs:enumeration value="aftDateTime"/>
<xs:enumeration value="aftMemo"/>
<xs:enumeration value="aftFile"/>
<xs:enumeration value="aftCurrency"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
<xs:schema targetNamespace="urn:unApWebServicesInterface"
xmlns="urn:unApWebServicesInterface">
<xs:import namespace="http://www.borland.com/namespaces/Types"/>
<xs:complexType name="TWSTransactionParams">
<xs:sequence>
<xs:element name="Fields" type="ns2:TWSTransactionHeaderFieldsArray"/>
<xs:element name="Reserved" type="ns2:TWSTransactionParams"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSTransactionHeaderFieldsArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType"
n1:arrayType="ns2:TWSTransactionHeaderFields[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TWSTransactionHeaderFields">
<xs:sequence>
<xs:element name="Reserved" type="ns2:TWSTransactionHeaderFields"/>
<xs:element name="FieldCaption" type="xs:string"/>
<xs:element name="FieldId" type="xs:int"/>
<xs:element name="GroupId" type="xs:int"/>
<xs:element name="GroupCaption" type="xs:string"/>
<xs:element name="Required" type="xs:boolean"/>
<xs:element name="DataType" type="xs:int"/>
<xs:element name="Mask" type="xs:string"/>
<xs:element name="FieldLength" type="xs:int"/>
<xs:element name="LookupName" type="xs:string"/>
<xs:element name="PrimaryKey" type="xs:int"/>
<xs:element name="Language" type="xs:string"/>
<xs:element name="ReadOnly" type="xs:boolean"/>
<xs:element name="LiteralMicroHelp" type="xs:string"/>
<xs:element name="ExceptReadOnlyTransactions" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSTransactionExecuteParamArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType"
n1:arrayType="ns2:TWSTransactionExecuteParam[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TWSTransactionExecuteParam">
<xs:sequence>
<xs:element name="Id" type="xs:int"/>
<xs:element name="Value" type="xs:anyType"/>
<xs:element name="Reserved" type="ns1:TApFieldType"/>
<xs:element name="FieldName" type="xs:string"/>
<xs:element name="ClientFieldName" type="xs:string"/>
<xs:element name="FieldSize" type="xs:int"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSTransactionToExecuteArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType"
n1:arrayType="ns2:TWSTransactionToExecute[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TWSTransactionToExecute">
<xs:sequence>
<xs:element name="TransactionId" type="xs:int"/>
<xs:element name="Params" type="ns2:TWSTransactionExecuteParamArray"/>
<xs:element name="LanguageId" type="ns1:TApLanguages"/>
<xs:element name="EditionType" type="xs:int"/>
<xs:element name="IntegrationMode" type="xs:int"/>
<xs:element name="Scope" type="ns3:TIntegerDynArray"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSQueryParams">
<xs:sequence>
<xs:element name="Reserved" type="ns2:TWSQueryParams"/>
<xs:element name="Fields" type="ns2:TWSQueryHeaderFieldsArray"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSQueryHeaderFieldsArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType"
n1:arrayType="ns2:TWSQueryHeaderFields[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TWSQueryHeaderFields">
<xs:sequence>
<xs:element name="Reserved" type="ns2:TWSQueryHeaderFields"/>
<xs:element name="FieldCaption" type="xs:string"/>
<xs:element name="ParamType" type="xs:int"/>
<xs:element name="ParamName" type="xs:string"/>
<xs:element name="Mask" type="xs:string"/>
<xs:element name="DefaultValue" type="xs:anyType"/>
<xs:element name="Required" type="xs:boolean"/>
<xs:element name="GroupId" type="xs:int"/>
<xs:element name="GroupCaption" type="xs:string"/>
<xs:element name="Hint" type="xs:string"/>
<xs:element name="FindInList" type="xs:boolean"/>
<xs:element name="UseValueList" type="xs:boolean"/>
<xs:element name="ValueList" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteParamArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType"
n1:arrayType="ns2:TWSQueryExecuteParam[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteParam">
<xs:sequence>
<xs:element name="Value" type="xs:string"/>
<xs:element name="Reserved" type="ns1:TApFieldType"/>
<xs:element name="ParamName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteResults">
<xs:sequence>
<xs:element name="Fields" type="ns2:TWSQueryExecuteFieldsArray"/>
<xs:element name="Records" type="ns2:TWSQueryExecuteRecordsArray"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteFieldsArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType"
n1:arrayType="ns2:TWSQueryExecuteField[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteRecordsArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType"
n1:arrayType="ns2:TWSQueryExecuteRecord[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteField">
<xs:sequence>
<xs:element name="FieldName" type="xs:string"/>
<xs:element name="Reserved" type="ns1:TApFieldType"/>
<xs:element name="FieldType" type="xs:int"/>
<xs:element name="Mask" type="xs:string"/>
<xs:element name="Length" type="xs:int"/>
<xs:element name="Decimals" type="xs:int"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteRecord">
<xs:sequence>
<xs:element name="Values" type="ns2:TWSQueryExecuteValuesArray"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteValuesArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType"
n1:arrayType="ns2:TWSQueryExecuteValue[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteValue">
<xs:sequence>
<xs:element name="Value" type="xs:string"/>
<xs:element name="Reserved" type="ns1:TApFieldType"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema targetNamespace="http://www.borland.com/namespaces/Types"
xmlns="http://www.borland.com/namespaces/Types">
<xs:import namespace="urn:unApTypes"/>
<xs:complexType name="TIntegerDynArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType" n1:arrayType="xs:int[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:schema>
</types>
<message name="GetTransactions0Request">
<part name="UserName" type="xs:string"/>
<part name="Pass" type="xs:string"/>
<part name="Transactions" type="xs:string"/>
<part name="Error" type="xs:string"/>
<part name="LanguageId" type="ns1:TApLanguages"/>
</message>
<message name="GetTransactions0Response">
<part name="Transactions" type="xs:string"/>
<part name="Error" type="xs:string"/>
<part name="return" type="xs:boolean"/>
</message>
<message name="GetParameters1Request">
<part name="UserName" type="xs:string"/>
<part name="Pass" type="xs:string"/>
<part name="TransactionId" type="xs:int"/>
<part name="Params" type="ns2:TWSTransactionParams"/>
<part name="Error" type="xs:string"/>
<part name="LanguageId" type="ns1:TApLanguages"/>
<part name="EditionType" type="xs:int"/>
</message>
<message name="GetParameters1Response">
<part name="Params" type="ns2:TWSTransactionParams"/>
<part name="Error" type="xs:string"/>
<part name="return" type="xs:boolean"/>
</message>
<message name="ExecuteTransaction2Request">
<part name="UserName" type="xs:string"/>
<part name="Pass" type="xs:string"/>
<part name="TransactionId" type="xs:int"/>
<part name="Params" type="ns2:TWSTransactionExecuteParamArray"/>
<part name="Error" type="xs:string"/>
<part name="LanguageId" type="ns1:TApLanguages"/>
<part name="EditionType" type="xs:int"/>
<part name="IntegrationMode" type="xs:int"/>
<part name="Scope" type="ns3:TIntegerDynArray"/>
<part name="KeyId" type="xs:int"/>
</message>
<message name="ExecuteTransaction2Response">
<part name="Error" type="xs:string"/>
<part name="KeyId" type="xs:int"/>
<part name="return" type="xs:boolean"/>
</message>
<message name="ExecuteTransactions3Request">
<part name="UserName" type="xs:string"/>
<part name="Pass" type="xs:string"/>
<part name="Lote" type="xs:int"/>
<part name="Error" type="xs:string"/>
<part name="Transactions" type="ns2:TWSTransactionToExecuteArray"/>
</message>
<message name="ExecuteTransactions3Response">
<part name="Error" type="xs:string"/>
<part name="return" type="xs:boolean"/>
</message>
<message name="GetQueryParameters4Request">
<part name="UserName" type="xs:string"/>
<part name="Pass" type="xs:string"/>
<part name="QueryId" type="xs:int"/>
<part name="Params" type="ns2:TWSQueryParams"/>
<part name="Error" type="xs:string"/>
<part name="LanguageId" type="ns1:TApLanguages"/>
</message>
<message name="GetQueryParameters4Response">
<part name="Params" type="ns2:TWSQueryParams"/>
<part name="Error" type="xs:string"/>
<part name="return" type="xs:boolean"/>
</message>
<message name="QueryExecute5Request">
<part name="UserName" type="xs:string"/>
<part name="Pass" type="xs:string"/>
<part name="QueryId" type="xs:int"/>
<part name="Params" type="ns2:TWSQueryExecuteParamArray"/>
<part name="Error" type="xs:string"/>
<part name="Results" type="ns2:TWSQueryExecuteResults"/>
<part name="LanguageId" type="ns1:TApLanguages"/>
</message>
<message name="QueryExecute5Response">
<part name="Error" type="xs:string"/>
<part name="Results" type="ns2:TWSQueryExecuteResults"/>
<part name="return" type="xs:boolean"/>
</message>
<portType name="IApWebServices">
<operation name="GetTransactions">
<input message="tns:GetTransactions0Request"/>
<output message="tns:GetTransactions0Response"/>
</operation>
<operation name="GetParameters">
<input message="tns:GetParameters1Request"/>
<output message="tns:GetParameters1Response"/>
</operation>
<operation name="ExecuteTransaction">
<input message="tns:ExecuteTransaction2Request"/>
<output message="tns:ExecuteTransaction2Response"/>
</operation>
<operation name="ExecuteTransactions">
<input message="tns:ExecuteTransactions3Request"/>
<output message="tns:ExecuteTransactions3Response"/>
</operation>
<operation name="GetQueryParameters">
<input message="tns:GetQueryParameters4Request"/>
<output message="tns:GetQueryParameters4Response"/>
</operation>
<operation name="QueryExecute">
<input message="tns:QueryExecute5Request"/>
<output message="tns:QueryExecute5Response"/>
</operation>
</portType>
<binding name="IApWebServicesbinding" type="tns:IApWebServices">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetTransactions">
<soap:operation soapAction="urn:unApWebServicesInterface-IApWebServices#GetTransactions"
style="rpc"/>
<input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</input>
<output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</output>
</operation>
<operation name="GetParameters">
<soap:operation soapAction="urn:unApWebServicesInterface-IApWebServices#GetParameters"
style="rpc"/>
<input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</input>
<output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</output>
</operation>
<operation name="ExecuteTransaction">
<soap:operation soapAction="urn:unApWebServicesInterface-IApWebServices#ExecuteTransaction"
style="rpc"/>
<input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</input>
<output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</output>
</operation>
<operation name="ExecuteTransactions">
<soap:operation soapAction="urn:unApWebServicesInterface-IApWebServices#ExecuteTransactions"
style="rpc"/>
<input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</input>
<output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</output>
</operation>
<operation name="GetQueryParameters">
<soap:operation soapAction="urn:unApWebServicesInterface-IApWebServices#GetQueryParameters"
style="rpc"/>
<input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</input>
<output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</output>
</operation>
<operation name="QueryExecute">
<soap:operation soapAction="urn:unApWebServicesInterface-IApWebServices#QueryExecute"
style="rpc"/>
<input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</input>
<output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</output>
</operation>
</binding>
<service name="IApWebServicesservice">
<port name="IApWebServicesPort" binding="tns:IApWebServicesbinding">
<soap:address location="http://200.189.164.78:7002/soap/IApWebServices"/>
</port>
</service>
</definitions>
When I try to send a message to this WebService I can´t sending type TWSTransactionParams.
Here is my code:
<assign name="TEST">
<bpelx:append>
<bpelx:from expression="'******'"/>
<bpelx:to variable="EnviarWebserviceApData_InputVariable"
part="UserName"/>
</bpelx:append>
<bpelx:append>
<bpelx:from expression="'*****'"/>
<bpelx:to variable="EnviarWebserviceApData_InputVariable"
part="Pass"/>
</bpelx:append>
<bpelx:append>
<bpelx:from expression="'29902'"/>
<bpelx:to variable="EnviarWebserviceApData_InputVariable"
part="TransactionId"/>
</bpelx:append>
<bpelx:append>
<bpelx:from expression="'alPortuguese'"/>
<bpelx:to variable="EnviarWebserviceApData_InputVariable"
part="LanguageId"/>
</bpelx:append>
<bpelx:append>
<bpelx:from expression="0"/>
<bpelx:to variable="EnviarWebserviceApData_InputVariable"
part="EditionType"/>
</bpelx:append>
<bpelx:append>
<bpelx:from expression="0"/>
<bpelx:to variable="EnviarWebserviceApData_InputVariable"
part="IntegrationMode"/>
</bpelx:append>
<bpelx:append>
<bpelx:from expression="0"/>
<bpelx:to variable="EnviarWebserviceApData_InputVariable"
part="KeyId"/>
</bpelx:append>
</assign>
But, I don´t know how I have to pass the Array. I found this documetation on oracle website
\http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10224/bp_manipdoc.htm#sthref550
But i can´t construct the XML message more manually.
Any help in this regard is highly appreciated.Yes, you are rigth. I read this documentation to.
I can do a workaroud and the process BPEL can understand. I will place my WSDL below and what i changed:
WSDL:
<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
name="IApWebServicesservice" targetNamespace="http://tempuri.org/"
xmlns:tns="http://tempuri.org/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:ns1="urn:unApTypes" xmlns:ns2="urn:unApWebServicesInterface"
xmlns:ns3="http://www.borland.com/namespaces/Types">
<types>
<xs:schema targetNamespace="urn:unApTypes" xmlns="urn:unApTypes">
<xs:simpleType name="TApLanguages">
<xs:restriction base="xs:string">
<xs:enumeration value="alPortuguese"/>
<xs:enumeration value="alEnglish"/>
<xs:enumeration value="alSpanish"/>
<xs:enumeration value="alPortuguesePT"/>
<xs:enumeration value="alDeutsch"/>
<xs:enumeration value="alItalian"/>
<xs:enumeration value="alFrench"/>
<xs:enumeration value="alRussian"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TApFieldType">
<xs:restriction base="xs:string">
<xs:enumeration value="aftNotDefined"/>
<xs:enumeration value="aftIntAutoInc"/>
<xs:enumeration value="aftIntAuto"/>
<xs:enumeration value="aftInteger"/>
<xs:enumeration value="aftByteAuto"/>
<xs:enumeration value="aftByte"/>
<xs:enumeration value="aftWordAuto"/>
<xs:enumeration value="aftWord"/>
<xs:enumeration value="aftFloat"/>
<xs:enumeration value="aftString"/>
<xs:enumeration value="aftDate"/>
<xs:enumeration value="aftTime"/>
<xs:enumeration value="aftBoolean"/>
<xs:enumeration value="aftBlob"/>
<xs:enumeration value="aftImage"/>
<xs:enumeration value="aftRichText"/>
<xs:enumeration value="aftDateTime"/>
<xs:enumeration value="aftMemo"/>
<xs:enumeration value="aftFile"/>
<xs:enumeration value="aftCurrency"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
<xs:schema targetNamespace="urn:unApWebServicesInterface"
xmlns="urn:unApWebServicesInterface">
<xs:import namespace="http://www.borland.com/namespaces/Types"/>
<xs:complexType name="TWSTransactionParams">
<xs:sequence>
<xs:element name="Fields" type="ns2:TWSTransactionHeaderFieldsArray"/>
<xs:element name="Reserved" type="ns2:TWSTransactionParams"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSTransactionHeaderFieldsArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType"
n1:arrayType="ns2:TWSTransactionHeaderFields[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TWSTransactionHeaderFields">
<xs:sequence>
<xs:element name="Reserved" type="ns2:TWSTransactionHeaderFields"/>
<xs:element name="FieldCaption" type="xs:string"/>
<xs:element name="FieldId" type="xs:int"/>
<xs:element name="GroupId" type="xs:int"/>
<xs:element name="GroupCaption" type="xs:string"/>
<xs:element name="Required" type="xs:boolean"/>
<xs:element name="DataType" type="xs:int"/>
<xs:element name="Mask" type="xs:string"/>
<xs:element name="FieldLength" type="xs:int"/>
<xs:element name="LookupName" type="xs:string"/>
<xs:element name="PrimaryKey" type="xs:int"/>
<xs:element name="Language" type="xs:string"/>
<xs:element name="ReadOnly" type="xs:boolean"/>
<xs:element name="LiteralMicroHelp" type="xs:string"/>
<xs:element name="ExceptReadOnlyTransactions" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSTransactionExecuteParamArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType"
n1:arrayType="ns2:TWSTransactionExecuteParam[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TWSTransactionExecuteParam">
<xs:sequence>
<xs:element name="Id" type="xs:int"/>
<xs:element name="Value" type="xs:anyType"/>
<xs:element name="Reserved" type="ns1:TApFieldType"/>
<xs:element name="FieldName" type="xs:string"/>
<xs:element name="ClientFieldName" type="xs:string"/>
<xs:element name="FieldSize" type="xs:int"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSTransactionToExecuteArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType"
n1:arrayType="ns2:TWSTransactionToExecute[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TWSTransactionToExecute">
<xs:sequence>
<xs:element name="TransactionId" type="xs:int"/>
<xs:element name="Params" type="ns2:TWSTransactionExecuteParamArray"/>
<xs:element name="LanguageId" type="ns1:TApLanguages"/>
<xs:element name="EditionType" type="xs:int"/>
<xs:element name="IntegrationMode" type="xs:int"/>
<xs:element name="Scope" type="ns3:TIntegerDynArray"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSQueryParams">
<xs:sequence>
<xs:element name="Reserved" type="ns2:TWSQueryParams"/>
<xs:element name="Fields" type="ns2:TWSQueryHeaderFieldsArray"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSQueryHeaderFieldsArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType"
n1:arrayType="ns2:TWSQueryHeaderFields[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TWSQueryHeaderFields">
<xs:sequence>
<xs:element name="Reserved" type="ns2:TWSQueryHeaderFields"/>
<xs:element name="FieldCaption" type="xs:string"/>
<xs:element name="ParamType" type="xs:int"/>
<xs:element name="ParamName" type="xs:string"/>
<xs:element name="Mask" type="xs:string"/>
<xs:element name="DefaultValue" type="xs:anyType"/>
<xs:element name="Required" type="xs:boolean"/>
<xs:element name="GroupId" type="xs:int"/>
<xs:element name="GroupCaption" type="xs:string"/>
<xs:element name="Hint" type="xs:string"/>
<xs:element name="FindInList" type="xs:boolean"/>
<xs:element name="UseValueList" type="xs:boolean"/>
<xs:element name="ValueList" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteParamArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType"
n1:arrayType="ns2:TWSQueryExecuteParam[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteParam">
<xs:sequence>
<xs:element name="Value" type="xs:string"/>
<xs:element name="Reserved" type="ns1:TApFieldType"/>
<xs:element name="ParamName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteResults">
<xs:sequence>
<xs:element name="Fields" type="ns2:TWSQueryExecuteFieldsArray"/>
<xs:element name="Records" type="ns2:TWSQueryExecuteRecordsArray"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteFieldsArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType"
n1:arrayType="ns2:TWSQueryExecuteField[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteRecordsArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType"
n1:arrayType="ns2:TWSQueryExecuteRecord[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteField">
<xs:sequence>
<xs:element name="FieldName" type="xs:string"/>
<xs:element name="Reserved" type="ns1:TApFieldType"/>
<xs:element name="FieldType" type="xs:int"/>
<xs:element name="Mask" type="xs:string"/>
<xs:element name="Length" type="xs:int"/>
<xs:element name="Decimals" type="xs:int"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteRecord">
<xs:sequence>
<xs:element name="Values" type="ns2:TWSQueryExecuteValuesArray"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteValuesArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType"
n1:arrayType="ns2:TWSQueryExecuteValue[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TWSQueryExecuteValue">
<xs:sequence>
<xs:element name="Value" type="xs:string"/>
<xs:element name="Reserved" type="ns1:TApFieldType"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema targetNamespace="http://www.borland.com/namespaces/Types"
xmlns="http://www.borland.com/namespaces/Types">
<xs:import namespace="urn:unApTypes"/>
<xs:complexType name="TIntegerDynArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType" n1:arrayType="xs:int[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:schema>
</types>
<message name="GetTransactions0Request">
<part name="UserName" type="xs:string"/>
<part name="Pass" type="xs:string"/>
<part name="Transactions" type="xs:string"/>
<part name="Error" type="xs:string"/>
<part name="LanguageId" type="ns1:TApLanguages"/>
</message>
<message name="GetTransactions0Response">
<part name="Transactions" type="xs:string"/>
<part name="Error" type="xs:string"/>
<part name="return" type="xs:boolean"/>
</message>
<message name="GetParameters1Request">
<part name="UserName" type="xs:string"/>
<part name="Pass" type="xs:string"/>
<part name="TransactionId" type="xs:int"/>
<part name="Params" type="ns2:TWSTransactionParams"/>
<part name="Error" type="xs:string"/>
<part name="LanguageId" type="ns1:TApLanguages"/>
<part name="EditionType" type="xs:int"/>
</message>
<message name="GetParameters1Response">
<part name="Params" type="ns2:TWSTransactionParams"/>
<part name="Error" type="xs:string"/>
<part name="return" type="xs:boolean"/>
</message>
<message name="ExecuteTransaction2Request">
<part name="UserName" type="xs:string"/>
<part name="Pass" type="xs:string"/>
<part name="TransactionId" type="xs:int"/>
<part name="Params" type="ns2:TWSTransactionExecuteParamArray"/>
<part name="Error" type="xs:string"/>
<part name="LanguageId" type="ns1:TApLanguages"/>
<part name="EditionType" type="xs:int"/>
<part name="IntegrationMode" type="xs:int"/>
<part name="Scope" type="ns3:TIntegerDynArray"/>
<part name="KeyId" type="xs:int"/>
</message>
<message name="ExecuteTransaction2Response">
<part name="Error" type="xs:string"/>
<part name="KeyId" type="xs:int"/>
<part name="return" type="xs:boolean"/>
</message>
<message name="ExecuteTransactions3Request">
<part name="UserName" type="xs:string"/>
<part name="Pass" type="xs:string"/>
<part name="Lote" type="xs:int"/>
<part name="Error" type="xs:string"/>
<part name="Transactions" type="ns2:TWSTransactionToExecuteArray"/>
</message>
<message name="ExecuteTransactions3Response">
<part name="Error" type="xs:string"/>
<part name="return" type="xs:boolean"/>
</message>
<message name="GetQueryParameters4Request">
<part name="UserName" type="xs:string"/>
<part name="Pass" type="xs:string"/>
<part name="QueryId" type="xs:int"/>
<part name="Params" type="ns2:TWSQueryParams"/>
<part name="Error" type="xs:string"/>
<part name="LanguageId" type="ns1:TApLanguages"/>
</message>
<message name="GetQueryParameters4Response">
<part name="Params" type="ns2:TWSQueryParams"/>
<part name="Error" type="xs:string"/>
<part name="return" type="xs:boolean"/>
</message>
<message name="QueryExecute5Request">
<part name="UserName" type="xs:string"/>
<part name="Pass" type="xs:string"/>
<part name="QueryId" type="xs:int"/>
<part name="Params" type="ns2:TWSQueryExecuteParamArray"/>
<part name="Error" type="xs:string"/>
<part name="Results" type="ns2:TWSQueryExecuteResults"/>
<part name="LanguageId" type="ns1:TApLanguages"/>
</message>
<message name="QueryExecute5Response">
<part name="Error" type="xs:string"/>
<part name="Results" type="ns2:TWSQueryExecuteResults"/>
<part name="return" type="xs:boolean"/>
</message>
<portType name="IApWebServices">
<operation name="GetTransactions">
<input message="tns:GetTransactions0Request"/>
<output message="tns:GetTransactions0Response"/>
</operation>
<operation name="GetParameters">
<input message="tns:GetParameters1Request"/>
<output message="tns:GetParameters1Response"/>
</operation>
<operation name="ExecuteTransaction">
<input message="tns:ExecuteTransaction2Request"/>
<output message="tns:ExecuteTransaction2Response"/>
</operation>
<operation name="ExecuteTransactions">
<input message="tns:ExecuteTransactions3Request"/>
<output message="tns:ExecuteTransactions3Response"/>
</operation>
<operation name="GetQueryParameters">
<input message="tns:GetQueryParameters4Request"/>
<output message="tns:GetQueryParameters4Response"/>
</operation>
<operation name="QueryExecute">
<input message="tns:QueryExecute5Request"/>
<output message="tns:QueryExecute5Response"/>
</operation>
</portType>
<binding name="IApWebServicesbinding" type="tns:IApWebServices">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetTransactions">
<soap:operation soapAction="urn:unApWebServicesInterface-IApWebServices#GetTransactions"
style="rpc"/>
<input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</input>
<output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</output>
</operation>
<operation name="GetParameters">
<soap:operation soapAction="urn:unApWebServicesInterface-IApWebServices#GetParameters"
style="rpc"/>
<input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</input>
<output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</output>
</operation>
<operation name="ExecuteTransaction">
<soap:operation soapAction="urn:unApWebServicesInterface-IApWebServices#ExecuteTransaction"
style="rpc"/>
<input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</input>
<output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</output>
</operation>
<operation name="ExecuteTransactions">
<soap:operation soapAction="urn:unApWebServicesInterface-IApWebServices#ExecuteTransactions"
style="rpc"/>
<input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</input>
<output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</output>
</operation>
<operation name="GetQueryParameters">
<soap:operation soapAction="urn:unApWebServicesInterface-IApWebServices#GetQueryParameters"
style="rpc"/>
<input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</input>
<output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</output>
</operation>
<operation name="QueryExecute">
<soap:operation soapAction="urn:unApWebServicesInterface-IApWebServices#QueryExecute"
style="rpc"/>
<input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</input>
<output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:unApWebServicesInterface-IApWebServices"/>
</output>
</operation>
</binding>
<service name="IApWebServicesservice">
<port name="IApWebServicesPort" binding="tns:IApWebServicesbinding">
<soap:address location="http://200.189.164.78:7002/soap/IApWebServices"/>
</port>
</service>
</definitions>
I changed this
Original:
<xs:complexType name="TWSTransactionExecuteParamArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute ref="soapenc:arrayType"
n1:arrayType="ns2:TWSTransactionExecuteParam[]"
xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
Changed:
<xs:complexType name="TWSTransactionExecuteParamArray">
<xs:sequence>
<xs:element type = "ns2:TWSTransactionExecuteParam" name = "TWSTransactionExecuteParam" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
</xs:sequence>
</xs:complexType>
In this way, I can invoking the WebServise with soapenc:arrayType.
Thaks for anwsering. -
Import for WSDL in rpc-Style Format with ComplexContent SOAP-ENC:Array
Hello, we are working on a business process that consume a web services using XI and ABAP Proxy.
We have and error type CANNOT_PRODUCE_ELEMENT, problably because the WSDL rpc-style imported on Integration Respository contents elements like this:
<complexContent>
<restriction base="SOAP-ENC:Array">
<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="ns1:mytype[]" />
</restriction>
</complexContent>
SO, anybody knows if it's possible to dessign mapping correctly with others elements like "sequence"... ?
Thanks a lot,Alex,
I would recommend to check your WSDL for any syntax errors etc in any of the external tools like XML SPY or Stylus Studio etc and then upload into XI.
---Satish -
Problem with java applet and array of arrays
hi!
i'm passing an array of arrays from java applet using
JSObject.getWindow(applet).call("jsFunction", array(array(), array()) );
in every other browser than safari 4.0.2 it's no problem to iterate over this array. in safari "array.length" is undefined. is such construction supported in safari's js engine?
Message was edited by: quaintpl
Message was edited by: quaintpl
Message was edited by: quaintpl
Message was edited by: quaintpl
Message was edited by: quaintplThanks for the answer but the problem is the type of object of method and how from pl/sql is posiblle to call.
The method waiting a ArrayofAlicIva, but if i define this object is not posible to set the object inside the array because the wsdl not have this functions.
I need to define array of objects but the object is inside is the diferent type of array.
If i Define the array of object correct to object inside, the method expect that the other array type.
Is a Deadlock ??
The solution in Java is Simple
AlicIva[] alicIva = new AlicIva[1];
alicIva[0]= new AlicIva();
alicIva[0].setId(Short.parseShort(1));
fedr[0].setIva(alicIva);
this is the method imported in java class to form
-- Method: setIva (LArrayOfAlicIva;)V
PROCEDURE setIva(
obj ORA_JAVA.JOBJECT,
a0 ORA_JAVA.JOBJECT) IS
BEGIN
args := JNI.CREATE_ARG_LIST(1);
JNI.ADD_OBJECT_ARG(args, a0, 'ArrayOfAlicIva');
JNI.CALL_VOID_METHOD(FALSE, obj, 'FECAEDetRequest', 'setIva', '(LArrayOfAlicIva;)V', args);
END; -
Problem with Java Clasess and Arrays
Hello, i have a situation when a need to call a web services.
I have 3 classes..and a need to call a method
Class1 have a method
public void setIva(ArrayOfAlicIva value)
Class ArrayOfAlicIva is
protected List<AlicIva> alicIva;
This class not have a metho to set de object
and
Class AlicIva have 1 attributes call base int and method setBase
When imported to Forms, i have the package with this clasess...
The problem is when i have to call a SetIva Method.
In pl/sql i have
Case 1
OraAlicIva := AlicIva.new(); --OK
AlicIva.setBase(OraAlicIva , 10); --OK
Class1.setIva(Object_to_Class1, OraAlicIva); --Error, is not type excpected
Case 2
OraAlicIva := ArrayOfAlicIva.new(); --OK
AlicIva.setBase(OraAlicIva , 10); --Error, setBase is not defined
Class1.setIva(Object_to_Class1, OraAlicIva); --OK
Case 3
OraAlicIva := AlicIva.new(); --OK
OraAlicIva2 :=ORA_JAVA.NEW_OBJECT_ARRAY(1,'ArrayOfAlicIva'); --OK
AlicIva.setBase(OraAlicIva , 10); --OK
ORA_JAVA.SET_OBJECT_ARRAY_ELEMENT(OraAlicIva2 , 0, OraAlicIva); --Error, ExceptionStoreArray
Class1.setIva(Object_to_Class1, OraAlicIva); --OK
The Solutions in Java is
AlicIva[] alicIva = new AlicIva[1];
alicIva[0]= new AlicIva();
alicIva[0].setId(Short.parseShort(1));
fedr[0].setIva(alicIva);}
Is posible to Resolve ??
Thanks and Sorry for my inglishThanks for the answer but the problem is the type of object of method and how from pl/sql is posiblle to call.
The method waiting a ArrayofAlicIva, but if i define this object is not posible to set the object inside the array because the wsdl not have this functions.
I need to define array of objects but the object is inside is the diferent type of array.
If i Define the array of object correct to object inside, the method expect that the other array type.
Is a Deadlock ??
The solution in Java is Simple
AlicIva[] alicIva = new AlicIva[1];
alicIva[0]= new AlicIva();
alicIva[0].setId(Short.parseShort(1));
fedr[0].setIva(alicIva);
this is the method imported in java class to form
-- Method: setIva (LArrayOfAlicIva;)V
PROCEDURE setIva(
obj ORA_JAVA.JOBJECT,
a0 ORA_JAVA.JOBJECT) IS
BEGIN
args := JNI.CREATE_ARG_LIST(1);
JNI.ADD_OBJECT_ARG(args, a0, 'ArrayOfAlicIva');
JNI.CALL_VOID_METHOD(FALSE, obj, 'FECAEDetRequest', 'setIva', '(LArrayOfAlicIva;)V', args);
END; -
Clientgen in WL 81 giving problems for stub generation from WL91 WSDL
Hi,
I am very new to this forum and new to Weblogic too.
Here is my problem. I generated a webservice from a Stateless Session bean using annotation in WebLogic 91. Used the "jwsc"/"wldeploy" to generate and deploy the webservice. Also generated the client stubs using "clientgen" in weblogic 91.
Created a small web application using a single jsp and servlet (the servlet is where i invoke the service).
Everything works fine till its weblogic 91.
Now the problem. I need to make the jsp work from Weblogic 81. So I am trying to create the client stubs from the service endpoint WSDL on WebLogic 91 by using the deployed webservice URL.
The clientgen in WL 81 is complaining that the "parameters" is already defined (Please see the error below".
I would assume that BEA would have tested this scenario as it should be a no-brainer. So why does the cleintgen in WL 81 complain. Is there any other step or way that I am missing. I have tried all sorts of things before posting to this forum (like 1. generating the stubs using WSDL2JAVA using axis -- WebLogic 81 gives a null pointer exception 2. generating the client stubs using "clientgen" in WL 91 and trying to compile using the jdk 1.4 and using in WL 81 -- complains that the couldnot find something like jax-rpc._._.ServiceImpl
Will be realy helpful if someone who had this kind of experience of someone from BEA can help me a little bit.
Thanks in advance to all for your time.
ERROR WHILE using CLIENGEN
build-client:
[clientgen] Generating client jar for http://localhost:7001/webservice/MAC/Metho
dsAccessControl?WSDL ...
[clientgen] WARNING: Map ['http://elexnet.bah.com/methods']:ArrayOfint_literal i
ncompliantly with JAX-RPC, mapping to a Java array of .int
[clientgen] WARNING: Map ['http://elexnet.bah.com/methods']:ArrayOfMethodUserTO_
literal incompliantly with JAX-RPC, mapping to a Java array of com.bah.elexnet.s
erver.to.MethodUserTO
[clientgen] C:\Documents and Settings\525328.ROCKIT\Local Settings\Temp\test.jar
198043065\com\bah\elexnet\methods\client\accesscontrol\MACSPortType.java:15: par
ameters is already defined in unArchiveUser(com.bah.elexnet.methods.UnArchiveUse
r,com.bah.elexnet.methods.holders.UnArchiveUserResponseHolder)
[clientgen] public void unArchiveUser(com.bah.elexnet.methods.UnArchiveUser pa
rameters, com.bah.elexnet.methods.holders.UnArchiveUserResponseHolder parameters
[clientgen]
^
[clientgen] C:\Documents and Settings\525328.ROCKIT\Local Settings\Temp\test.jar
198043065\com\bah\elexnet\methods\client\accesscontrol\MACSPortType.java:21: par
ameters is already defined in editUserRoles(com.bah.elexnet.methods.EditUserRole
s,com.bah.elexnet.methods.holders.EditUserRolesResponseHolder)
[clientgen] public void editUserRoles(com.bah.elexnet.methods.EditUserRoles pa
rameters, com.bah.elexnet.methods.holders.EditUserRolesResponseHolder parameters
[clientgen]
^
[clientgen] C:\Documents and Settings\525328.ROCKIT\Local Settings\Temp\test.jar
198043065\com\bah\elexnet\methods\client\accesscontrol\MACSPortType.java:27: par
ameters is already defined in getUsers(com.bah.elexnet.methods.GetUsers,com.bah.
elexnet.methods.holders.GetUsersResponseHolder)
[clientgen] public void getUsers(com.bah.elexnet.methods.GetUsers parameters,
com.bah.elexnet.methods.holders.GetUsersResponseHolder parameters)
[clientgen]
^
[clientgen] C:\Documents and Settings\525328.ROCKIT\Local Settings\Temp\test.jar
198043065\com\bah\elexnet\methods\client\accesscontrol\MACSPortType.java:33: par
ameters is already defined in addUserRoles(com.bah.elexnet.methods.AddUserRoles,
com.bah.elexnet.methods.holders.AddUserRolesResponseHolder)
[clientgen] public void addUserRoles(com.bah.elexnet.methods.AddUserRoles para
meters, com.bah.elexnet.methods.holders.AddUserRolesResponseHolder parameters)
[clientgen]
^
[clientgen] C:\Documents and Settings\525328.ROCKIT\Local Settings\Temp\test.jar
198043065\com\bah\elexnet\methods\client\accesscontrol\MACSPortType.java:39: par
ameters is already defined in archiveUser(com.bah.elexnet.methods.ArchiveUser,co
m.bah.elexnet.methods.holders.ArchiveUserResponseHolder)
[clientgen] public void archiveUser(com.bah.elexnet.methods.ArchiveUser parame
ters, com.bah.elexnet.methods.holders.ArchiveUserResponseHolder parameters)
[clientgen]
^
[clientgen] C:\Documents and Settings\525328.ROCKIT\Local Settings\Temp\test.jar
198043065\com\bah\elexnet\methods\client\accesscontrol\MACSPortType.java:45: par
ameters is already defined in changeSystemPassword(com.bah.elexnet.methods.Chang
eSystemPassword,com.bah.elexnet.methods.holders.ChangeSystemPasswordResponseHold
er)
[clientgen] public void changeSystemPassword(com.bah.elexnet.methods.ChangeSys
temPassword parameters, com.bah.elexnet.methods.holders.ChangeSystemPasswordResp
onseHolder parameters)
[clientgen]
^
[clientgen] C:\Documents and Settings\525328.ROCKIT\Local Settings\Temp\test.jar
198043065\com\bah\elexnet\methods\client\accesscontrol\MACSPortType.java:51: par
ameters is already defined in deleteUser(com.bah.elexnet.methods.DeleteUser,com.
bah.elexnet.methods.holders.DeleteUserResponseHolder)
[clientgen] public void deleteUser(com.bah.elexnet.methods.DeleteUser paramete
rs, com.bah.elexnet.methods.holders.DeleteUserResponseHolder parameters)
[clientgen]
^
[clientgen] C:\Documents and Settings\525328.ROCKIT\Local Settings\Temp\test.jar
198043065\com\bah\elexnet\methods\client\accesscontrol\MACSPortType.java:57: par
ameters is already defined in getUserRoles(com.bah.elexnet.methods.GetUserRoles,
com.bah.elexnet.methods.holders.GetUserRolesResponseHolder)
[clientgen] public void getUserRoles(com.bah.elexnet.methods.GetUserRoles para
meters, com.bah.elexnet.methods.holders.GetUserRolesResponseHolder parameters)
[clientgen]
^
[clientgen] C:\Documents and Settings\525328.ROCKIT\Local Settings\Temp\test.jar
198043065\com\bah\elexnet\methods\client\accesscontrol\MACSPortType_Stub.java:20
: parameters is already defined in unArchiveUser(com.bah.elexnet.methods.UnArchi
veUser,com.bah.elexnet.methods.holders.UnArchiveUserResponseHolder)
[clientgen] public void unArchiveUser(com.bah.elexnet.methods.UnArchiveUser pa
rameters, com.bah.elexnet.methods.holders.UnArchiveUserResponseHolder parameters
[clientgen]
^
[clientgen] C:\Documents and Settings\525328.ROCKIT\Local Settings\Temp\test.jar
198043065\com\bah\elexnet\methods\client\accesscontrol\MACSPortType_Stub.java:39
: parameters is already defined in editUserRoles(com.bah.elexnet.methods.EditUse
rRoles,com.bah.elexnet.methods.holders.EditUserRolesResponseHolder)
[clientgen] public void editUserRoles(com.bah.elexnet.methods.EditUserRoles pa
rameters, com.bah.elexnet.methods.holders.EditUserRolesResponseHolder parameters
[clientgen]
^
[clientgen] C:\Documents and Settings\525328.ROCKIT\Local Settings\Temp\test.jar
198043065\com\bah\elexnet\methods\client\accesscontrol\MACSPortType_Stub.java:58
: parameters is already defined in getUsers(com.bah.elexnet.methods.GetUsers,com
.bah.elexnet.methods.holders.GetUsersResponseHolder)
[clientgen] public void getUsers(com.bah.elexnet.methods.GetUsers parameters,
com.bah.elexnet.methods.holders.GetUsersResponseHolder parameters)
[clientgen]
^
[clientgen] C:\Documents and Settings\525328.ROCKIT\Local Settings\Temp\test.jar
198043065\com\bah\elexnet\methods\client\accesscontrol\MACSPortType_Stub.java:77
: parameters is already defined in addUserRoles(com.bah.elexnet.methods.AddUserR
oles,com.bah.elexnet.methods.holders.AddUserRolesResponseHolder)
[clientgen] public void addUserRoles(com.bah.elexnet.methods.AddUserRoles para
meters, com.bah.elexnet.methods.holders.AddUserRolesResponseHolder parameters)
[clientgen]
^
[clientgen] C:\Documents and Settings\525328.ROCKIT\Local Settings\Temp\test.jar
198043065\com\bah\elexnet\methods\client\accesscontrol\MACSPortType_Stub.java:96
: parameters is already defined in archiveUser(com.bah.elexnet.methods.ArchiveUs
er,com.bah.elexnet.methods.holders.ArchiveUserResponseHolder)
[clientgen] public void archiveUser(com.bah.elexnet.methods.ArchiveUser parame
ters, com.bah.elexnet.methods.holders.ArchiveUserResponseHolder parameters)
[clientgen]
^
[clientgen] C:\Documents and Settings\525328.ROCKIT\Local Settings\Temp\test.jar
198043065\com\bah\elexnet\methods\client\accesscontrol\MACSPortType_Stub.java:11
5: parameters is already defined in changeSystemPassword(com.bah.elexnet.methods
.ChangeSystemPassword,com.bah.elexnet.methods.holders.ChangeSystemPasswordRespon
seHolder)
[clientgen] public void changeSystemPassword(com.bah.elexnet.methods.ChangeSys
temPassword parameters, com.bah.elexnet.methods.holders.ChangeSystemPasswordResp
onseHolder parameters)
[clientgen]
^
[clientgen] C:\Documents and Settings\525328.ROCKIT\Local Settings\Temp\test.jar
198043065\com\bah\elexnet\methods\client\accesscontrol\MACSPortType_Stub.java:13
4: parameters is already defined in deleteUser(com.bah.elexnet.methods.DeleteUse
r,com.bah.elexnet.methods.holders.DeleteUserResponseHolder)
[clientgen] public void deleteUser(com.bah.elexnet.methods.DeleteUser paramete
rs, com.bah.elexnet.methods.holders.DeleteUserResponseHolder parameters)
[clientgen]
^
[clientgen] C:\Documents and Settings\525328.ROCKIT\Local Settings\Temp\test.jar
198043065\com\bah\elexnet\methods\client\accesscontrol\MACSPortType_Stub.java:15
3: parameters is already defined in getUserRoles(com.bah.elexnet.methods.GetUser
Roles,com.bah.elexnet.methods.holders.GetUserRolesResponseHolder)
[clientgen] public void getUserRoles(com.bah.elexnet.methods.GetUserRoles para
meters, com.bah.elexnet.methods.holders.GetUserRolesResponseHolder parameters)
[clientgen]
^
[clientgen] 16 errors
[clientgen] java.io.IOException: Compiler failed executable.exec
[clientgen] at weblogic.utils.compiler.CompilerInvoker.compileMaybeExit(Comp
ilerInvoker.java:470)
[clientgen] at weblogic.utils.compiler.CompilerInvoker.compile(CompilerInvok
er.java:328)
[clientgen] at weblogic.utils.compiler.CompilerInvoker.compile(CompilerInvok
er.java:336)
[clientgen] at weblogic.webservice.tools.build.internal.CompilerHelper.compi
leFiles(CompilerHelper.java:80)
[clientgen] at weblogic.webservice.tools.build.internal.ClientGenImpl.compil
eStubs(ClientGenImpl.java:627)
[clientgen] at weblogic.webservice.tools.build.internal.ClientGenImpl.genera
teStub(ClientGenImpl.java:572)
[clientgen] at weblogic.webservice.tools.build.internal.ClientGenImpl.doClie
ntGenFromWsdl(ClientGenImpl.java:409)
[clientgen] at weblogic.webservice.tools.build.internal.ClientGenImpl.run(Cl
ientGenImpl.java:340)
[clientgen] at weblogic.ant.taskdefs.webservices.clientgen.ClientGenTask.doC
lientGen(ClientGenTask.java:351)
[clientgen] at weblogic.ant.taskdefs.webservices.clientgen.ClientGenTask.exe
cute(ClientGenTask.java:208)
[clientgen] at org.apache.tools.ant.Task.perform(Task.java:341)
[clientgen] at org.apache.tools.ant.Target.execute(Target.java:309)
[clientgen] at org.apache.tools.ant.Target.performTasks(Target.java:336)
[clientgen] at org.apache.tools.ant.Project.executeTarget(Project.java:1339)
[clientgen] at org.apache.tools.ant.Project.executeTargets(Project.java:1255
[clientgen] at org.apache.tools.ant.Main.runBuild(Main.java:609)
[clientgen] at org.apache.tools.ant.Main.start(Main.java:196)
[clientgen] at org.apache.tools.ant.Main.main(Main.java:235)
BUILD FAILED
file:C:/Projects/OtherProjects/WL/soaws/build/build.xml:122: weblogic.webservice
.tools.build.WSBuildException: Compiler failed executable.exec - with nested exc
eption:
[java.io.IOException: Compiler failed executable.exec]did you get a solution for this issue. I am trying to generate a stub to connect to a webservice i created by exposing my stateless session EJB as a web service, using annotations. I want to create a client stub using the clientgen from weblogic 81. I am unable to do this, do you have any solution to this.
-
Not able to generate Service control from WSDL in Weblogic Workshop9.2
Hi All,
I am not able to create Service control from my WSDL in Weblogic workshop9.2. It was working fine in Weblogic 8.1.
I am getting the following error. Please help me out.
Types analysis failed for both JAX-RPC and XmlBeans.
BEGIN JAX-RPC CAUSE
com.bea.control.servicecontrol.internal.validation.BindingsCheckException: Failed to generate the JSService with the endpoint builder
at com.bea.control.servicecontrol.internal.validation.BindingsClassNameReference.setupJsService(BindingsClassNameReference.java:573)
at com.bea.control.servicecontrol.internal.validation.BindingsClassNameReference.loadJsService(BindingsClassNameReference.java:321)
at com.bea.control.servicecontrol.internal.validation.BindingsClassNameReference.getJsService(BindingsClassNameReference.java:362)
at com.bea.control.servicecontrol.internal.validation.BindingsClassNameReference.loadTypeNamesForService(BindingsClassNameReference.java:398)
at com.bea.control.servicecontrol.internal.validation.BindingsClassNameReference.getTypeNamesForService(BindingsClassNameReference.java:383)
at com.bea.control.servicecontrol.internal.validation.BindingsCheckUtility.getComplexTypeNamesForService(BindingsCheckUtility.java:210)
at com.bea.control.servicecontrol.internal.validation.BindingsCheckUtility.getComplexTypeBindingTypeInfoForService(BindingsCheckUtility.java:131)
at com.bea.control.servicecontrol.internal.validation.BindingsCheckUtility.getComplexTypeBindingInfoForServiceByBindingsDataSourceType(BindingsCheckUtility.java:104)
at com.bea.control.servicecontrol.internal.validation.BindingsCheckUtility.initializeTypesForTheService(BindingsCheckUtility.java:273)
at com.bea.control.servicecontrol.internal.validation.BindingsCheckUtility.findMatchingBindingsDataSources(BindingsCheckUtility.java:434)
at com.bea.wlw.controls.service.ui.util.BindingsChecker.<init>(BindingsChecker.java:55)
at com.bea.wlw.controls.service.ui.wizards.SelectSCInfoPage.checkForCompatibleBindings(SelectSCInfoPage.java:304)
at com.bea.wlw.controls.service.ui.wizards.SelectSCInfoPage.<init>(SelectSCInfoPage.java:98)
at com.bea.wlw.controls.service.ui.GenerateSCWizard.getPageList(GenerateSCWizard.java:150)
at com.bea.wlw.controls.service.ui.GenerateSCWizard.addPages(GenerateSCWizard.java:136)
at org.eclipse.jface.wizard.WizardDialog.createContents(WizardDialog.java:499)
at org.eclipse.jface.window.Window.create(Window.java:418)
at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:996)
at org.eclipse.jface.window.Window.open(Window.java:776)
at com.bea.wlw.controls.service.ui.actions.NewSCGenAction.run(NewSCGenAction.java:101)
at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:246)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:538)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:488)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:400)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:843)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3125)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2758)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1699)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1663)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:367)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:103)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:226)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:376)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:163)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:334)
at org.eclipse.core.launcher.Main.basicRun(Main.java:278)
at org.eclipse.core.launcher.Main.run(Main.java:973)
at org.eclipse.core.launcher.Main.main(Main.java:948)
Caused by: java.lang.IllegalArgumentException: unable to find java type for t=String@http://www.w3.org/2001/XMLSchema
at weblogic.wsee.bind.buildtime.internal.TylarBuildtimeBindings.getClassFromXmlType(TylarBuildtimeBindings.java:693)
at weblogic.wsee.bind.buildtime.internal.TylarBuildtimeBindings.getClassFromSchemaType(TylarBuildtimeBindings.java:182)
at weblogic.wsee.tools.source.EndpointBuilder.getJavaClassName(EndpointBuilder.java:735)
at weblogic.wsee.tools.source.EndpointBuilder.addPart(EndpointBuilder.java:664)
at weblogic.wsee.tools.source.EndpointBuilder.createParams(EndpointBuilder.java:591)
at weblogic.wsee.tools.source.EndpointBuilder.addMethod(EndpointBuilder.java:521)
at weblogic.wsee.tools.source.EndpointBuilder.buildEndpoint(EndpointBuilder.java:475)
at weblogic.wsee.tools.source.EndpointBuilder.buildJsService(EndpointBuilder.java:252)
at com.bea.control.servicecontrol.internal.validation.BindingsClassNameReference.setupJsService(BindingsClassNameReference.java:549)
... 43 more
END JAX-RPC CAUSE
BEGIN XMLBEANS CAUSE
com.bea.control.servicecontrol.internal.validation.BindingsCheckException: Could not create buildtime bindings with ClientGenUtil
at com.bea.control.servicecontrol.internal.validation.BindingsClassNameReference.loadBuildtimeBindings(BindingsClassNameReference.java:242)
at com.bea.control.servicecontrol.internal.validation.BindingsClassNameReference.getBindings(BindingsClassNameReference.java:161)
at com.bea.control.servicecontrol.internal.validation.BindingsClassNameReference.loadJsService(BindingsClassNameReference.java:307)
at com.bea.control.servicecontrol.internal.validation.BindingsClassNameReference.getJsService(BindingsClassNameReference.java:362)
at com.bea.control.servicecontrol.internal.validation.BindingsClassNameReference.loadTypeNamesForService(BindingsClassNameReference.java:398)
at com.bea.control.servicecontrol.internal.validation.BindingsClassNameReference.getTypeNamesForService(BindingsClassNameReference.java:383)
at com.bea.control.servicecontrol.internal.validation.BindingsCheckUtility.getComplexTypeNamesForService(BindingsCheckUtility.java:210)
at com.bea.control.servicecontrol.internal.validation.BindingsCheckUtility.getComplexTypeBindingTypeInfoForService(BindingsCheckUtility.java:131)
at com.bea.control.servicecontrol.internal.validation.BindingsCheckUtility.getComplexTypeBindingInfoForServiceByBindingsDataSourceType(BindingsCheckUtility.java:104)
at com.bea.control.servicecontrol.internal.validation.BindingsCheckUtility.initializeTypesForTheService(BindingsCheckUtility.java:253)
at com.bea.control.servicecontrol.internal.validation.BindingsCheckUtility.findMatchingBindingsDataSources(BindingsCheckUtility.java:434)
at com.bea.wlw.controls.service.ui.util.BindingsChecker.<init>(BindingsChecker.java:55)
at com.bea.wlw.controls.service.ui.wizards.SelectSCInfoPage.checkForCompatibleBindings(SelectSCInfoPage.java:304)
at com.bea.wlw.controls.service.ui.wizards.SelectSCInfoPage.<init>(SelectSCInfoPage.java:98)
at com.bea.wlw.controls.service.ui.GenerateSCWizard.getPageList(GenerateSCWizard.java:150)
at com.bea.wlw.controls.service.ui.GenerateSCWizard.addPages(GenerateSCWizard.java:136)
at org.eclipse.jface.wizard.WizardDialog.createContents(WizardDialog.java:499)
at org.eclipse.jface.window.Window.create(Window.java:418)
at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:996)
at org.eclipse.jface.window.Window.open(Window.java:776)
at com.bea.wlw.controls.service.ui.actions.NewSCGenAction.run(NewSCGenAction.java:101)
at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:246)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:538)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:488)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:400)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:843)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3125)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2758)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1699)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1663)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:367)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:103)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:226)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:376)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:163)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:334)
at org.eclipse.core.launcher.Main.basicRun(Main.java:278)
at org.eclipse.core.launcher.Main.run(Main.java:973)
at org.eclipse.core.launcher.Main.main(Main.java:948)
Caused by: weblogic.wsee.tools.WsBuildException: com.bea.xml.XmlException: Exception while compiling org apache xmlbeans: C:\R4WorkSpace\TestEWS\src\controls\EWSDeal.wsdl:0: error: src-resolve: type 'Array@http://schemas.xmlsoap.org/soap/encoding/' not found.
at weblogic.wsee.tools.clientgen.ClientGenUtil.createBuildtimeBindings(ClientGenUtil.java:217)
at weblogic.wsee.tools.clientgen.ClientGenUtil.createBuildtimeBindings(ClientGenUtil.java:174)
at com.bea.control.servicecontrol.internal.validation.BindingsClassNameReference.loadBuildtimeBindings(BindingsClassNameReference.java:228)
... 44 more
Caused by: com.bea.xml.XmlException: Exception while compiling org apache xmlbeans: C:\R4WorkSpace\TestEWS\src\controls\EWSDeal.wsdl:0: error: src-resolve: type 'Array@http://schemas.xmlsoap.org/soap/encoding/' not found.
at weblogic.wsee.bind.buildtime.internal.XmlBeansApacheBindingsBuilderImpl.createBuildtimeBindings(XmlBeansApacheBindingsBuilderImpl.java:262)
at weblogic.wsee.bind.buildtime.internal.XmlBeansBaseBindingsBuilderImpl.createBuildtimeBindings(XmlBeansBaseBindingsBuilderImpl.java:119)
at weblogic.wsee.tools.source.EndpointBuilder.setupBindingProviderWithServices(EndpointBuilder.java:836)
at weblogic.wsee.tools.clientgen.ClientGenUtil.createBindingProvider(ClientGenUtil.java:458)
at weblogic.wsee.tools.clientgen.ClientGenUtil.createBuildtimeBindings(ClientGenUtil.java:211)
... 46 more
Caused by: org.apache.xmlbeans.XmlException: C:\R4WorkSpace\TestEWS\src\controls\EWSDeal.wsdl:0: error: src-resolve: type 'Array@http://schemas.xmlsoap.org/soap/encoding/' not found.
at weblogic.wsee.bind.buildtime.internal.XmlBeansApacheBindingsBuilderImpl.compileXmlBeans(XmlBeansApacheBindingsBuilderImpl.java:361)
at weblogic.wsee.bind.buildtime.internal.XmlBeansApacheBindingsBuilderImpl.createBuildtimeBindings(XmlBeansApacheBindingsBuilderImpl.java:257)
... 50 more
END XMLBEANS CAUSEHi
I have not seen the wsdl yet but your xmlbean types generation looks familiar.
This is one reason why you could get the error with the xmlbeans type.
error: src-resolve: type 'Array@http://schemas.xmlsoap.org/soap/encoding/' not found.
Workaround: To allow the XmlBeans to be built from this type of WSDL correctly, add the schemaLocation attribute. For example, if the original WSDL had an import such as:
<s:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
It should be changed to the following:
<s:import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/>
After this change you should not see the error.
Vimala- -
How to create Web Service based on PI WSDL message
Hi all,
we have following scenario:
Within PI (version 7.1) we set up a message type and inbound service interface. This service interface should send the PI message to a web service running on a SAP J2EE (version 7.01). As the PI message is sent as WSDL I thought it should be easy to build a web service on the SAP J2EE based on this WSDL from PI.
Unfortunately, I have problems creating the Web Service.
For my current project we integrated the NWDI to the SAP NetWeaver Developer Studio and I'm required to add the Web Service to an existing DC (Development Component) within the NWDI.
What I tried so far is:
- I created a Deployable Proxy Project and within this I created a Client Proxy Definition based on the WSDL from the PI. But I can't add this Proxy to the DCs of the NWDI and I don't know how to implement my own coding here in order execute specific functions.
- I created a new class within the NWDI DC and a public method. Based on this I created a Virtual Interface and a Web Service Definition (WSD). Then I added this to a Web Service Deployment Descriptor. I uploaded this to the SAP J2EE. But I'm not able to access this and I don't know hoe to assign the WSDL here.
I also tried here to create a client proxy based on this WSD as I thought I might assign the WSDL here. But I don't see the WSD in the list of Web Services uploaded to the SAP J2EE...
Can you please advice me how to create a Web Service in such an environment?
regards
René JurmannHi Tahir,
sorry that you needed to wait this long - but this is how I created the web service:
The steps on how to create the web service in NetWeaver Developer studio are nearly the same as described in the blog http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/5838. [original link is broken] [original link is broken] [original link is broken]
Some steps I just skipped and some others I added. Some of the steps I did the way I described it as I needed to connect the web service with the SAP PI.
Prerequisites:
Add Java Perspective and J2EE Development Perspective to the open perspectives.
Within "Window - Preferences - Web Services" check "Soap extensions visible in the virtual interface editor"
The SDM of the corresponding SAP J2EE is configured within "Window - Preferences"
Create a Development Component (DC) with type "J2EE -> EJB Module"
The business logic of the web service will be implemented in an Enterprise Java Bean (EJB). So first the EJB component must be created:
Choose "File -> New -> Other"
In opening PopUp choose "Development Component -> Development Component Project"
Select the Software Component for which you want to add the DC (e.g. "Local Development -> MyComponents")
Choose now vendor, name and type:
vendor is an alpha-numeric string of 20 characters starting with a letter - all in lower case
name is an alpha-numeric string starting with a letter - all in lower case
vendor and name concatenated must not be longer then 40 characters
the name can be separated into different part using "/" as separator
each part of the name must not be longer than 8 characters
the type is "J2EE - EJB Module"
you can specify a Caption as general description for the web service
Create new EJB
To create the EJB itself:
In J2EE DC Explorer of J2EE Development Perspective expand new DC and right-click on folder "ejbModule"
Choose "New - EJB" with following details:
EJB Name: <name as for PI service Interface to be created - starting in upper case>
EJB Project: <pre selected>
Bean Type: Stateless Session Bean
Default EJB Package: <corresponds to namespace in PI>
generate default interfaces: Checked
Regarding the "Default EJB Package" this should be created according the namespace in PI for which all PI objects will be created. This only applies if you have some naming conventions here.
Example:
Namespace in PI is: http://company.net/pi/SOFTWARE_COMP/Application
The corresponding package then is: net.company.pi.software_comp.application
Implement coding for web service
As the web service will be called via PI some transfer variables will be submitted. Most likely, those variables will not be standard type (e.g. String) but a complex type. Those types must be generated as Java classes. Below an example of a complex type I needed:
Data Type
net.company.pi.software_comp.application.types.MessageProcessingInformation
Structure:
Element name Element type
sendingSystemID String
interfaceID String
businessProcessVariantCode String
testIndicator Boolean
For every element described a public "get", "set" and "has" method must be created in the corresponding Java class:
package net.company.pi.software_comp.application.types;
import java.io.Serializable;
public class MessageProcessingInformation implements Serializable {
protected String sendingSystemID;
protected String interfaceID;
protected String businessProcessVariantCode;
protected Boolean testIndicator;
public String getSendingSystemID() {
return sendingSystemID;
public void setSendingSystemID(String value) {
this.sendingSystemID = value;
public boolean hasSendingSystemID() {
if(sendingSystemID != null && !sendingSystemID.equals("")){
return true;
return false;
All Java classes representing complex types and all classes referenced here (used for sub-types) must implement java.io.Serializable. Java standard types which do not implement this class must not be used as sub-types.
As soon as all data types are declared the real business logic can be implemented:
In J2EE DC Explorer of J2EE Development Perspective expand DC - "ejb-jar.xml" - <Name> and double click on "ejbCreate"
In detail view select folder "Business Methods" and click "Add"
choose name of business method - this should be the same as the PI message type used for the service interface - starting lower case
return type should be "void"
add needed parameters fully qualified - including package (as specified in PI and created previously in DC)
you can mark certain parameters as array if necessary
Remark:
It might be that after saving you get an error. This might be as the package name of one component is copied to the corresponding Java class at the very beginning (before the package declaration within the Java class). Simply delete the string here.
It also might be, that the new business method is only defined in the remote interface class but not in the bean class. Just create an according method in the bean class.
Within the newly created business method within the bean class you can now implement the business logic.
Create a DC with type "J2EE -> Enterprise Application"
In order to create the "real" web service and deploy it to the J2EE an Enterprise Application project has to be created. So create a new DC as for the EJB Module but choose as type "J2EE -> Enterprise Application".
After the DC is created right click on the EJB DC and choose "Add to EAR Project". Choose the new DC.
Create web service for EJB
As soon as you implemented the business logic you can create the "real" web service. Therefore:
Right click on the EJB name below "ejb-jar.xml"
Choose "New - Web Service"
Choose proper "Web Service Name" and "Configuration Name" (probably oriented at the EJB name)
Copy the URL of the web service - you'll need it later for PI configuration
on the second next screen use the same name for "Virtual Interface" and "Web Service Definition" (the name should be the name of the "Endpoint")
the "EAR Project" should be preselected
Unfortunately, the web service can't be used in its current configuration to be accessed by PI. Therefore the Virtual Interface must be changed. To do so, expand folder "Virtual Interfaces" and double click the virtual interface created.
Within the detail view expand in tabs "Mapping" and "Types" the complete folder structure. For any "SOAP Extension" where a namespace can be defined use as namespace the corresponding namespace in PI (e.g. http://corpintra.net/pi/CBFC_GLOBAL_SAP_APPL/BillerDirect) but do not change any "Soap Extension" of a standard Java type. (if you don't have any naming convetions for namespaces in PI you can leave the SOAP Extension here. But then the namespace in PI should be set accordingly.)
Probably it can be necessary on top level "Soap Extensions" in tab "Mapping" to leave "Use Namespaces for Parameters" unchecked. For some of my web services this parameter must be checked for others not - just try.
If you can define a "New Name", "Local Name" or "Item Label" for a Soap Extension then use a name with starting upper case letter. (For Java Naming conventions most of the data type names will start with lower case letters.) Especially the method name must be renamed this way in order to stick to the PI namings.
As a last point to change here check in tab "Mapping" all "Incoming Parameters" which you specified as array. Use for those as "New Name" a different name - do not just simply change from lower case to upper case. This is necessary as on PI we need to create two levels although here only one is specified.
For any own sub-type declared as array the name within the coding should also differ from the corresponding Java Class name the type refers to.
If all this is done you can deploy the web service to the J2EE:
right click on "Enterprise Application" DC and choose "Development Component - Build..." and build all corresponding components
right click on "Enterprise Application" DC and choose "Development Component - Deploy"
Test the new web service via <J2EE URL>/wsnavigator/enterwsdl.html
Create PI interface
After the web service is created successfully the PI integration can be started.
Therefore, within the Enterprise Services Builder create a data type according to the web service definition. All components defined on top-level for this data type should be declared as incoming parameter for the web service business method. Therefore it could be necessary to create some sub data types on PI first and add those to the "master" data type.
Ensure that the names of the components correspond to the names defined in the web service (see virtual interface here). Those names must exactly be the same - including lower/upper case. Also take care for the ordering of the components.
In case you need to include arrays following applies:
The upper level is of occurrence "1:1". This has only one sub-entry with occurrence "1:n". The names for upper and sub-level must not equal.
Based on the data type a message type is created. The name of the message type must be exactly the same as the name of the web service business method. (Hint: the name of the web service business method was most likely changed in the virtual interface. Then this name must correspond to the message type name.) Based on the message type an asynchronous inbound interface is to be created (which will be referred in the Integration Directory). The operation name for this interface (left panel) should be the same as the name for the web service business method.
Create PI mappings and routings
How to map (message mapping and operation mapping) from source to the web service message I wont explain here as this depends on the source message. The only important things here are:
When creating the SOAP communication channel within the Integration Builder the "Target URL" is:
<J2EE URL>/<Access URL as specified in web service creation>?wsdl&style=document
The soap action is the name of the web service business method.
Most likely the web service needs authentication to be executed. -
How to put data into a array element in the BPEL
Hi,
I have a element in the WSDL which is of type Array. (i.e accepts unlimited data for the same element). How should i put a data into a array in the BPEL.
Example:
The below Example gives u an idea about wht iam asking:pasting a piece of my requirement:
<s:element minOccurs="0" maxOccurs="1" name="parameters" type="tns:ArrayOfCSParameters" />
<s:complexType name="ArrayOfCSParameters">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded"
name="CSParameters" nillable="true" type="tns:CSParameters" />
</s:sequence>
</s:complexType>
<s:complexType name="CSParameters">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RevenueItem" type="tns:RevenueItem" />
<s:element minOccurs="0" maxOccurs="1" name="AccountURIs" type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="GroupURIs" type="tns:ArrayOfString" />
<s:element minOccurs="1" maxOccurs="1" name="Percentage" nillable="true" type="s:decimal" />
</s:sequence>
<s:attribute name="Version" type="s:decimal" use="required" />
<s:attribute name="URI" type="s:string" />
</s:complexType>
Any suggestion is appreciated.
Regards
pavanYou have 2 options i guess.
Use the transformation and the for-each to construct the array-list
or like Richard said, use a loop in bpel, assign in the loop an variable of element type="CSParameters" and append this variable to your variable with accepts the arraylist.
Maybe you are looking for
-
SAP PI 7.4 SOAP - ABAP Proxy Synchronous Webservice
Hi Everyone, I am developing the following scenario: 3rd party makes a SOAP call to SAP (via PI) to determine whether a vendor exists or not in the SAP system. The link for the call is provided by us from the Integrated Configuration. The request com
-
How to trace an application which is not in the current directory?
Hi, When I use simple example 'Trace' to trace my application in current directory, it works well. But I cannot trace the applications which are in different directory or in an .jar file. Even I've already add it to the classpath. The following is my
-
How to edit the text in the attachment list in MM02 through Program
Hi, I want to update the attachment list for the material. i.e, MM02 - > Services for object - > attachment list - > "I have 2 items". For the the first item, there will be some text is availble. Now my requirement is to update the text. For
-
HELP PLEASE!! Acrobat will not recognise my csv file for a script
Hi, I have this script which is below which I need to split a 300 page document which I need to split into 50 documents and name them with a csv file provided. I have the excel spreadsheet with column headed "filename" with 50 file names. When I sele
-
Is there any standard report which for a specific pricing group and material would show me the pricing group, material, standard price PR00 and all the conditions applicable to it. I can't seem to find such a report or would this require customizatio