Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Swordfish Documentation: Architecture: Dynamic Endpoint Resolution"

(Desription)
(Implementation)
 
(26 intermediate revisions by the same user not shown)
Line 4: Line 4:
  
 
== Description ==
 
== Description ==
=== Design ===
 
 
Swordfish supports the connection to different service registries in order to allow  dynamic endpoint resolution. This flexibility is realized through the service registry plugin.
 
Swordfish supports the connection to different service registries in order to allow  dynamic endpoint resolution. This flexibility is realized through the service registry plugin.
 
The Service Registry Plugin consists of the following components:
 
The Service Registry Plugin consists of the following components:
* ServiceResolver - resolves information about the service endpoints for specified service using endpoint document providers and endpoint extractors
+
* [http://www.eclipse.org/swordfish/docs/apidocs/org/eclipse/swordfish/core/resolver/ServiceResolver.html ServiceResolver] - resolves information about the service endpoints for specified service using endpoint document providers and endpoint extractors
* EndpointDocumentProvider - is responsible for retrieval of service description from different kinds of location. Different implementations of the EndpointDocumentProvider can be used to get the service descriptions from local filesystem or from a remote registry.
+
* [http://www.eclipse.org/swordfish/docs/apidocs/org/eclipse/swordfish/core/resolver/registry/EndpointDocumentProvider.html EndpointDocumentProvider] - is responsible for retrieval of service description from different kinds of location. Different implementations of the EndpointDocumentProvider can be used to get the service descriptions from local filesystem or from a remote registry.
* EndpointExtractor - extracts endpoint parts (e.g. endpoint address, transport protocol) from the service description representation. At the same time multiple endpoint extractors can be registered in the system, each suitable for processing one type of service description document (e.g. extractor for WSDL 1.1 based service descriptions, extractor for WSDL 2.0 and so on).
+
* [http://www.eclipse.org/swordfish/docs/apidocs/org/eclipse/swordfish/core/resolver/registry/EndpointExtractor.html EndpointExtractor] - extracts endpoint parts (e.g. endpoint address, transport protocol) from the service description representation. At the same time multiple endpoint extractors can be registered in the system, each suitable for processing one type of service description document (e.g. [http://www.eclipse.org/swordfish/docs/apidocs/org/eclipse/swordfish/internal/resolver/backend/base/wsdl11/WSDL11EndpointExtractor.html extractor for WSDL 1.1 based service descriptions], extractor for WSDL 2.0 and so on).
  
  
==== API ====
+
=== API ===
[[Image:RegistryAPIPackage.png]]
+
* [http://www.eclipse.org/swordfish/docs/apidocs/org/eclipse/swordfish/core/package-summary.html org.eclipse.swordfish.core]
 +
* [http://www.eclipse.org/swordfish/docs/apidocs/org/eclipse/swordfish/core/resolver/package-summary.html org.eclipse.swordfish.core.resolver]
 +
* [http://www.eclipse.org/swordfish/docs/apidocs/org/eclipse/swordfish/core/resolver/provider/package-summary.html org.eclipse.swordfish.core.resolver.provider]
 +
* [http://www.eclipse.org/swordfish/docs/apidocs/org/eclipse/swordfish/core/resolver/registry/package-summary.html org.eclipse.swordfish.core.resolver.registry]
  
==== Main component classes ====
+
=== Main component classes ===
[[Image:ServiceRegistryCommunicationComponents.png]]
+
  
==== Processing sequence ====
+
[[Image:ServiceRegistryComponents.png]]
The endpoint resolution process is described by the following scenario:
+
# ServiceResolver gets all EndpointDocumentProviders registered at runtime and chooses one with the highest priority. The chosen provider is then queried for service description documents corresponding to the specified service interface. All found documents are returned from provider as collection of the ServiceDescription objects where each ServiceDescription represents one raw description document.
+
# ServiceResolver gets all registered EndpointExtractors and uses them to extract endpoint description information from received ServiceDescriptions. At this step it also performs [[Swordfish_Documentation:_Architecture:_Policy_Trading_Plugin | policy trading ]] which allows to exclude non-matching service descriptions from the extraction process. Extracted endpoint descriptions are grouped as collection of EndpointDescription objects and returned to caller.
+
  
[[Image:EndpointResolution.png]]
+
=== Processing sequence  ===
 +
 
 +
The endpoint resolution process is described by the following scenario:
 +
 
 +
#ServiceResolver gets all EndpointDocumentProviders registered at runtime and chooses one with the highest priority. The chosen provider is then queried for service description documents corresponding to the specified service interface. All found documents are returned from provider as collection of the ServiceDescription objects where each ServiceDescription represents one raw description document.
 +
#ServiceResolver gets all registered EndpointExtractors and uses them to extract endpoint description information from received ServiceDescriptions. At this step it also performs [[Swordfish Documentation: Architecture: Policy Trading Plugin|policy trading ]] which allows to exclude non-matching service descriptions from the extraction process. Extracted endpoint descriptions are grouped as collection of EndpointDescription objects and returned to caller.
 +
 
 +
[[Image:EndpointResolution new.png]]
  
 
=== Implementation ===
 
=== Implementation ===
==== Involved bundles ====
+
* [http://dev.eclipse.org/viewsvn/index.cgi/trunk/rt/org.eclipse.swordfish.api/?root=SOA_SWORDFISH org.eclipse.swordfish.core.api], [http://dev.eclipse.org/viewsvn/index.cgi/trunk/rt/org.eclipse.swordfish.core.resolver/?root=SOA_SWORDFISH org.eclipse.swordfish.core.resolver] (core interfaces)
* [http://dev.eclipse.org/viewsvn/index.cgi/trunk/rt/org.eclipse.swordfish.api/?root=RT_SWORDFISH org.eclipse.swordfish.core.api] (core interfaces)
+
* [http://dev.eclipse.org/viewsvn/index.cgi/trunk/rt/org.eclipse.swordfish.plugins.resolver.backend.base/?root=SOA_SWORDFISH org.eclipse.swordfish.plugins.resolver.backend.base] (basic implementations for endpoint descriptions and WSDL extraction)
* [http://dev.eclipse.org/viewsvn/index.cgi/trunk/rt/org.eclipse.swordfish.core.resolver/?root=RT_SWORDFISH org.eclipse.swordfish.core.resolver] (core interfaces)
+
* [http://dev.eclipse.org/viewsvn/index.cgi/trunk/rt/org.eclipse.swordfish.plugins.resolver.backend.local/?root=SOA_SWORDFISH org.eclipse.swordfish.plugins.resolver.backend.local] (resolve endpoints using the local file system)
* [http://dev.eclipse.org/viewsvn/index.cgi/trunk/rt/org.eclipse.swordfish.plugins.resolver.backend.base/?root=RT_SWORDFISH org.eclipse.swordfish.plugins.resolver.backend.base] (basic implementations for endpoint descriptions and WSDL extraction)
+
* [http://dev.eclipse.org/viewsvn/index.cgi/trunk/rt/org.eclipse.swordfish.plugins.resolver.backend.remote/?root=SOA_SWORDFISH org.eclipse.swordfish.plugins.resolver.backend.remote] (resolve endpoints using a Swordfish Service Registry)
* [http://dev.eclipse.org/viewsvn/index.cgi/trunk/rt/org.eclipse.swordfish.plugins.resolver.backend.local/?root=RT_SWORDFISH org.eclipse.swordfish.plugins.resolver.backend.local] (resolve endpoints using the local file system)
+
* [http://dev.eclipse.org/viewsvn/index.cgi/trunk/rt/org.eclipse.swordfish.plugins.resolver.backend.remote/?root=RT_SWORDFISH org.eclipse.swordfish.plugins.resolver.backend.remote] (resolve endpoints using a Swordfish Service Registry)
+
  
 
== See also ==
 
== See also ==
[http://www.eclipse.org/swordfish/assets/whitepaper.pdf Eclipse Swordfish – an Open Source SOA Runtime Framework for the Enterprise]
 
 
 
[[Swordfish_Documentation:_Architecture:_Policy_Trading_Plugin | Description of Swordfish policy trading ]]
 
[[Swordfish_Documentation:_Architecture:_Policy_Trading_Plugin | Description of Swordfish policy trading ]]
 +
 +
[http://www.eclipse.org/swordfish/docs/apidocs Swordfish JavaDoc]
 +
<br/><br/>
 +
----
 +
[[Swordfish_Documentation:_Architecture | Architecture overview ]]

Latest revision as of 04:39, 22 February 2010

Overview

In Swordfish the relationship between components using a service (consumers) and components providing a service (providers) need not be static. Using dynamic endpoint resolution a consumer can look up a provider based on a service interface and a policy (a list of non-functional capabilities and requirements) from a service registry (a database of existing service providers and their policies).

Description

Swordfish supports the connection to different service registries in order to allow dynamic endpoint resolution. This flexibility is realized through the service registry plugin. The Service Registry Plugin consists of the following components:

  • ServiceResolver - resolves information about the service endpoints for specified service using endpoint document providers and endpoint extractors
  • EndpointDocumentProvider - is responsible for retrieval of service description from different kinds of location. Different implementations of the EndpointDocumentProvider can be used to get the service descriptions from local filesystem or from a remote registry.
  • EndpointExtractor - extracts endpoint parts (e.g. endpoint address, transport protocol) from the service description representation. At the same time multiple endpoint extractors can be registered in the system, each suitable for processing one type of service description document (e.g. extractor for WSDL 1.1 based service descriptions, extractor for WSDL 2.0 and so on).


API

Main component classes

ServiceRegistryComponents.png

Processing sequence

The endpoint resolution process is described by the following scenario:

  1. ServiceResolver gets all EndpointDocumentProviders registered at runtime and chooses one with the highest priority. The chosen provider is then queried for service description documents corresponding to the specified service interface. All found documents are returned from provider as collection of the ServiceDescription objects where each ServiceDescription represents one raw description document.
  2. ServiceResolver gets all registered EndpointExtractors and uses them to extract endpoint description information from received ServiceDescriptions. At this step it also performs policy trading which allows to exclude non-matching service descriptions from the extraction process. Extracted endpoint descriptions are grouped as collection of EndpointDescription objects and returned to caller.

EndpointResolution new.png

Implementation

See also

Description of Swordfish policy trading

Swordfish JavaDoc


Architecture overview

Back to the top