Skip to content

Easysoa Light architectural issues

JGuillemotte edited this page Oct 4, 2011 · 12 revisions

How do we store the services definitions for REST/Light services?

Problem: The first EasySOA Light demo embeds a solution to build an interface to use SOAP services, by applying an XSL transformation to the WSDL. How can we deal with REST services, where the service definition is often not formatted? What about the EasySOA Light services, that have been created by scripting, or even with point and click UI?

Possible solutions: TODO

HTML Form generator: FIrst solution was to use a XSLT file to transform a WSDl file in an HTML Form. This solution works but has some disadvantages. For instance, it is not possible to work with templates.

An other solution is to use Java api's to parse a WSDl file coupled with one (or severeval) velocity template(s).

Here is a list of WSDL parsers & models :

  • EasyWSDl : There is 2 versions. Version 2.x developped in the OW2 consortium and version 3.x developped by petal team. Version 2 can work with WSDl 1.1 and 2.0. Version 3 can only work with WSDL 1.1 for the moment. It will be able to work with WSDL 2.0 but when ? Big changes between V2.x and V3.x in the package name, some classes have been removed.

  • Apache Woden : Only works with WSDL 2.0, a compatibility with WSDL 1.1 will be implemented but when ? A solution will be to transform a WSDL 1.1 in WSDl 2.0 with an XSLT file found (http://www.w3.org/2006/02/wsdl11to20.xsl) before to work with Woden. Last update in february 2011 (Version 1.0M9). The XSLT file (wsdl11to20.xsl) to trasnform WSDl 1.1 to WSDL2.0 doesn't works, a lot of errors are signaled in Eclipse. In addition, this file is old and not maintained since 2006. The transformation can be made natively by Woden since the version 1.0M9. In addtion, there is a version problem with the library xml schema : Woden uses the version 1.4.7 and is not compatible with the version 2.0 used by FraSCAti.

  • WSDl4j : Only for WSDL 1.1.

  • Membrane SOA Model : On the official site, not a lot of documentation. Where to get the api jar ? Just a demo on a zip package. Don find if it is compatible with WSDL 1.1 or/and WSDL 2.0.

  • Oracle WSDl parser : Oracle product only available with JDevelopper ...

Other alternatives :

  • custom object model ex. built using XMLBeans or JiBX...

  • how do service stacks do ? They use one of those solutions : CXF only supports 1.1, Petals also lately (EasyWSDL 3 on custom XML model easybox) but before used EasyWSDL 2 supporting both

  • in the spirit of the ProxyFactory proxy SOAP to REST, then scaffold REST (rather than SOAP using WSDL) :

    • using JAXWS - JAXRS equivalence : is done easiest using CXF (HOWEVER FraSCAti doesn't support it yet ,but probably not hard). CXF exposes a WADL (rather than WSDL), which is a bit new and not widely used / supported, and doesn't bring anything else beyond what WSDL does, so rather use SOAP/WSDL.
    • using custom REST schema : ex. SPORE specification using RX schema. A bit too specific to SPORE i.e. REST client generation using dynamic techniques (so doesn't address SOAP to REST proxy, nor static languages).

Here are interesting criteria for our use case (for now, scaffolder, maybe others later) :

  • links service to binding, binding to portType, & vice versa
  • links messages to types
  • handles anonymous (vs declared) types, external (i.e. XSD import, vs embedded) types, possibly additional type helpers
  • also : supports several WSDL version (but moot point, see above), used & nice community...

To test coverage, of WSDL support, we manage a set of WSDLs that is representative of all above cases, and enrich it when encountering a new one, as well as a companion test framework. For now it is in easysoa-proxy's scaffoldingProxy project.

TODO

  • evaluate the most promising solutions. Once done, try to put them under a unified interface, possibly also the XSLT solution.
  • integrate it in the release & Light

...

Clone this wiki locally