Client and Server

Client
GUI Client
The GUI client is built using Java and the Standard Widget Toolkit (SWT). The SWT library was used to be able to have pure Java clients and still get native look-and-feel. The clients communicate with the server using RMI.

Server
General
ParaBill is a pure Java based application. It uses the Apache Avalon server framework to build an extensible server architecture. Log4J is used to implement a system wide logging regime.

Scalability
The whole system can be run within one JVM. It is however possible to separate any or all of the demons to separate JVMs and separate servers. This means that you can have the collection demon running on one server and one or more rating demons running on other server.

Integration Layer
The integration layer is based on RMI and XML-RPC and can easily be extended with CORBA and SOAP without affecting any other layers.

Security Layer
Every method call from a client to the Application Layer is authenticated in the Security Layer. It intercepts all calls to verify that the user has the right to perform it.

Application Layer
The business logic is divided between a number of managers that handle the administrative tasks of the system and a number of demons that handle more batch oriented work. Any extensions or modifications of business logic are done in this layer.

Object Layer
ParaBill uses Exolab Castor to map the object model to the Database Layer. The object model can be used without any code change with a range of databases, including DB2, Oracle and MySQL. Any extensions or modifications to the business data model are done here.

Database Layer
ParaBill does not use stored procedures as this would make it database dependent. All logic and functionality is encapsulated in the Application and Object layers. All DDL used to create the database schemas are generated from the object layer.