The apache binding is implemented as a shared module (mod_uno). One problem is, that the webserver does not support a httpsession notion. So the binding itself must do a http session adminstration, which is implemented as a UNO component and can be reused for futher bindings, where the webserver does also not support a session notion.
The common apache webserver runs in different modes on windows and on unix. This directly affects the binding and the runtime process layout, so they are explained differently here.
Future developments of the UNO framework will allow to customize the process layout by simply modifiying some entries within a UNO registry, the current level of customization is quite limited.
Windows binding
On windows apache runs multithreaded in one process. So the binding, the servlets and the sessionadminstration can also run in this one process. This offers optimal performance as no processor cycles are wasted for remote bridging.
Linux(unix)
binding
On linux, the apached forks into multiple worker
processes. Which process gets which http-request, is coincidal. This
means, that the servlets libraries get loaded in each worker
process. That bears a memory penalty (the code segment is shared,
but the heap needed by the UNO framework is not). However crashing
of one servlet still leaves the webserver fully functional.
The
session administration itself must live in a extra process, as there
is no central process anymore. Each worker tries to establish an
interprocess bridge on demand (the first time a getSession() is
called). If the connection could not be established (e.g. because
the server is not running), the getSession() call fails with a
RuntimeException.
So there must be launched a seperate daemon for this binding. You can find the script at uno_servlets/out_linux/script/sessionadmind.