You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wsif-user@ws.apache.org by Aleksander Slominski <as...@cs.indiana.edu> on 2005/05/06 17:00:14 UTC
[Axis2] mapping XML/XSD <-> Java [Re: Complex types: do the reverse
?
Jacques-Olivier Goussard wrote:
>Hi all
>With all the discussions around complex types support
>in WSIF, I was wondering if really WSIF approach to it
>was the one that it should take.
>If really WSIF aims at representing all sorts of services
>through the WSDL description, then it appears to me
>that all types should be instances of the XSD types.
>
>
i agree.
>In this approach, a SOAP-based service would simply
>take and return XML DOMs (or other representation)
>
i prefer to think about it as XML Infoset and DOM as one possible API.
> - thus
>addressing the complex type issue in the most flexible
>way. A java-based service would internaly populate the
>needed beans from it's knowledge of the API and the XSD.
>So no type mapping would be necessary in the java-binding
>WSDL description.
>
>
what if there is no Java Beans - you have XMl Schema with types/elements
that you did not see before?
>And the client side would not need any knowledge of
>the underlying implementation - currently a java-binding user
>must know if the method takes a int[] or Integer[] for
>example, breaking the design IMHO.
>It's a much easier approach, because Java to XML binding
>is a much simpler problem than XML to java - but that's a 90
>degres change :)
>
>
that is approach i taken in Super Dynamic Invoker but
with a little twist to make it more flexible in handling Java objects:
http://www.extreme.indiana.edu/~aslom/bnp/sdi/
i have a special XML infoset API (XB1/XPP3) that allows to store both
XML and any object including
Java Beans as part of XML tree (this API could provide also DOM view)
during serialization XML parts are straightforwardly converted
to XML 1.0 and Java objects goes through type mapping or provide their
own serialization
(if they implement XmlSerializable).
deserialization is opposite: you start with XML events and XML tree is
recreated then it is transformed
to replace parts of tree with Java objects (possibly in pipeline of
handlers).
currently for Java objects i do not use Java Beans instead i used
XmlBeans and that works pretty
well (though also right now transformation is very inefficient but is
*correct* so can be optimized later ...)
and here is how XmlBeans code work check in particular dynamic client
section (based on WSIF API)
http://www.extreme.indiana.edu/xgws/xsul/guide/#client.dii
and how i do "server-side" WSIF with
XService/XmlBeansBasedService/HttpBasedServices/XHandler
(keep in mind it is experimental API!!!!) in DecoderImpl.java
http://www.extreme.indiana.edu/xgws/xsul/guide/#host
http://www.extreme.indiana.edu/viewcvs/~checkout~/xsul/sample_decoder/src/decoder/service/DecoderService.java
the API is designed to allow hosting any services as long as they are
described in WSDL
(ideally serive is defined as triple <SERVICE_NAME, wsdlLoc,
objectImplementingPortTypeDescribedInWsdl)
HTH,
alek
--
The best way to predict the future is to invent it - Alan Kay