<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>ECF New and Noteworthy</title>
<link rel="stylesheet" href="http://www.eclipse.org/default_style.css"
	type="text/css">

</head>

<body bgcolor="#FFFFFF">
	<table border=0 cellspacing=5 cellpadding=2 width="100%">
		<tbody>
			<tr>
				<td width="69%" class="bannertext">
				<img src="https://wiki.eclipse.org/images/b/b8/Logo128x37.png" alt="ECF Logo"/>
				<font class="indextop style">eclipse
						communication framework</font> <br>
				<br> <font class="indexsub">an eclipse runtime project</font> <br>
				<br> <font class="indextop style2">New and Noteworthy</font><br>
					3.6.0 Release <br> <br>
				<br> Return to <a href="downloads.php">ECF download page</a><br>
					<br>
				<br> <a href="NewAndNoteworthy_3.5.2.html">New and
						Noteworthy for 3.5.2</a><br> <a
					href="NewAndNoteworthy_3.5.0.html">New and Noteworthy for 3.5.1</a><br>
					<a href="NewAndNoteworthy_3.5.0.html">New and Noteworthy for
						3.5.0</a><br>
					<br>
				<br></td>
				<td width="31%">
					<div align="center">
						<img src="images/Idea.jpg" width="120" height="86" hspace="50"
							align="middle" alt="Idea Icon">
					</div>
				</td>
			</tr>
		</tbody>
	</table>

	<hr>

	<table>
		<tr>
			<td valign="top" align="left" width="15%">
				<p align="left">
					<b><a
						href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=391677">Remote
							services Generic provider that uses SSL transport</a></b>
				</p>
			</td>
			<td valign="top" width="85%">

				<p>
					Earlier ECF general providers were based on raw TCP sockets. Thus
					encrypted communication through the ECF generic provider for OSGI Remote Service
					was not available.  A new 
					provider was developed to support secure/encrypted communication
					based upon SSL.  See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=391677">bug 391677</a><br>
			</td>
		</tr>
		<tr>
			<td valign="top" align="left" width="15%">
				<p align="left">
					<b><a
						href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=337615">Rest
							server-side support for Remote Services</a></b>
				</p>
			</td>
			<td valign="top" width="85%">

				<p>
					In previous versions of ECF, Rest API mostly supported the creation of
					OSGI Remote Service clients/consumers.  This work on supports the creation and
					use of remote services on OSGi-based servers. Major additions can be
					found in org.eclipse.ecf.remoteservice.server bundle. Also some
					changes were made to the <a
						href="https://github.com/ECF/RestletProvider">Restlet provider</a> (available via <a href="http://github.com/ECF">ECF Github Repo</a>.

				</p> <br>
			</td>
		</tr>
		<tr>
			<td valign="top" align="left" width="15%">
				<p align="left">
					<b><a
						href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=256975">ECF
							RemoteServiceTracker</a></b>
				</p>
			</td>
			<td valign="top" width="85%">
				<p>ECF ServiceTrackers are used to discover registered services
					and then consume them.   This RemoteServiceTracker allows the
					tracking of ECF RemoteService instances, which does not need
					the OSGi service registry to function (as normal service trackers do).
                </p>
    <p>
     Contributions can be found in org.eclipse.ecf.remoteservice project.  
    </p>
				
    <br>
    
			</td> 
  </tr> 
    <tr> 
    <td valign="top" align="left" width="15%"> 
        <p align="left"> 
	<b><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=400164">API to allow customization of proxy creation</a></b> 
        </p> 
    </td> 
    <td valign="top" width="85%"> 
    
    <p>Earlier remote services proxy creation is done by using<br>
    AbstractRemoteService.createProxy/2<br>
    In order to customize the proxy creation it was necessary to subclass AbstractRemoteService and override createProxy. But with new contributions
    proxy creation can be dynamically customized using IRemoteServiceProxyCreator with an appropriate service ranking.    
    </p>
	<br>
    </td> 
  </tr> 
    <tr> 
    <td valign="top" align="left" width="15%"> 
        <p align="left"> 
	<b><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=337449">New filetransfer provider based upon Apache Httpclient 4.1</a></b> 
        </p> 
    </td> 
    <td valign="top" width="85%"> 
    
    <p>Active work on Apache Httpclient version 3.X has stopped, and Apache HttpComponents/Httpclient4 is now where active dev and bug fixing work is taking place. 
    ECF has created and deployed a new provider based upon Httpclient 4, that will allow p2/Equinox/Eclipse platform to benefit from the new Apache Httpclient 4 work,
    including such desired features as full support for NTLM proxies, HTTP caching, improved proxy and credentials support, and active debugging.
	</p>
	<br>
	<br>
    </td> 
  </tr>  

</table> 
 
</body> 
</html> 