OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
New feature coming for freebxml Reg/Rep (Omar): SOAP Interceptors!

There is a new feature being reviewed and tested for the open-source freebxml 
Registry/Repository implementation (Omar):  SOAP Interceptors!  

The purpose of this email is to solicit feedback from the user community as 
to what you think of this impending feature (note: it's not available 
yet...not even in CVS), what kinds of uses you think it might be good for and 
the like.

So make your opinion heard!


The SOAP Interceptor Plugin allows registry users to selectively intercept 
SOAP requests and to modify these requests (and related responses) before the 
registry processes them.   

Target Use Cases:

The principle use case for this feature is enable Omar to be able to 
transparently handle domain-specific vocabularies for requests, and hide the 
ebXML Reg/Rep request/response plumbing/schema complexities.

For example, you could provide HL7 or UBL vocabulary support so that the 
registry can receive an HL7 or UBL-based request and know how to translate 
that into native ebXML Registry/Repository syntax and execute it, basically 
providing a nice way to map a domain request onto the RIM.

A more advanced use case, leveraging SOAPInterceptors' ability to create 
dynamic RegistryItems from the original request, is automatic code generation 
of RIM mapping XSLT's. For example, a SOAPInterceptor can transform the 
request input into a new mapping XSLT and store that XSLT transform in the 
Repository as a RepositoryItem, for later use.

Another use case would be to provide a transparent upgrade path when Omar or 
ebXML Reg/Rep specfications change the schemas and/or syntax of requests that 
the registry accepts. A SOAP Interceptor could be provided that would 
translate older syntax (ie. Omar 3.0 or ebXML Specification 3.) requests into 
the new formats (ie Omar 4.0 or future ebXML Reg/Rep specifications). A good 
example would be if the XML-based query syntax was replaced with XQuery 
capability. Older XML-based syntax could be intercepted and transformed into 
XQuery format, and thus lessen the conversion burden on existing users, and 
provide them with a more palatable and easer upgrade path, requiring little 
or no rework of their existing applications.

SOAP Interceptor Framework:

This feature provides a complete and flexible SOAP Request/Response 
interceptor framework (SOAPInterceptorManager) implementation, along with an 
off-the-shelf XSLT Interceptor (XSLTSOAPInterceptor) which can do dynamic 
transformations on incoming and outgoing SOAP requests. Other interceptor 
implementations can be added as well, and we expect to provide a Pipelined 
XSLT Interceptor not too far down the road.

The provided XSLTSOAPInterceptor implementation allows you to use a XSLT 
transform to alter incoming requests and outgoing responses. The XSLT 
interceptor implementation can also create new "attachments" as part of the 
transformation process, so it's possible to process a request in a domain-
specific XML vocabulary that can also create RegistryItems. This feature is 
intended for XML-based artefacts like XSLT's, WSDL's, etc, that need to be 
dynamically generated.

The definitions and configuration of the interceptors are stored in the 
registry (as ExtrinsicObjects of a specific type. If you change an 
interceptor definition, then the SOAPInterceptorManager detects this and 
reloads itself, thus providing real-time reconfiguration capability.


Omar comes with demos which show how the SOAPInterceptorManager and 
XSLTSOAPInterceptor can be used. Comprehensive unit tests are also included.

More details on this impending feature can be found here:


Please feel free to pass on any thoughts you might have about this new 

Andrzej Jan Taramina
Chaeron Corporation: Enterprise System Solutions

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]