Checkout Knopflerfish
Knopflerfish on GitHub
Follow knopflerfish on Twitter

How to Activate the "Remote framework..." Menu Item in the Knopflerfish Desktop

The Knopflerfish Desktop has the ability to remote control frameworks running on other computers or devices (including headless devices that cannot run the desktop them selves). This document describes how to activate this feature.

Typically, the "Remote framework..." menu item (in the File menu) is greyed out. The reason for this is that, typically, the remote framework service that the desktop is looking for is not present. To connect to a remote framework, the desktop needs an implementation of the org.knopflerfish.service.remotefw.RemoteFramework interface. This implementation decides which protocol to use and handles the communication.

The implementation described here uses kSOAP 2, which is a small-footprint SOAP implementation on top of kXML. It provides remote access to all functionality in the desktop (including the log tab and the console).

Terminology

Server: The server in this context is the remote controlled framework that waits for connections to its SOAP servlet.

Client: The client in this context is the framework that is running the desktop that is connecting to and controlling the server.

Needed Bundles

Two special bundles are needed both on the server and the client side: These standard bundles are needed as stated below: Since a servlet is used, the HTTP (http_all-1.1.0.jar) and JSDK (jsdk-2.2.jar) bundles are also needed. As usual, some of these bundles also depend on a number of standard bundles (including the Knopflerfish util bundle).

Configuration

The configuration is done with system properties. All of them have reasonable defaults and things will work without configuration.

Server

Client

Common

Connecting

When all the above is done and you start your frameworks, you'll find that the "Remote framework..." menu item is available. Click on it.

Enter the address to the remote framework. You should only enter the server name and the port, e.g. "http://localhost:8080". The rest is added automatically.

Click OK.

The desktop will be closed and reopened with the address to the remote framework in the title bar (e.g. "Knopflerfish OSGi desktop (http://localhost:8080)"). If the parenthesis are empty, something is wrong and you need to consult your log.

Known Problems

If the remote framework is shut down (which can be done remotely by running the console command "framework shutdown"), the desktop may behave strangely.

Log entries can appear in unexpected order.