Tomáš Procházka wrote:
Zdravím,
odpovídám na zprávu ze čtvrtka, 26. ledna 2006,
kterou Martin Kuba napsal(a) v 12:08:43:

 Díky za cenné rady.

 Pokouším se místo Mapy přenášet tedy dvourozměrné pole, zatím taky ne s moc 
velkých úspěchem.

 Ale mimochodem, když napíšu třídu v Javě, tak s toho Axis vygeneruje toto:


  <schema targetNamespace="http://xml.apache.org/xml-soap"; 
xmlns="http://www.w3.org/2001/XMLSchema";>
   <import namespace="urn:ws.bazartip.atomsoft.cz"/>
   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
   <complexType name="mapItem">
    <sequence>
     <element name="key" nillable="true" type="xsd:anyType"/>
     <element name="value" nillable="true" type="xsd:anyType"/>
    </sequence>
   </complexType>
   <complexType name="Map">
    <sequence>
     <element maxOccurs="unbounded" minOccurs="0" name="item" 
type="apachesoap:mapItem"/>
    </sequence>
   </complexType>
  </schema>


 Mě to přijde zcela shodné jako vaše gSoap s jediným rozdílem, že u klíče a 
hodnoty není přesně uveden jaký typ tam vlastně bude, což je proto, že Axis 1.3 
nepodporuje generické typy. Takže bych viděl jako mnohem snazší cestu upravit 
to, co Axis vygeneruje. Pořád tomu na první pohled rozumím daleko více než 
gSoapu.

Je to shodné až na ten typ, a v něm je ten problém. Ten typ je příloš obecný.

  Podle mě takto definovaný zápis musí jít použít i třeba v .Netu, jen by se 
tam na to musela napsat třída která odpovídá mapě a k ní něco co tohle na ní 
namapuje, ne?

Fakt si přečtete ten článek od IBM, co jsem na něj posílal URL.
Teoreticky nemusíte vůbec definovat co ve zprávě bude, můžete
říct rovnou na úrovni celé zprávy, že bude xsd:anyType. Ale pak se
nemůžete divit, že s takovou službou budou potíže. Protože v ní může
být cokoliv, musí implementace serializaátorů a deserializátorů
na obou stranách přesně sedět.
A jak jste ověřil, ani Axis vůči Axisu přesně nesedí.

  Nebo se fakt SOAP používá jen k přenášení základních typů jako String a 
Integer?

Ne, k přenášení základních typů definovaných v XML Schema, viz
http://www.w3.org/TR/xmlschema-2/#built-in-datatypes
a složených typů. Ale ty typy nesedí na žádný programovací jazyk.

  Já právě myslel, že použít pro přenos jakoukoliv třídu je běžná věc, jen je 
potřeba napsat něco, co to serializuje do XML a zpětně.

Teoreticky ano, prakticky ne.

  Jak jsem psal, potřebuji najednou přenést větší množství položek, jsou to 
čísla, řetězce a datumové položky. Jak se to v tom případě řeší? Posílá se to 
po jednom?

Zkuste to jako pole s položkami typu xsd:choice, ve kterém vyjmenujete
povolené typy.

Makub
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Supercomputing Center Brno             Martin Kuba
Institute of Computer Science    email: [EMAIL PROTECTED]
Masaryk University             http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ     mobil: +420-603-533775
--------------------------------------------------------------

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Odpovedet emailem