I had a similar problem and it ends up in writing a wrapper in .NET.
This service is converting the DataSet structure to Arrays (and back).

This seems to be the only was to control the interop problems between .NET and Axis with DataSets.

Interesting Links on this behalf:

Interoperability Tips:
http://blogs.msdn.com/smguest/archive/2004/08/12/213659.aspx
Description on DataSet Problem:
http://msdn.microsoft.com/msdnmag/issues/03/04/XMLFiles/
DateTime Problem within DataSets:
http://support.microsoft.com/default.aspx?scid=kb;en-us;842545

I hope this helps.

Ralf

Richard Schrauwen schrieb:
Hi Guy,
Well, that's exaxtly my problem, I can't. The WSDL does not describe the complete structure, but includes an xsd to evaluate runtime what has been sent. Something like this:

......
     <s:element name="CreateElements">
       <s:complexType>
         <s:sequence>
           <s:element minOccurs="0" maxOccurs="1" name="elements">
             <s:complexType>
               <s:sequence>
                 <s:any namespace="http://tempuri.org/NewElement.xsd"; />
               </s:sequence>
             </s:complexType>
           </s:element>
         </s:sequence>
       </s:complexType>
     </s:element>
.....

with NewElement.xsd:
 <xs:element name="NewElement">
  <xs:complexType>
   <xs:choice maxOccurs="unbounded">
    <xs:element name="NewElementTbl">
     <xs:complexType>
      <xs:sequence>
       <xs:element name="MAC" type="xs:string" minOccurs="0"/>
       <xs:element name="ParentID" type="xs:integer" minOccurs="0"/>
       <xs:element name="TemplateName" type="xs:string" minOccurs="0"/>
       <xs:element name="Type" type="xs:string" minOccurs="0"/>
       <xs:element name="IP" type="xs:string" minOccurs="0"/>
       <xs:element name="ClonedMAC" type="xs:string" minOccurs="0"/>
      </xs:sequence>
     </xs:complexType>
    </xs:element>
   </xs:choice>
  </xs:complexType>
 </xs:element>


and .NET expects a soap structure like this with a schema and diffgram element extra:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
<soap:Body>
 <CreateElements xmlns="http://42Networks.com/cpe/DRGMgr";>
  <elements>
   <xs:schema id="NewElement"
    targetNamespace="http://tempuri.org/NewElement.xsd";
    xmlns:mstns="http://tempuri.org/NewElement.xsd";
    xmlns="http://tempuri.org/NewElement.xsd";
    xmlns:xs="http://www.w3.org/2001/XMLSchema";
    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
    attributeFormDefault="qualified" elementFormDefault="qualified">
    <xs:element name="NewElement"
     msdata:IsDataSet="true">
     <xs:complexType>
      <xs:choice maxOccurs="unbounded">
       <xs:element name="NewElementTbl">
        <xs:complexType>
         <xs:sequence>
          <xs:element name="MAC"
           type="xs:string" minOccurs="0" />
          <xs:element name="ParentID"
           type="xs:long" minOccurs="0" />
          <xs:element name="TemplateName"
           type="xs:string" minOccurs="0" />
          <xs:element name="Type"
           type="xs:string" minOccurs="0" />
          <xs:element name="IP"
           type="xs:string" minOccurs="0" />
          <xs:element name="ClonedMAC"
           type="xs:string" minOccurs="0" />
         </xs:sequence>
        </xs:complexType>
       </xs:element>
      </xs:choice>
     </xs:complexType>
    </xs:element>
   </xs:schema>
   <diffgr:diffgram
    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
    xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
    <NewElement
     xmlns="http://tempuri.org/NewElement.xsd";>
     <NewElementTbl diffgr:id="NewElementTbl1"
      msdata:rowOrder="0" diffgr:hasChanges="inserted">
      <MAC>22:11:11:11:11:11</MAC>
      <ParentID>1</ParentID>
      <TemplateName>
       Template: DRG-11 [H323]
      </TemplateName>
      <Type>DRG-11 [H323]</Type>
      <IP>0.0.0.0</IP>
     </NewElementTbl>
    </NewElement>
   </diffgr:diffgram>
  </elements>
 </CreateElements>
</soap:Body>
</soap:Envelope>

I tried to add the missing elements in the WSDL by hand, but this does not result in the expected soap call. As the structure with namespaces and so is similarfor all .NET DataSets I hoped that someone already made some Serializer or WSDL that will do the trick...

Richard


From: Guy Rixon <[EMAIL PROTECTED]>
Reply-To: [email protected]
To: [email protected]
Subject: Re: .NET DataSet in Axis
Date: Tue, 30 Aug 2005 08:56:26 +0100 (BST)

Can you not generate beans for the types in question using WSDL2Java?

On Tue, 30 Aug 2005, Richard Schrauwen wrote:

 > Hi,
 >
 > I was wondering if there is any progress in the .NET - Axis
> interoperability, especially regarding the support of .NET DataSet in axis. > The server I am talking to only accepts a DataSet with fields like schema
 > and diffgram. I know, the .NET side should not expose such internal
> datatypes to the outside world, but 'they' won't change it. At least not for
 > an acceptable price to pay....
 >
> I've seen in my searches that many mortal souls have encountered the same > problem, only no solutions appeared on my screen. Does anyone know about a > Serializer for DataSets or another way to create a DataSet compatible soap
 > request?
 >
 > cheers,
 > Richard
 >
 >

Guy Rixon                         [EMAIL PROTECTED]
Institute of Astronomy                       Tel: +44-1223-337542
Madingley Road, Cambridge, UK, CB3 0HA        Fax: +44-1223-337523


Reply via email to