Licas Version 4.17.3
Gui Version 4.13.1
Problem Solver Version 2.5.3
The licas (lightweight (Internet-based) communication for autonomic
services) system is an open source framework for building
service-based networks, similar to what you would do on a Cloud or SOA
platform. The framework comes with a server for running the services
on, mechanisms for adding services to the server, mechanisms for
linking services with each other, and mechanisms for allowing the
services to communicate with each other. The free All-in-One GUI
provides a basic operating environment, with some default services. In
additon to this, the jar builds provide a set of AI heuristics and also some text-processing algorithms, to allow you to
intelliently process the information sources. The emphasis is on a
generic framework, where you should be able to pass different data
types through the system and have them processed in the same way.
The default communication
protocol inside of licas itself is an XML-RPC mechanism, but dynamic
invocation of external Web Services is also possible. The main server
package can also interface with AJAX or REST-style messages, meaning that porting to a
mobile device should be possible. The architecture
and adaptive capabilities through dynamic linking add something new
that is not available in other similar systems. Figure 1 gives a general view of what the different modules or programs might look like.
The All-in-One GUI has a server and problem solver built-in, or you can
add these to your own program. You can also run a stand-alone server,
or run a test from a batch file. Note that the communication can be
local or remote. A more detailed description of the architecture can be
found on the Overview
You can download
the code from
Figure 1. Schematic of different module configurations.
Licas provides the framework for building and managing distributed services, which can run autonomous ‘behaviours’ that have their own internal
control algorithms. Because it does not have to be used this way however, specific implementations have been left out of
the base package. You can use it to run any type of service that does not have to include any intelligent behaviour.
The services package includes an instant messenger and a peer-to-peer
file server, for example.
1. Stand-Alone Server
A stand-alone server can be started from a batch file. It will run in a command box
and can be invoked either locally or remotely.
As the system is intended to be a platform on which to build
service-based networks, you can extend or add the licas server to your
own programs, to create more complex or application-specific systems.
2. Problem Solver
A problem solver package is also provided. You can
integrate this with a network and organise the services on the
network, based on the results of a heuristic problem solving search.
3. All-in-One GUI
The All-in-One GUI also contains these and is downloadable separately from
. This is not open source, but it is very flexible and can be used
for different purposes. The GUI includes an interactive
network graphic and the ability to configure and add new modules that
would contain your own service classes. Both the server and the
problem solver can be used through the GUI. The GUI can therefore be used, either as
an admin tool for running a few application-specific services, or as a
test platform for running (autonomous) service-based tests.
4. Module Stack
Figure 2. Schematic of jar files stack.
Figure 2 might be able to show how the individual jar files can be
used, or combined:
If you are just interested in the server, you can use the licas.jar file from the server folder.
The problem-solving package sits on-top of the main licas package and adds some more AI-related features, to
allow for more intelligent processing of information. It is also able to make use of all of the licas features and can
be used for distributed or centralised problem-solving. In the download therefore, in the solver folder, you can use the
licas_solver.jar file to access both the main licas server and also the problem-solving classes.
file is also provided in the services folder, but it is more useful through the All-in-One GUI that already integrates
all of the modules together.
If you go up the left-hand module stack therefore, you can create and run services on a SOA platform. If you go up the right-hand side, you can create and run AI tests.
Using these jars in code still requires a fair amount of programming and so the
All-in-One GUI provides access to these classes through its interfaces. It also allows you to plug-in or add your own
classes, or jar files. While both the problem-solver and the server are open source, they both use other licas packages
that provide more AI-related features, text processing and other features. These are included in the main jar builds, but
are not open source. The ai_heuristic package is particularly relevant for the problem-solver and its Javadoc API is
available from here
. As the classes continually change, it would be advisable to check on what is
available from time to time.
The key features are therefore:
- The capability to build distributed networks of autonomic
- Permanent and dynamic linking mechanisms to construct the network
- Autonomic self-organisation through a dynamic linking mechanism.
- Local or remote communication capabilities, including an XML-RPC message passing
mechanism, Web Services (SOAP or RESTful), or HTTP request.
- Java-based or Web-based clients.
- Service wrapper classes allowing legacy code to be loaded.
- Framework for adding an Autonomic Manager and policy scripts to a service.
- Framework for adding metadata, with a default query engine.
- Compatibility with the Java mobile (J2ME) environment.
- Examples of instant messenger and file sharing applications.
- Problem-solving framework, allowing for the addition of more complex heuristic search processes.
- All-in-one GUI for viewing or testing your networks. Not open source,
but provided free to help with development.
The server has a limited Browser-based interface for returning HTML or other, directly
from an HTTP address. This can then be converted and read, as a
standard web server would provide. Currently, only HTML and image
in the HTML file, but a lightweight web server is possible.
Web Services Invocation
The system uses a default XML-RPC message passing mechanism, but there is also the possibility
for making Web Service calls. The open source package also contains a
WSDL parser and classes for making dynamic SOAP web service calls. This is not based on static
stub classes, but is built dynamically from parsed WSDL documents. The licas server is a Web server but not a web service. It can be
invoked like one however, because it accepts String-based messages and
can automatically parse them into the correct format for further
processing. It can therefore accept HTTP POST requests, with REST-style messages from web
pages, where an example is provided as part of the download package.
The licas software package is compatible with the Java 2 Micro
Edition (J2ME) CDC platform. This is becomming out of date, but it is
simply a subset of Java and therefore, the system is compatible with
most versions of Java as well. It should work with Java 1.4 upwards.
As the server accepts REST-style messages, it can be communicated with
through AJAX or simply HTTP requests from HTML web pages, making it
mobile-compatible. The All-in-One GUI is only J2SE 1.6+ compatible however and is more useful
as part of an internet or cloud-based system.
A more lightweight server app has been written, to accommodate a system with
possibly a mobile client. It is written in JavaFX and can be downloaded from the
See also the
version history or bug fixes pages for details about
the current or future changes.
The downloads are available from sourceforge
and include a stand-alone server or the full problem-solver package. The All-in-One
GUI also contains these and is available from the
site. The source code for the base server, problem-solver and
services packages are provided. The documentation is another separate download from the sourceforge site,
but you do need to read all of it to get started.
The user guide will tell you how to use the framework and start programming with it. Please check the
page for version updates and other changes. You should always unzip
into a clean directory, as the content can change.
The software is released under the GPL licence. Note that this relates
to the open source server / services and problem solving code only.
The All-in-One GUI is not available as open source and is provided as
a separate application, for any use, but not part of a commercial
package. The lightweight server however can be used as is, as part of
a commercial package. A licence could be
made available for full commercial rights of other parts.
Author: Kieran Greer,
Distributed Computing Systems
For any queries about the software package, please contact the project
The awards are listed on the main DCS site.