<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>EclipseSource Blog &#187; rfc119</title>
	<atom:link href="http://eclipsesource.com/blogs/tag/rfc119/feed/" rel="self" type="application/rss+xml" />
	<link>http://eclipsesource.com/blogs</link>
	<description>Eclipse Equinox OSGi</description>
	<lastBuildDate>Fri, 18 May 2012 15:00:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Remote OSGi Declarative Services</title>
		<link>http://eclipsesource.com/blogs/2009/08/04/remote-declarative-services/</link>
		<comments>http://eclipsesource.com/blogs/2009/08/04/remote-declarative-services/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 23:00:31 +0000</pubDate>
		<dc:creator>Scott Lewis</dc:creator>
				<category><![CDATA[syndicate]]></category>
		<category><![CDATA[ecf]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[rfc119]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=2611</guid>
		<description><![CDATA[There is a very cool new tutorial by Bryan Hunt for using ECF&#8216;s implementation of the OSGi Distributed OSGi spec (RFC 119) and OSGi Declarative Services (DS) together to do remote declarative services. In addition to demonstrating the power of combining DS with ECF 3.0&#8242;s support for distributed OSGi services, the tutorial has two other very [...]]]></description>
			<content:encoded><![CDATA[<p>There is a very cool new <a href="http://bryanhunt.wordpress.com/2009/06/20/remote-declarative-osgi-services/">tutorial</a> by Bryan Hunt for using <a href="http://www.eclipse.org/ecf">ECF</a>&#8216;s <a href="http://wiki.eclipse.org/Getting_Started_with_ECF%27s_RFC119_Implementation">implementation</a> of the OSGi Distributed OSGi spec (RFC 119) and OSGi <a href="http://www.eclipse.org/resources/resource.php?id=378">Declarative Services</a> (DS) together to do remote declarative services.</p>
<p>In addition to demonstrating the power of combining DS with ECF 3.0&#8242;s support for distributed OSGi services, the tutorial has two other very cool aspects:</p>
<ul>
<li>It was created by a community member after using these technologies to build their own system</li>
<li>The tutorial will soon be contributed to the ECF documentation section available in the <a href="http://wiki.eclipse.org/ECF">ECF wiki area</a></li>
</ul>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2009/08/04/remote-declarative-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>API Layering for Distributed OSGi</title>
		<link>http://eclipsesource.com/blogs/2009/06/25/api-layering-for-distributed-osgi/</link>
		<comments>http://eclipsesource.com/blogs/2009/06/25/api-layering-for-distributed-osgi/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 19:40:44 +0000</pubDate>
		<dc:creator>Scott Lewis</dc:creator>
				<category><![CDATA[syndicate]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[ecf]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[equinox]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[rfc119]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=2054</guid>
		<description><![CDATA[We&#8217;ve added to our distributed OSGi documentation (with examples+source) for ECF 3.0/Galileo: Distributed OSGi Services with ECF Getting Started with ECF&#8217;s RFC119 Implementation Getting Started Using the ECF Remote Services API We have API layering so service programmers can choose the simplest appropriate mechanism for their system requirements, while still providing access to &#8216;lower-level&#8217; concerns [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://wiki.eclipse.org/Distributed_OSGi_Services_with_ECF"><img class="aligncenter size-full wp-image-2063" title="distributedosgi1small" src="http://eclipsesource.com/blogs/wp-content/uploads/2009/06/distributedosgi1small.PNG" alt=" API Layering for Distributed OSGi" width="227" height="127" /></a></p>
<p>We&#8217;ve added to our distributed OSGi documentation (with examples+source) for ECF 3.0/Galileo:</p>
<ul>
<li><a href="http://wiki.eclipse.org/Distributed_OSGi_Services_with_ECF">Distributed OSGi Services with ECF</a></li>
<li><a href="http://wiki.eclipse.org/Getting_Started_with_ECF%27s_RFC119_Implementation">Getting Started with ECF&#8217;s RFC119 Implementation</a></li>
<li><a href="http://wiki.eclipse.org/Getting_Started_with_Using_the_ECF_Remote_Services_API">Getting Started Using the ECF Remote Services API</a></li>
</ul>
<p><a href="http://wiki.eclipse.org/Getting_Started_with_ECF%27s_RFC119_Implementation"></a></p>
<p>We have API layering so service programmers can choose the simplest appropriate mechanism for their system requirements, while still providing access to &#8216;lower-level&#8217; concerns when necessary:</p>
<ul>
<li>failure handling</li>
<li>synchronous vs. asynchronous remote method invocation</li>
<li>serialization and wire protocol</li>
<li>and so on&#8230;</li>
</ul>
<p>If you have any questions or comments, please let us know on the <a href="https://dev.eclipse.org/mailman/listinfo/ecf-dev">ECF mailing list</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2009/06/25/api-layering-for-distributed-osgi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Distributed OSGi EventAdmin Service</title>
		<link>http://eclipsesource.com/blogs/2009/06/16/distributed-osgi-eventadmin-service/</link>
		<comments>http://eclipsesource.com/blogs/2009/06/16/distributed-osgi-eventadmin-service/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 23:04:18 +0000</pubDate>
		<dc:creator>Scott Lewis</dc:creator>
				<category><![CDATA[syndicate]]></category>
		<category><![CDATA[ecf]]></category>
		<category><![CDATA[equinox]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[rfc119]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=1844</guid>
		<description><![CDATA[For those interested, there&#8217;s a new Distributed OSGi EventAdmin Service remote services example now available. What does this mean? Well, you can now create distributed implementations of OSGi services using JMS or other messaging frameworks for distributing messages to other OSGi frameworks. This is all possible because of ECF&#8217;s provider architecture that allows the creation [...]]]></description>
			<content:encoded><![CDATA[<p>For those interested, there&#8217;s a new <a href="http://wiki.eclipse.org/Distributed_EventAdmin_Service">Distributed OSGi EventAdmin Service</a> remote services example now available.</p>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2009/06/Distributedeventadmin.png"><img src="http://eclipsesource.com/blogs/wp-content/uploads/2009/06/Distributedeventadmin.png" alt="Distributedeventadmin Distributed OSGi EventAdmin Service" title="Distributed OSGi EventAdmin" width="619" height="462" class="alignnone size-full wp-image-1858" /></a></p>
<p>What does this mean? Well, you can now create distributed implementations of OSGi services using JMS or other messaging frameworks for distributing messages to other OSGi frameworks. This is all possible because of ECF&#8217;s provider architecture that allows the creation of a distributed EventAdmin implementation that can use a variety of wire protocols (e.g., XMPP, ActiveMQ).</p>
<p>Please let email the <a href="https://dev.eclipse.org/mailman/listinfo/ecf-dev">ecf-dev</a> list if you have any questions!</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2009/06/16/distributed-osgi-eventadmin-service/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Those Leaky Networks</title>
		<link>http://eclipsesource.com/blogs/2009/05/06/those-leaky-networks/</link>
		<comments>http://eclipsesource.com/blogs/2009/05/06/those-leaky-networks/#comments</comments>
		<pubDate>Wed, 06 May 2009 21:42:36 +0000</pubDate>
		<dc:creator>Scott Lewis</dc:creator>
				<category><![CDATA[syndicate]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[equinox]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[rfc119]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=1423</guid>
		<description><![CDATA[In previous blog posts I&#8217;ve blogged about ECF&#8217;s upcoming implementation of RFC 119. In this post, I would like to jump out of the description of RFC 119 and talk about how the implementation of RFC 119 and ECF remote services fit together&#8230;as our implementation of RFC119 is layered on top of the ECF remote [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://eclipsesource.com/blogs/author/slewis/">previous blog posts</a> I&#8217;ve blogged about ECF&#8217;s upcoming implementation of RFC 119.</p>
<p>In this post, I would like to jump out of the description of RFC 119 and talk about how the implementation of RFC 119 and ECF remote services fit together&#8230;as our implementation of RFC119 is layered on top of the ECF remote services API.</p>
<p>I think of <a href="http://en.wikipedia.org/wiki/Remote_procedure_call">remote procedure call</a> as a <strong>leaky abstraction</strong>.  For those that haven&#8217;t read <a href="http://www.joelonsoftware.com/articles/LeakyAbstractions.html">Joel Spolsky&#8217;s The Law of Leaky Abstractions</a>, I highly recommend it.  The reason I would say that it&#8217;s a leaky abstraction is that although transparent RPC *looks* like a local method call, it&#8217;s clearly not under some situations:</p>
<ol>
<li>The remote call is very slow (or blocks) because of a network problem</li>
<li>The remote call cannot complete because the network fails/goes down</li>
<li>A parameter to the remote method call cannot be serialized&#8230;e.g. trying to make a remote call e.g. like this:  serviceProxy.setWorkspace(IWorkspace workspace&#8230;why would passing a workspace to a method call be a problem?)</li>
</ol>
<p>There are others, but I think these are the most compelling.</p>
<p>Note that all three of the above are runtime issues&#8230;i.e. they can happen at runtime for lots of reasons that have nothing to do with the semantics of the RPC itself.  In the case of 1 and 2 they cannot be prevented.  And they are likely to happen for non-trivial procedures.</p>
<p>Note also that since OSGi services are method calls on some service interface (a pojo), that remote services will also have the above issues.  It doesn&#8217;t matter what your remoting implementation is, they will <strong>all </strong>be subject to such problems.  Unfortunately, we (the distribution system implementers) can&#8217;t prevent it.</p>
<p>So, to me this means remote procedure call is a leaky abstraction&#8230;because even though it <strong>looks </strong>like normal/local/in memory method call, there are occasions where the &#8216;truth&#8217; about networks leaks out.</p>
<p>So what to do?   Well, I think there are several things to do, both from the service designer&#8217;s viewpoint (i.e. those defining the service to be remoted) and the distribution system implementer&#8217;s viewpoint (i.e. people that implement distribution infrastructures&#8230;like me).</p>
<p>From the service designer&#8217;s viewpoint you could design all of your services to prepared for 1, 2, 3 above&#8230;and/or document them as having these properties.  This can/does definately help.  But it is a major pain, and you can end up having services that are more complex (especially if they are used locally as well as remotely).</p>
<p>From the distribution system implementer&#8217;s viewpoint I feel one thing to do is what Joel describes in his paper as what TCP did for IP..<strong>layering</strong>.</p>
<p>That is the approach we&#8217;ve taken with implementing RFC 119&#8230;as the implementation of transparent remoting as specified in RFC119 is implemented on a non-transparent/explicit remoting API (<a href="http://wiki.eclipse.org/ECF_API_Docs">ECF remote services</a>).  I think this is nice, because it allows/supports more use cases:</p>
<p>&#8220;I want to create a simple remote service, as easily as I can and have it work&#8221;  (use RFC 119)</p>
<p>&#8220;I want to create a remote service that knows about or at least responds properly to the remoting leaks (1, 2, 3, etc above), and not simply crash/block/fail when the service is used&#8221;  (use ECF remote services)</p>
<p>So, we&#8217;ve implemented RFC119 itself using ECF remote services&#8230;and layered transparent remoting on top of a non-transparent remoting runtime API.  This gives choices to both service designers and service consumers about how much they want/need to care about the network leaking into remote OSGi services.   That is, if they care about the leaks they can do something about them, but if they (or the service consumers) don&#8217;t care about such leaks they can have a standard way of publishing, discovering, and receiving remote OSGi services.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2009/05/06/those-leaky-networks/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ECF and RFC119 &#8211; D&#8217;oh-SGi</title>
		<link>http://eclipsesource.com/blogs/2009/04/28/ecf-and-rfc119-doh-sgi/</link>
		<comments>http://eclipsesource.com/blogs/2009/04/28/ecf-and-rfc119-doh-sgi/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 22:19:37 +0000</pubDate>
		<dc:creator>Scott Lewis</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[syndicate]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[rfc119]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=1353</guid>
		<description><![CDATA[There&#8217;s a bug open for ECF to figure out a better/real name for it&#8217;s implementation of RFC 119.  Soon, we&#8217;re going to have an online vote to decide the winning name&#8230;but I wanted to say that my favorite (given my frequent harping about reliability/failure detection in distributed systems) is comment #7. ..even though I don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a bug open for <a href="http://www.eclipse.org/ecf">ECF</a> to figure out <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=270652">a better/real name for it&#8217;s implementation of RFC 119</a>.  Soon, we&#8217;re going to have an online vote to decide the winning name&#8230;but I wanted to say that my favorite (given my frequent harping about reliability/failure detection in distributed systems) is <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=270652#c7">comment #7</a>. ..even though I don&#8217;t think it will/can win <img src='http://eclipsesource.com/blogs/wp-includes/images/smilies/icon_sad.gif' alt="icon sad ECF and RFC119   Doh SGi" class='wp-smiley' title="ECF and RFC119   Doh SGi" /> .</p>
<p>Please contribute any ideas for names to the bug&#8230;amusing or not.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2009/04/28/ecf-and-rfc119-doh-sgi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ECF and RFC 119 &#8211; A rose by any other name&#8230;</title>
		<link>http://eclipsesource.com/blogs/2009/04/01/ecf-and-rfc-119-a-rose-by-any-other-name/</link>
		<comments>http://eclipsesource.com/blogs/2009/04/01/ecf-and-rfc-119-a-rose-by-any-other-name/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 23:31:19 +0000</pubDate>
		<dc:creator>Scott Lewis</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[syndicate]]></category>
		<category><![CDATA[equinox]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[rfc119]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=1129</guid>
		<description><![CDATA[ECF is finishing up it&#8217;s implementation of RFC 119 (distributed OSGi) for release with Galileo (aka ECF 3.0). Over beers at EclipseCon, Ian Skerrett suggested to me that we needed a name for this work&#8230;something other than &#8216;ECF RFC 119 Implementation&#8217; . So, we&#8217;ve opened a bug to identify a name for ECF&#8217;s distributed OSGi [...]]]></description>
			<content:encoded><![CDATA[<p>ECF is finishing up it&#8217;s implementation of RFC 119 (distributed OSGi) for release with Galileo (aka ECF 3.0).</p>
<p>Over beers at EclipseCon, <a href="http://ianskerrett.wordpress.com/">Ian Skerrett</a> suggested to me that we needed a name for this work&#8230;something other than &#8216;ECF RFC 119 Implementation&#8217; <img src='http://eclipsesource.com/blogs/wp-includes/images/smilies/icon_smile.gif' alt="icon smile ECF and RFC 119   A rose by any other name..." class='wp-smiley' title="ECF and RFC 119   A rose by any other name..." /> .</p>
<p>So, we&#8217;ve opened a <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=270652">bug to identify a name</a> for ECF&#8217;s distributed OSGi implementation.  Please <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=270652">join the bug</a>, and give us your ideas for a good, clear, understandable name.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2009/04/01/ecf-and-rfc-119-a-rose-by-any-other-name/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>RFC 119 and ECF &#8211; part 3</title>
		<link>http://eclipsesource.com/blogs/2009/03/08/rfc-119-and-ecf-part-3/</link>
		<comments>http://eclipsesource.com/blogs/2009/03/08/rfc-119-and-ecf-part-3/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 19:15:16 +0000</pubDate>
		<dc:creator>Scott Lewis</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[syndicate]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[discovery]]></category>
		<category><![CDATA[distribution]]></category>
		<category><![CDATA[ecf]]></category>
		<category><![CDATA[equinox]]></category>
		<category><![CDATA[rfc119]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=661</guid>
		<description><![CDATA[I&#8217;ve blogged previously about what we (ECF) are doing WRT to RFC 119 (Distributed OSGi Services):  RFC 119 and ECF &#8211; part 2 The news for today&#8230;I&#8217;m rather excited to report&#8230;is that we now have a working implementation of RFC 119, with support for both discovery and distribution parts of the specification.  This will be [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve blogged previously about what we (ECF) are doing WRT to RFC 119 (Distributed OSGi Services):  <a title="RFC 119 and ECF - part 2" href="http://eclipsesource.com/blogs/2009/02/21/rfc-119-and-ecf-part-2/" target="_blank">RFC 119 and ECF &#8211; part 2</a></p>
<p>The news for today&#8230;I&#8217;m rather excited to report&#8230;is that we now have a working implementation of <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=249240">RFC 119</a>, with support for both discovery and distribution parts of the specification.  This will be part of the ECF 3.0/Galileo release, and of course we will be talking about it in <a href="http://www.eclipsecon.org/2009/sessions?id=618">Markus&#8217; and my tutorial</a>, as well as <a href="http://www.eclipsecon.org/2009/sessions?id=633">some other talks</a>.</p>
<p><strong>What&#8217;s So Cool About Yet Another Spec Implementation?</strong></p>
<p>In my view, what makes this implementation interesting and useful is that we&#8217;ve used the abstract <a href="http://wiki.eclipse.org/ECF_API_Docs" target="_blank">ECF discovery and remote services APIs</a> to implement this spec, meaning that without doing <strong>any </strong>other work, RFC compliant distributed OSGi services are supported using the following transports</p>
<p>Distribution</p>
<ul>
<li>r-OSGi (http)</li>
<li>XMPP</li>
<li>ECF Generic</li>
<li>Skype</li>
<li>Java Messaging Service (JMS)</li>
<li>JavaGroups</li>
</ul>
<p>Discovery</p>
<ul>
<li>Service Location Protocol (<a href="http://www.faqs.org/rfcs/rfc2608.html" target="_blank">RFC 2608</a>)</li>
<li>Bonjour/<a href="http://www.dns-sd.org/">Zeroconf/DNS-SD</a></li>
</ul>
<p>And, of course <strong>any </strong>other transports that people are willing to create, as the ECF remote services API is completely open.</p>
<p>Our desire/hope is that others will implement ECF providers built from other protocols/transports of their choosing (both commercial and open source)&#8230;with the payoff to them being that they will then automagically have a RFC 119-compliant implementation&#8230;since all ECF providers are now RFC 119 compliant (and will remain so, as we will update the impl as the spec changes).  All the existing implementations done by the ECF team (e.g. r-OSGi, ECF generic, etc) are open source and so may be used/reused to create new providers as desired.</p>
<p>Another thing that I think is cool is that even though RFC 119 specifies using transparent proxies for accessing remote OSGi services, it allows (and even encourages) implementations to support non-transparent/asynchronous remoting (i.e. using one-ways, asynchronous rpc, and futures).  ECF&#8217;s remote services API already has support for <a href="http://download.eclipse.org/eclipse/downloads/drops/S-3.5M5-200902021535/eclipse-news-M5.html">futures</a>, and asynchronous/non-blocking remote invocation via its <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/IRemoteService.html">IRemoteService interface</a>.</p>
<p>With our current impl of RFC 119, clients can access the IRemoteService instance (in addition to or instead of the proxy), via a standard service property on the ServiceReference.  This gives <strong>clients </strong>a <strong>runtime </strong>choice of whether to access a remoted service via a proxy&#8230;or via asynchronous/non-blocking techniques like futures and one-ways.</p>
<p>One final thing&#8230;the size cost for the ECF remote services API is fairly small (&lt;60k of code) next to the size of the implementations&#8230;making it possible to use in smaller (as well as larger) execution environments.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2009/03/08/rfc-119-and-ecf-part-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RFC 119 and ECF &#8211; part 2</title>
		<link>http://eclipsesource.com/blogs/2009/02/21/rfc-119-and-ecf-part-2/</link>
		<comments>http://eclipsesource.com/blogs/2009/02/21/rfc-119-and-ecf-part-2/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 23:38:03 +0000</pubDate>
		<dc:creator>Scott Lewis</dc:creator>
				<category><![CDATA[syndicate]]></category>
		<category><![CDATA[discovery]]></category>
		<category><![CDATA[distribution]]></category>
		<category><![CDATA[ecf]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[rfc119]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=458</guid>
		<description><![CDATA[Some time ago, I blogged about RFC 119 and ECF part 1, so now it&#8217;s time for part 2&#8230; ECF now has a set of plugins that serve as a bridge between the RFC 119 spec (see part 1) and ECF&#8217;s discovery and remote services API (note:  all the following plugins begin with &#8216;org.eclipse.ecf&#8217; and [...]]]></description>
			<content:encoded><![CDATA[<p>Some time ago, I blogged about <a title="RFC 119 and ECF - part 1" href="http://eclipsesource.com/blogs/2008/12/19/rfc-119-and-ecf-part-1/" target="_self">RFC 119 and ECF part 1</a>, so now it&#8217;s time for part 2&#8230;</p>
<p>ECF now has a set of plugins that serve as a bridge between the RFC 119 spec (see part 1) and <a title="ECF APIs" href="http://wiki.eclipse.org/ECF_API_Docs" target="_self">ECF&#8217;s discovery and remote services API</a> (note:  all the following plugins begin with &#8216;org.eclipse.ecf&#8217; and can be found in /cvsroot/rt/org.eclipse.ecf/framework/bundles at dev.eclipse.org):</p>
<ol>
<li><strong>osgi.services</strong></li>
<li><strong>osgi.services.discovery</strong></li>
<li><strong>osgi.services.distribution</strong></li>
</ol>
<p>The osgi.service bundle only contains the classes that are included in the OSGi 4.2 compendium, i.e. interfaces such as DiscoveryProvider, DiscoveredServiceTracker, and DistributionProvider.  These interfaces are defined by the OSGi Enterprise Experts group, and are part of the RFC 119 specification.  The implementation is from the OSGi Alliance, as are other parts of OSGi that are implemented in Equinox.</p>
<p>RFC 119 is divided into two parts:  1) service discovery; 2) service distribution.  Service discovery is optional, and service distribution is required.</p>
<p>The <strong>osgi.services.discovery</strong> bundle implements the RFC 119 discovery and uses <a title="ECF Discovery API" href="http://wiki.eclipse.org/ECF_API_Docs#Discovery_API" target="_self">ECF&#8217;s discovery API</a> to implement protocol independent network service discovery.   There are two existing provider implementations of the ECF discovery API right now:  zeroconf/bonjour and SLP&#8230;so users will be able to publish their services automatically over both SLP and zeroconf discovery mechanisms with a single service publication.</p>
<p>Similarly the <strong>osgi.services.distribution</strong> bundle implements RFC 119 distribution using <a title="ECF Remote Services API" href="http://wiki.eclipse.org/ECF_API_Docs#Remote_Services_API" target="_self">ECF&#8217;s remote services API</a>.   When this is complete, it will mean that without any additional coding, remote services will run immediately on the following transports:</p>
<ol>
<li>r-OSGi/http</li>
<li>TCP/ECF generic</li>
<li>XMPP/XMPPS</li>
<li>Skype</li>
<li>JMS &#8211; ActiveMQ, Weblogic JMS</li>
<li>Others under active development:  EMF/CDO, http-with-rest</li>
</ol>
<p>Further,  the ECF remote services API also allows non-transparent access to remote services, in order to support asynchronous remote method invocation, one-ways, <a title="futures" href="http://download.eclipse.org/eclipse/downloads/drops/S-3.5M5-200902021535/eclipse-news-M5.html#Equinox" target="_self">futures</a>, explicit failure handling, and other features not part of RFC 119 at this point.</p>
<p>Note also that other providers that implement the ECF remote services API will automatically be RFC 119 compliant&#8230;i.e. they have to do no work to be compliant with RFC 119 for transparent remote procedure call.  Further, with ECF remote services, if clients wish to use non-transparent remoting&#8230;in combination with or in exclusion to transparent remoting&#8230;that is also available.</p>
<p>We&#8217;re closing in as rapidly as we can on having this all ready and working&#8230;and <a title="EclipseCon 2009" href="http://www.eclipsecon.org/2009/" target="_self">EclipseCon 2009 </a>is coming up fast&#8230;so stay tuned.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2009/02/21/rfc-119-and-ecf-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

