For now, each proxy (scaffolder i.e. WSDL2HTML and REST2SOAP, monitoring) is instanciated once and calls proxied service using Apache HTTP Client. How to do this call in a more FraSCAti-like way ? Alternatives :
keep proxies as singletons, but
add in FraSCAti the ability to call a web service the "message" way, i.e. using XML content rather than objects, kind of an outgoing binding.http with an HTTPMessage (or Servlet) interface
_this is interesting in discovery phase_ when services are not yet known, but less interesting later
instantiate a new proxy "on demand" for each proxied service
For instance when the user wants to call existing services that have to be sandboxed, or to monitor all services in his architecture, or to instantiate one dedicated WS proxy for each WS service discovered using the previous method
This requires :
in addition to an instantiation manager ("ProxyFactory"),
for non-SOAP HTTP ("RESTful") services,
a non-SOAP HTTP client (outoing) binding and interface, actually like said "HTTPMessage".
An alternative is to go full SOAP (or JAXRS-based REST) and handle non JAXRS-based REST by designing a JAXRS interface in front of it, possibly in a helped, automatic and dynamic way thanks to ex. machine learning on monitored exchanges, bridges from Google Discovery, SPoRE spec and RX Schema.
for proxies used in HTTP proxy mode (monitoring, fuse),
check that this mode works in FraSCAti. Notably, will FraSCAti out-of-the-box URL-based service routing redirect to the right FraSCAti Services according to the actual target HTTP URL (which differs from HOST header in HTTP proxy) ?
An alternative is to only support HTTP tunnel mode i.e. classic HTTP which FraSCAti supports out of the box - not a bad alternative since both require changing client-side properties. Such routing could be done either outside using connect or inside if possible using Camel or a custom proxy using an outgoing binding.http.
Note that these proxies only provide non-functional, hidden to business features.
(if this still implies that binding.http is used) solve #37 Problem to close a Jetty HTTP binding component else binding.http won't be able to be stopped.
FraSCAti design and deployment :
FraSCAti instantiation & deployment manager : actually works already in Web Explorer and even standalone, will be furthered in FraSCAti ProxyFactory & Studio
FraSCAti app development : automatic creation of "proxy" composites referencing business interfaces. SCA (abstract components, composition, includes) can be used but is not enough. So generated from (velocity or further MDA) templates, programmatically against the SCA metamodel, directly against the runtime (REST) model to allow for dynamic reconfiguration ?
FraSCAti app configuration : propertizing, similar to above but lighter. For this FraSCAti properties have limits :
they CAN be changed in a single place (the root composite, though that requires to wire all properties in there), but can't be set outside the jar (properties file) => allow external property file, lookup all ${...} properties up to the root composite
they CAN be of complex types (using JAXB properties), but can't be built using code. This requires to use dedicated business services providing them : PropertyProviderService instead of FraSCAti properties, however it removes some (?) of their interesting features.
UPDATE 20120726 probably rather use a model of the configuration state of the component / proxy that will be updatable, just like ExchangeEventHandler's Subscriptions, than FraSCAti properties (though they may be used for init ?? otherwise how to init on-demand proxies ?)
FraSCAti templates composition manager : FraSCAti ProxyFactory, Web Explorer & Studio
Support of any service definition
(any WSDL see #23, but also with authentication or not...) as client or proxy / mockup server - alternatives :
TODO OW TEST IT configuring CXF below FraSCAti (ie Spring cxf-config.xml file, helps ex. by FraSCAti pre-filling with http-conduit according to services) and configuring CXF through FraSCAti, see #27
LATER MAYBE multi runtime. Opens a door for Talend, node.js, bare CXF
Outbound calls from proxies using FraSCAti
For now, each proxy (scaffolder i.e. WSDL2HTML and REST2SOAP, monitoring) is instanciated once and calls proxied service using Apache HTTP Client. How to do this call in a more FraSCAti-like way ? Alternatives :
keep proxies as singletons, but
instantiate a new proxy "on demand" for each proxied service
For instance when the user wants to call existing services that have to be sandboxed, or to monitor all services in his architecture, or to instantiate one dedicated WS proxy for each WS service discovered using the previous method
This requires :
FraSCAti design and deployment :
${...}
properties up to the root compositeSupport of any service definition
(any WSDL see #23, but also with authentication or not...) as client or proxy / mockup server - alternatives :