Hello,
> I encountered with XSOM was difficulties
> in using it to parse the schema from a wsdl as a whole rather than just
> the extracted schema.
You are completely right. It's impossible with XSOM :-( What's why I use
wsdl4j...
> I could see difficulties with handling schema's that a split across
> multiple files, or wsdl's that a composite of multiple wsdl's. Are you
> able to handle these scenarios with your component?
Strange enough - because XSOM can download external schemas.
What I do is to extract schemas from wsdl using wsdl4j and pass them as
a list to my component init() method.
XSOM parser downloads automatically referenced schemas.
For example if I pass
*****************************
<xsd:schema>
<xsd:import namespace="http://ontology.bionemus.org"
schemaLocation="http://inb.bsc.es:80/gn6/proxy/runPhylipKitsch?xsd=1"/>
</xsd:schema>
*****************************
it will download a schema from url and then download another one,
*****************************
<xs:import namespace="http://datatypes.bionemus.org"
schemaLocation="http://inb.bsc.es:80/gn6/proxy/runPhylipKitsch?xsd=2"/>
*****************************
and so on...
About multiple WSDL files, I think, this is a question to wsdl4j...
didn't try this.
Another solution I saw on the net was to use a simple XSL to transform
(extract) schema from WSDL, but I think it's too primitive.
Unfortunately, SUN didn't do the same as it did for XSOM for WSDL.
There is WSDL parser inside JAX-WS and they even started a new project
(WOM) to make it a subproject, but by some reason there is no activity
since then.
Best regards,
Dmitry
Stuart Owen wrote:
> Hi Dmitry
>
>> Hello Stian,
>>
>>
>>
>>> BTW - does your library understand inheritance and abstract types..?
>>>
>>>
>> It's more GUI component (Schema based XML constructor implemented as a
>> JTree) than a library.
>> I already handle inheritance (flattening attributes and elements) so in
>> a tree there is only one element with all attributes/elements from its
>> inheritance tree.
>> I do not do special parsing for abstract types and didn't look yet in
>> substitution groups.
>> As I said I use XSOM library that is a core of JAXB, so it is very
>> stable and at least we can be sure it is here for years.
>> Executing the service using jax-ws is trivial, the problem is in in/out
>> parsing...
>>
>> Thank you for the ideas,
>>
>>
> I'm very interested in your experiences with XSOM. A while ago I was
> looking into using it in a similar way to how you describe, as a
> replacement to our reliance on axis to process the wsdl schema (which is
> horrible and led to a number of problems) and to assist in the removal
> of the XML splitters that Stian described.
> One of the sticking points that I encountered with XSOM was difficulties
> in using it to parse the schema from a wsdl as a whole rather than just
> the extracted schema. For simple cases this wasn't a problem, but I
> could see difficulties with handling schema's that a split across
> multiple files, or wsdl's that a composite of multiple wsdl's. Are you
> able to handle these scenarios with your component?
>
>
> cheers,
> Stuart.
>
>> Dmitry
>>
>>
>>> 2009/3/31 Dmitry <[email protected]>:
>>>
>>>
>>>
>>>
>>>> It is based on wsdl4j, jax-ws 2.1 (dispatcher for the execution) and xsom
>>>> (part of jaxb) for the schema parsing.
>>>> I just started working on it, but it already works (at least as a concept).
>>>>
>>>> I know that it's possible to include in Taverna third-party plug-ins (Moby
>>>> does it).
>>>> Could you please give me a hint how can I integrate it with Taverna?
>>>> For example trying to replace XML-splitter with my own XML-constructor?
>>>>
>>>>
>>>>
>>> Sounds interesting!
>>>
>>> What you probably want to start with is have a look at how the current
>>> wsdl-activity works - you could then make your own activity by being
>>> "inspired".
>>>
>>> The latest code for wsdl-activity is split in three: The wsdl-activity
>>> [1] which contains two Activity implementations for *executing* WSDL
>>> activivities. One of these is the splitter, the other one is invoking
>>> the activity itself.
>>>
>>> Then there's the bindings to the user interface (the workbench) so
>>> that one can find WSDL activities (by pasting in a WSDL location), add
>>> XML splitters, etc, these are in wsdl-activity-ui [2].
>>>
>>> Last, there's a little library we wrote that does the actual WSDL
>>> invocation and Schema parsing (your areas of interest, I guess) -
>>> these are in wsdl-generic [3].
>>>
>>> There are two ways to go with this, we could let wsdl-activity support
>>> both "libraries" (you could configure how you want to do the
>>> invocation, as one can do in SOAP-UI), or you can just "fork out" your
>>> own activity. The first solution would probably be cleanest, but given
>>> that your library is still in it's early stages I guess the APIs are
>>> not settled yet - and we would need to agree on some common ground API
>>> for doing that.
>>>
>>> To see if things are working first I would first try to make my own
>>> activity, say wsdl-jaxws-activity.
>>>
>>>
>>> Long term we've wanted to get rid of the XML splitters, and have a
>>> dialogue pop up, similar to how you can configure BioMart activities
>>> in Taverna already, and perhaps also a bit similar to your screenshot.
>>> The idea was that you should be able to tick off which elements (and
>>> attributes!) of the schema you want to provide/extract - even if they
>>> are several levels down. In that way you can end up with just one
>>> processor per WSDL service, and it will be customized with input and
>>> output ports generated for those ticked off parts of the schema.
>>>
>>> We've not done any work on this, but if you get your stuff working as
>>> it's own activity, then this could of course also be an interesting
>>> direction to go next!
>>>
>>> BTW - does your library understand inheritance and abstract types..?
>>>
>>>
>>> [1]
>>> http://taverna.googlecode.com/svn/taverna/engine/net.sf.taverna.t2.activities/trunk/wsdl-activity/
>>> [2]
>>> http://taverna.googlecode.com/svn/taverna/ui/net.sf.taverna.t2.ui-activities/trunk/wsdl-activity-ui/
>>> [3]
>>> http://taverna.googlecode.com/svn/taverna/utils/net.sf.taverna.wsdl-generic/trunk/
>>>
>>>
>>>
>>>
>>
>> ------------------------------------------------------------------------------
>> _______________________________________________
>> taverna-hackers mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/taverna-hackers
>> Developers Guide: http://www.mygrid.org.uk/usermanual1.7/dev_guide.html
>> FAQ: http://www.mygrid.org.uk/wiki/Mygrid/TavernaFaq
>>
>>
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> taverna-hackers mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/taverna-hackers
> Developers Guide: http://www.mygrid.org.uk/usermanual1.7/dev_guide.html
> FAQ: http://www.mygrid.org.uk/wiki/Mygrid/TavernaFaq
>
>
>
------------------------------------------------------------------------------
_______________________________________________
taverna-hackers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/taverna-hackers
Developers Guide: http://www.mygrid.org.uk/usermanual1.7/dev_guide.html
FAQ: http://www.mygrid.org.uk/wiki/Mygrid/TavernaFaq