XML payload is too much for references. Is it feasible to find a more convenient format or it needs encapsulated on a SOAP envelope?
2011/12/7 ant elder <[email protected]>: > This is good and i will have a go in 2.x to see if a similar approach > works there. But i can't help thinking its a slightly convoluted > approach and as we have more flexibility in 2.x to add more APIs I > wonder if we should just add a more direct API method to set the URIs > with extra methods on Node, or also perhaps something like being able > to do: ((TuscanyServiceReference)serviceReference).setURI(uri)? > > ...ant > > ---------- Forwarded message ---------- > From: Simon Nash <[email protected]> > Date: Wed, Dec 7, 2011 at 1:04 PM > Subject: Re: Dynamic service references (summary) > To: [email protected] > > > Millies, Sebastian wrote: >> >> Thank you very much for all your help, Simon. >> > You're very welcome. I'm glad this is working for you now. > > >> I summarize here the result of this discussion for everyone's benefit: >> >> For dynamic web service endpoints, get a wsdl for the web service and define >> a service reference with interface.wsdl using wsdl.binding and a dummy >> URI in the binding.ws element. >> > One small point--it doesn't need to be interface.wsdl. It should also work > if you use interface.java. > > Simon > > >> <sca:reference name="bapiCostcenterGetList" requires="sca:authentication"> >> <sca:interface.wsdl >> interface="urn:functions#wsdl.interface(ZWS_BAPI_COSTCENTER_GETLIST)" /> >> <sca:binding.ws >> >> wsdlElement="urn:functions#wsdl.binding(ZWS_BAPI_COSTCENTER_GETLISTBinding)" >> uri="dynamicURI" /> >> </sca:reference> >> >> At run time get the service reference, serialize it to XML, replace the >> dummy URI with the real endpoint URI, deserialize the reference and call the >> service method. The serialization coding goes like this: >> >> public String serializeServiceReferenceXML( ServiceReference<T> sr ) >> throws IOException >> { >> ServiceReferenceImpl<T> sri = (ServiceReferenceImpl<T>) sr; >> return sri.toXMLString(); >> } >> >> public ServiceReference<T> deserializeServiceReferenceXML( String >> serializedSR ) >> throws Exception >> { >> StringReader reader = new StringReader( serializedSR ); >> XMLStreamReader xmlReader = >> XMLInputFactory.newInstance().createXMLStreamReader( reader ); >> ServiceReferenceImpl<T> sri = new ServiceReferenceImpl<T>( xmlReader ); >> return sri; >> } >> >> The deserialized reference will work also when using policy sets (I have >> tested >> that with basic authentication). >> >> For background on the changes that have been made to the 1.x trunk to make >> this possible, refer to TUSCANY-3984. >> >> -- Sebastian >> >> IDS Scheer Consulting GmbH >> Geschäftsführer/Managing Directors: Kamyar Niroumand, Ivo Totev >> Sitz/Registered office: Altenkesseler Straße 17, 66115 Saarbrücken, Germany >> - Registergericht/Commercial register: Saarbrücken HRB 19681 >> http://www.softwareag.com >> -- Quiero ser el rayo de sol que cada día te despierta para hacerte respirar y vivir en me. "Favola -Moda".
