cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache CXF > DOSGi Architecture
Date Thu, 16 May 2013 17:52:00 GMT
<html>
<head>
    <base href="https://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/2042/9/15/_/styles/combined.css?spaceKey=CXF&amp;forWysiwyg=true"
type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://cwiki.apache.org/confluence/display/CXF/DOSGi+Architecture">DOSGi
Architecture</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://cwiki.apache.org/confluence/display/~christian%2Bschneider">Christian
Schneider</a>
    </h4>
        <br/>
                         <h4>Changes (1)</h4>
                                 
    
<div id="page-diffs">
                    <table class="diff" cellpadding="0" cellspacing="0">
    
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >h3. Topology Manager <br> <br></td></tr>
            <tr><td class="diff-changed-lines" ><span class="diff-changed-words">{gliffy:name=cxf-dosgi-topology-manager|version=<span
class="diff-deleted-chars"style="color:#999;background-color:#fdd;text-decoration:line-through;">3</span><span
class="diff-added-chars"style="background-color: #dfd;">4</span>}</span> <br></td></tr>
            <tr><td class="diff-unchanged" > <br>h3. Discovery Ditributed
with Zookeeper <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
    
            </table>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <h2><a name="DOSGiArchitecture-DOSGiintheOSGispec"></a>DOSGi in
the OSGi spec</h2>

<p>Distributed OSGi is described in the <a href="http://www.osgi.org/Download/File?url=/download/r4v43/osgi.core-4.3.0.pdf"
class="external-link" rel="nofollow">OSGi core spec</a> in chapter 6 (Remote Services)
and in the <a href="http://www.osgi.org/Download/File?url=/download/r4v43/osgi.cmpn-4.3.0.pdf"
class="external-link" rel="nofollow">OSGi compendium spec </a>in chapter 122 (Remote
Service Admin Service).</p>


<p>The Remote Services spec describes a module named Distribution Provider that makes
OSGi services available across container boundaries. The idea is to use special service properties
to mark services that are to be exported remotely. The Distribution provider will create Endpoints
for these services that are available outside the container. On the consumer side the Distribution
Provider can create local OSGi services that act as proxies for the remote services and allow
service consumers to use them to call the remote service.</p>



<map name='GLIFFY_MAP_30739778_remote-services-spec'></map>
<table width="100%">
    <tr>
        <td align="left">
            <table>
                <caption align="bottom">
                                    </caption>
                <tr>
                    <td>
                        <img style="border: none; width: 900px; height: 480px;"
                                                          usemap="#GLIFFY_MAP_30739778_remote-services-spec"
                                                          src="/confluence/download/attachments/30739778/remote-services-spec.png?version=4&amp;modificationDate=1362383433000"
                             alt="A&amp;#32;Gliffy&amp;#32;Diagram&amp;#32;named&amp;#58;&amp;#32;remote&amp;#45;services&amp;#45;spec"/>
                    </td>
                </tr>
            </table>
        </td>
    </tr>
</table>




<p>The Remote Service Admin spec then splits the Distribution provider into separate
modules that communicate through defined interfaces. This allows to change or enhance parts
of an existing DOSGi implementation without having to reimplement the whole Distribution provider.</p>


<map name='GLIFFY_MAP_30739778_remote-service-admin-spec'></map>
<table width="100%">
    <tr>
        <td align="left">
            <table>
                <caption align="bottom">
                                    </caption>
                <tr>
                    <td>
                        <img style="border: none; width: 897px; height: 600px;"
                                                          usemap="#GLIFFY_MAP_30739778_remote-service-admin-spec"
                                                          src="/confluence/download/attachments/30739778/remote-service-admin-spec.png?version=2&amp;modificationDate=1362383400000"
                             alt="A&amp;#32;Gliffy&amp;#32;Diagram&amp;#32;named&amp;#58;&amp;#32;remote&amp;#45;service&amp;#45;admin&amp;#45;spec"/>
                    </td>
                </tr>
            </table>
        </td>
    </tr>
</table>



<p>Modular Distribution Provider described in the Remote Service Admin Service spec.</p>

<h3><a name="DOSGiArchitecture-ModulesandtheirRoles"></a>Modules and their
Roles</h3>

<ul>
	<li><b>Discovery:</b> Detects available Remote Endpoints and notifies EndpointListeners</li>
	<li><b>Topology Manager:</b> Monitors available and requested local OSGi
Services. Monitors remote OSGi services using an EndpointListener. Delegates creation of Endpoints
and Proxies to RemoteServiceAdmin.</li>
	<li><b>Remote Service Admin:</b> Creates and Destroys Endpoints and Proxys
and notifies RemoteServiceAdminListeners. Only reacts to commands sent over the Remote Service
Admin interface.</li>
</ul>


<p>Notes:</p>
<ul>
	<li>There can be more than one Discovery Impl and Topology Manager Impl at the same
time</li>
	<li>For one service the Remote Service Admin can create more than one endpoint (e.g
SOAP and Rest)</li>
</ul>




<h2><a name="DOSGiArchitecture-CXFDOSGi"></a>CXF DOSGi</h2>

