README for TimeServiceConsumer.rosgi.ds.wss.noreg.product

This product config uses the websockets with SSL rosgi provider.

The successful use of this provider for this example or 
otherwise depends upon two things:

1) Having a built, packaged, and installed version of these two 
additional bundles:
   a) java_websocket
   b) ch.ethz.iks.r_osgi.transport.http
   
The source for these two bundles is available via the ECF github
Websockets repository located here:  https://github.com/ECF/Websockets
Note that there is also a feature for building these two bundles via 
eclipse via the feature project located in 
features/org.eclipse.ecf.remoteservices.rosgi.ws.feature

2) For the wss (Secure Websockets) provider it's also necessary to
configure an SSLContext prior to running/using the provider.

As part of the VM arguments in the product config are these:

-Djavax.net.ssl.keyStore=security/server.ks
-Djavax.net.ssl.keyStorePassword=server
-Djavax.net.ssl.trustStore=security/server.ks
-Djavax.net.debug=all

These arguments specify the location of a java keystore/trustStore, a password for 
runtime access to that keystore and the javax.net.debug=all turns on full debugging
to console of the SSLContext configuration.

The referenced keystore must be present at the given path, have an appropriate certificate, 
and the password must be correct for accessing that keystore in order for these example 
product configs to work when Run/Debugged.

Note that when Eclipse generates launch configs from product configs the working directory used is
the Eclipse working directory (e.g. c:\eclipsehome), meaning that the keyStore/trustStore paths given
above would refer to a file location of (e.g.):

c:\eclipsehome\security\server.ks






