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



Reply via email to