You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by cs...@apache.org on 2016/03/14 18:52:49 UTC

svn commit: r1734975 - /aries/site/trunk/content/modules/rsa.mdtext

Author: cschneider
Date: Mon Mar 14 17:52:49 2016
New Revision: 1734975

URL: http://svn.apache.org/viewvc?rev=1734975&view=rev
Log:
CMS commit to aries by cschneider

Added:
    aries/site/trunk/content/modules/rsa.mdtext   (with props)

Added: aries/site/trunk/content/modules/rsa.mdtext
URL: http://svn.apache.org/viewvc/aries/site/trunk/content/modules/rsa.mdtext?rev=1734975&view=auto
==============================================================================
--- aries/site/trunk/content/modules/rsa.mdtext (added)
+++ aries/site/trunk/content/modules/rsa.mdtext Mon Mar 14 17:52:49 2016
@@ -0,0 +1,85 @@
+Title: Remote Service Admin
+
+# RSA (Remote Service Admin)
+
+The Aries Remote Service Admin (RSA) project allows to transparently use OSGi services for remote communication. 
+OSGi services can be marked for export by adding a service property `service.exported.interfaces=*`. Various other properties 
+can be used to customize how the service is to be exposed.
+
+For more information, check out section "122 JPA Service Specification
+Version 1.0" in the "OSGi Service Platform Enterprise Specification,
+Release 4, Version 4.2" available for public download from the [OSGi Alliance](http://www.osgi.org/Download/Release4V43).
+
+## Architecture
+
+![Remote Service Admin Architecture overview][1]
+
+### Some definitions
+
+* EndpointDescription Describes a remote service using service interfaces, remote url and all other properties to import the remote service.
+* EndpointListener a service that is to be notified when remote Endpoints described by OSGi filters appear or disappear.
+
+### [Topology Manager][2]
+
+* Listens to local services and decides which to expose. It can also add properties to change the way services are exposed. 
+  For the services to be exported it calls RemoteServiceAdmin.exportService to do the actual export. Then notifies EndpointListeners
+  about the new Endpoint.
+* Listens for service requests from consumers and creates EndpointListeners for these interests.
+
+The TopologyManager by default exposes all suitably marked local services for export and imports all service interests with matching 
+remote Endpoints.
+
+It is the best place to implement system wide governance rules. Some examples what can be done:
+
+* Enhancing all exposed remote endpoints with SSL, basic auth, logging
+* Exporting OSGi services with annotations for JAX-WS or JAX-RS even when not specially marked for export
+
+According to its role the TopologyManager of course does not directly implement the enhancements above. It simply creates the necessary
+calls to a suitable RemoteServiceAdmin.
+
+### [Remote Service Admin][3]
+
+Is called by the Topology Manager to expose local services as remote endpoints and create local proxy services as clients for 
+remote endpoints.
+
+Aries RSA has a custom SPI [DistributionProvider][4] that allows to easily create new transports and serializations.
+Existing providers are:
+
+  - [CXF][5] (JAXRS, JAXWS)
+  - [TCP][6] (Light weight Java Serialization over TCP)
+
+### Discovery
+
+A discovery implementation uses EndpointListeners to listen for local Endpoints and publishs them for other containers.
+It also listens to remote Endpoints and notifies EndpointListeners about their presence.
+
+Existing implementations:
+
+  - [Local discovery][7] using xml descriptors
+  - [Zookeeper based discovery][8]
+
+## A simple example using Apache Karaf
+
+See [EchoTCP example][9]. Follow the Readme to install the example in Apache Karaf.
+
+The EchoTCP example implements a simple echo service that can be called remotely. 
+The example uses declarative services to publish and bind services.
+
+### Modules
+
+  - api : EchoService interface
+  - service : EchoService implementation
+  - consumer : Small consumer that uses the EchoService
+
+The example installation uses the tcp transport to do the remoting but the example code is not tied to any transport.
+
+
+  [1]: https://cwiki.apache.org/confluence/download/attachments/30739778/remote-service-admin-spec.png?version=2&modificationDate=1362365400000&api=v2
+  [2]: https://github.com/apache/aries-rsa/tree/master/topology-manager
+  [3]: https://github.com/apache/aries-rsa/tree/master/rsa
+  [4]: https://github.com/apache/aries-rsa/blob/master/spi/src/main/java/org/apache/aries/rsa/spi/DistributionProvider.java
+  [5]: http://cxf.apache.org/distributed-osgi.html
+  [6]: https://github.com/apache/aries-rsa/tree/master/provider/tcp
+  [7]: https://github.com/apache/aries-rsa/tree/master/discovery/local
+  [8]: https://github.com/apache/aries-rsa/tree/master/discovery/zookeeper-server
+  [9]: https://github.com/apache/aries-rsa/tree/master/examples/echotcp
\ No newline at end of file

Propchange: aries/site/trunk/content/modules/rsa.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native