<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Spec Module<br class="atl-forced-newline" /> </th>
<th class='confluenceTh'> CXF Module<br class="atl-forced-newline" /> </th>
<th class='confluenceTh'> Description<br class="atl-forced-newline" /> </th>
</tr>
<tr>
<td class='confluenceTd'> Discovery<br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> cxf-dosgi-ri-discovery-local </td>
<td class='confluenceTd'> Describes Remote Endpoints using local configuration<br
class="atl-forced-newline" /> </td>
</tr>
<tr>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> cxf-dosgi-ri-discovery-distributed </td>
<td class='confluenceTd'> Discovers and Announces Endpoints using a Zookeeper Server<br
class="atl-forced-newline" /> </td>
</tr>
<tr>
<td class='confluenceTd'> Topology Manager<br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> cxf-dosgi-ri-topology-manager </td>
<td class='confluenceTd'> Basic Topology Manager Implementation<br class="atl-forced-newline"
/> </td>
</tr>
<tr>
<td class='confluenceTd'> Remote Service Admin <br class="atl-forced-newline" />
</td>
<td class='confluenceTd'> cxf-dosgi-ri-dsw-cxf </td>
<td class='confluenceTd'> Creates Endpoints and Proxies using the CXF Framework<br
class="atl-forced-newline" /> </td>
</tr>
</tbody></table>
</div>


<p>Shows how the CXF DOSGi modules map to the spec. In the next chapters we look into
each of these modules.</p>

<h3><a name="DOSGiArchitecture-TopologyManager"></a>Topology Manager</h3>



<map name='GLIFFY_MAP_30739778_cxf-dosgi-topology-manager'></map>
<table width="100%">
    <tr>
        <td align="left">
            <table>
                <caption align="bottom">
                                    </caption>
                <tr>
                    <td>
                        <img style="border: none; width: 1217px; height: 773px;"
                                                          usemap="#GLIFFY_MAP_30739778_cxf-dosgi-topology-manager"
                                                          src="/confluence/download/attachments/30739778/cxf-dosgi-topology-manager.png?version=4&amp;modificationDate=1368726688755"
                             alt="A&amp;#32;Gliffy&amp;#32;Diagram&amp;#32;named&amp;#58;&amp;#32;cxf&amp;#45;dosgi&amp;#45;topology&amp;#45;manager"/>
                    </td>
                </tr>
            </table>
        </td>
    </tr>
</table>




<h3><a name="DOSGiArchitecture-DiscoveryDitributedwithZookeeper"></a>Discovery
Ditributed with Zookeeper</h3>



<map name='GLIFFY_MAP_30739778_cxf-dosgi-discovery-distributed'></map>
<table width="100%">
    <tr>
        <td align="left">
            <table>
                <caption align="bottom">
                                    </caption>
                <tr>
                    <td>
                        <img style="border: none; width: 1191px; height: 1229px;"
                                                          usemap="#GLIFFY_MAP_30739778_cxf-dosgi-discovery-distributed"
                                                          src="/confluence/download/attachments/30739778/cxf-dosgi-discovery-distributed.png?version=3&amp;modificationDate=1362383313000"
                             alt="A&amp;#32;Gliffy&amp;#32;Diagram&amp;#32;named&amp;#58;&amp;#32;cxf&amp;#45;dosgi&amp;#45;discovery&amp;#45;distributed"/>
                    </td>
                </tr>
            </table>
        </td>
    </tr>
</table>




<h3><a name="DOSGiArchitecture-RemoteServiceAdmin"></a>Remote Service Admin</h3>



<map name='GLIFFY_MAP_30739778_cxf-dosgi-remote-service-admin'></map>
<table width="100%">
    <tr>
        <td align="left">
            <table>
                <caption align="bottom">
                                    </caption>
                <tr>
                    <td>
                        <img style="border: none; width: 200px; height: 200px;"
                                                          usemap="#GLIFFY_MAP_30739778_cxf-dosgi-remote-service-admin"
                                                          src="/confluence/download/attachments/30739778/cxf-dosgi-remote-service-admin.png?version=2&amp;modificationDate=1362382251000"
                             alt="A&amp;#32;Gliffy&amp;#32;Diagram&amp;#32;named&amp;#58;&amp;#32;cxf&amp;#45;dosgi&amp;#45;remote&amp;#45;service&amp;#45;admin"/>
                    </td>
                </tr>
            </table>
        </td>
    </tr>
</table>



    </div>
        <div id="commentsSection" class="wiki-content pageSection">
        <div style="float: right;">
            <a href="https://cwiki.apache.org/confluence/users/viewnotifications.action"
class="grey">Change Notification Preferences</a>
        </div>
        <a href="https://cwiki.apache.org/confluence/display/CXF/DOSGi+Architecture">View
Online</a>
        |
        <a href="https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=30739778&revisedVersion=18&originalVersion=17">View
Changes</a>
                |
        <a href="https://cwiki.apache.org/confluence/display/CXF/DOSGi+Architecture?showComments=true&amp;showCommentArea=true#addcomment">Add
Comment</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>

Mime
View raw message