A design overview of modjy¶
The architecture of modjy is very simple, from a J2EE point of view. It consists of a single java servlet class, which is a thin wrapper around the required jython functionality. Since the java servlet is multithreaded, only one instance of it will ever run in a given container (unless configured otherwise). This java servlet also initializes the jython runtime, setting some necessary parameters beforehand.
The java servlet then creates a single instance of the jython-implemented modjy_servlet class, to which all incoming HTTP requests are delegated. Depending on configuration, modjy_servlet creates 1 or more instances of the jython WSGI application object, as described in How modjy locates application callable objects. It then creates WSGI environment and start_response_callable objects, and invokes the application.
More details on how to configure modjy to use single vs. multi threading, etc, see the Configuration reference.
The principal jython class for implementation of modjy is the modjy_servlet class. This class uses mixins to factor out code by functionality, so that the structure can be more easily evolved, components replaced, etc.
Modjy has been updated to work on jython 2.5 and jython 2.2, and will no longer run on jython 2.1.