No, já osobně to řeším opravdu ručně. Možná je to tím, že jsem musel v
rámci implementace BTP (Business Transaction Protocol) do WASPu (náš
Systinetí SOAP stack) řešit custom serializace. Ano, měli jsme vlastní
jednoduše ovladatelný pullparser...

Takže osobně bych použil SAX, třídy by měly být klasické Java Beany
(aspoň nevím, že by něco generovalo z XML/XSD/WSDL neJavaBeanové
třídy) a pak v ThreadLocal proměnné bych si držel objekt odpovídající
q:MessageDownloadResponse. Udělat to by mělo být otázka chvilky -
daleko rychlejší než bádat, jak je ono JAXBčko přesně namapované -
občas je s tím tak trošku problém...

2009/11/6 Dusan Zatkovsky <[email protected]>:
> Ahoj.
>
> Snazim sa vyriesit nasledovny problem ( tyka sa to datovych schranok ):
>
> Mam k dispozicii xml, ktore vyzera byt fragmentom nejakej soap message ( asi 
> jej payloadom ).
>
> Konkretny priklad:
>
> <?xml version="1.0"?>
> <q:MessageDownloadResponse xmlns:q="http://isds.czechpoint.cz/v20/message";
>   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
> isds_send="https://www.czebox.cz/any/DS/dz";>
>  <q:dmReturnedMessage>
>    <p:dmDm xmlns:p="http://isds.czechpoint.cz/v20";>
>      <p:dmID>101761</p:dmID>
>      <p:dbIDSender>abcdefgh</p:dbIDSender>
>        ....
>        ....
>
> Takisto mam k dispozicii mnozstvo java class, vygenerovanych z xsd-cok, do 
> ktorych sa pri priamom volani webservice
> toto xml transformuje.
>
> Ja by som rad to xml nejak deserializoval vyuzitim tych class a nepisal si 
> vlastny sax parser.
> Som si takmer isty ( z priameho volania ws ), ze vysledok by mal byt v 
> class-e Holder<TReturnedMessage>.
> Nedari sa mi ale prist na sposob, ako na to.
>
> Hladal som "MessageDownloadResponse", to som nasiel vo wsdl ako:
>
>  <message name="MessageDownloadResponse">
>    <part name="parameter" element="tns:MessageDownloadResponse" />
>  </message>
>
> Skusil som si vygenerovat .java zdrojaky z wsdl a skumat tam, ale jedine, na 
> co som narazil, je:
>
> ObjectFactory.java:
>
>   �...@xmlelementdecl(namespace = "http://isds.czechpoint.cz/v20";, name = 
> "MessageDownloadResponse")
>    public JAXBElement<TMessDownOutput> 
> createMessageDownloadResponse(TMessDownOutput value) {
>        return new 
> JAXBElement<TMessDownOutput>(_MessageDownloadResponse_QNAME, 
> TMessDownOutput.class, null, value);
>    }
>
> a
>
> DmOperationsPortType.java:
>
>   �...@webmethod(operationName = "MessageDownload")
>   �...@requestwrapper(localName = "MessageDownload", targetNamespace = 
> "http://isds.czechpoint.cz/v20";, className = 
> "cz.czechpoint.isds.v20.TIDMessInput")
>   �...@responsewrapper(localName = "MessageDownloadResponse", targetNamespace 
> = "http://isds.czechpoint.cz/v20";, className = 
> "cz.czechpoint.isds.v20.TMessDownOutput")
>    public void messageDownload(
>       �...@webparam(name = "dmID", targetNamespace = 
> "http://isds.czechpoint.cz/v20";)
>        String dmID,
>       �...@webparam(name = "dmReturnedMessage", targetNamespace = 
> "http://isds.czechpoint.cz/v20";, mode = WebParam.Mode.OUT)
>        Holder<TReturnedMessage> dmReturnedMessage,
>       �...@webparam(name = "dmStatus", targetNamespace = 
> "http://isds.czechpoint.cz/v20";, mode = WebParam.Mode.OUT)
>        Holder<TStatus> dmStatus);
>
>
> Tymto veciam vobec nerozumiem, predpokladam, ze tie anotacie robia nejaku 
> magiu, ktora je mojim ociam ukryta.
>
> Tusi niekto ako na to?
>
> Dik.
>
>
> --
> Dusan
>

Odpovedet emailem