Licas Lightweight (Internet-based) Communication for Autonomic Services
 

Licas Version 4.17.2
Gui Version 4.13.1
Problem Solver Version 2.5.2

Introduction


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 page. You can download the code from sourceforge.net.


Figure 1. Schematic of different module configurations.


Licas Modules

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 here. 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.
  • The licas_services.jar 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.


Key Features

The key features are therefore:
  1. The capability to build distributed networks of autonomic service-based components.
  2. Permanent and dynamic linking mechanisms to construct the network architecture.
  3. Autonomic self-organisation through a dynamic linking mechanism.
  4. Local or remote communication capabilities, including an XML-RPC message passing mechanism, Web Services (SOAP or RESTful), or HTTP request.
  5. Java-based or Web-based clients.
  6. Service wrapper classes allowing legacy code to be loaded.
  7. Framework for adding an Autonomic Manager and policy scripts to a service.
  8. Framework for adding metadata, with a default query engine.
  9. Compatibility with the Java mobile (J2ME) environment.
  10. Examples of instant messenger and file sharing applications.
  11. Problem-solving framework, allowing for the addition of more complex heuristic search processes.
  12. All-in-one GUI for viewing or testing your networks. Not open source, but provided free to help with development.




Other Details


Web Based

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 files can be displayed, with CSS or Javascript needing to be embedded 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.


Mobile Environment

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 main web site.

See also the version history or bug fixes pages for details about the current or future changes.




Download

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 DCS 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 version history page for version updates and other changes. You should always unzip into a clean directory, as the content can change.

Licence

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.




Contact Details

Author: Kieran Greer, Distributed Computing Systems.

For any queries about the software package, please contact the project administrator.
Email: DCS email.




Awards
The awards are listed on the main DCS site.