Server implementation

The Bookkeeping server is based on a piece of python code providing both an XMLRPC server and a web server. This code was initially used in the Production system and was reused with no change in the Bookkeeping. It is implemented in file python/gaudiweb.py of the Bookkeeping package. The server is then customized in file python/BookkeepingServer.py of the Bookkeeping package.

The server handles essentially three things : webpages, servlets and XMLRPC services. The webpages and XMLRPC services just need to be registered to become available, as you can see in methods startBookkeepingWeb and startRPCServices. Most of the functionnalities is actually provided by the underlying gaudiweb server.

For the servlets, the situation is a bit more complex since this concept is java specific and thus not available in python. For this purpose, the Bookkeeping server can actually not run using a regular python implementation. It actually needs Jython, a java implementation of python. On top of that, dedicated classes were defined to handle servlets correctly, reusing the gaudiweb.Service mechanism.

This servlet support is 70% of the code of BookkeepingServer.py. It uses some home made, dummy implementation of a servlet engine provided in the calsses DummyServletConfig, DummyServletResponse and DummyServletRequest. However ever, the servelt engine could be droped as soon as the servlets are hosted by an external web server, like apache or the ORACLE one.

To conclude with the Bookkeeping server, here is the list of entry points in the current server as well as their type and usage.

Sebastien Ponce 2004-03-12