ModjyIndex
Version 1 (Alan Kennedy, 03/15/2009 09:01 pm)
| 1 | 1 | h1. A WSGI server for jython |
|
|---|---|---|---|
| 2 | 1 | ||
| 3 | 1 | h2(#intro). Introduction to modjy |
|
| 4 | 1 | ||
| 5 | 1 | ||
| 6 | 1 | Python *Web Server Gateway Interface*, as specified in "PEP-333":http://www.python.org/dev/peps/pep-0333/, is a ??simple and universal interface between web servers and [python] web applications or frameworks??. |
|
| 7 | 1 | ||
| 8 | 1 | Modjy is an implementation of a WSGI compliant gateway/server for jython, built on "Java/J2EE servlets":http://java.sun.com/products/servlet/. Which means that |
|
| 9 | 1 | ||
| 10 | 1 | ||
| 11 | 1 | # Jython WSGI applications run inside a Java/J2EE servlet container, e.g. "Apache Tomcat":http://tomcat.apache.org/ |
|
| 12 | 1 | # Incoming requests are handled by the servlet container |
|
| 13 | 1 | # The container is configured to route requests to the modjy servlet |
|
| 14 | 1 | # The modjy servlet creates an embedded jython interpreter inside the servlet container, and loads a configured jython web application, e.g. "Django":http://www.djangoproject.com/, ??the web framework for perfectionists with deadlines??. |
|
| 15 | 1 | # The modjy servlet delegates the requests to the configured WSGI application or framework. |
|
| 16 | 1 | # The WSGI response is routed back to the client through the servlet container. |
|
| 17 | 1 | ||
| 18 | 1 | ||
| 19 | 1 | For further information about WSGI, see "wsgi.org":http://wsgi.org. For a detailed specification of WSGI see "PEP-333: Python Web Server Gateway Interface, version 1.0":http://www.python.org/dev/peps/pep-0333/. |
|
| 20 | 1 | ||
| 21 | 1 | ||
| 22 | 1 | ||
| 23 | 1 | ||
| 24 | 1 | h2(#toc). How to use modjy |
|
| 25 | 1 | ||
| 26 | 1 | ||
| 27 | 1 | ||
| 28 | 1 | # See the [[ModjyDownload|download]] page to find out how to get hold of modjy. |
|
| 29 | 1 | # See the [[ModjyInstall|install]] page to read about installing modjy |
|
| 30 | 1 | # See the [[ModjyConfiguration|configuration]] page to read about the various configuration options available to you for configuring modjy |
|
| 31 | 1 | # See the [[ModjyLocateCallables|loading applications]] page to find out about the different mechanisms that modjy can use to locate and load WSGI callable objects |
|
| 32 | 1 | # See the [[ModjyWSGI|WSGI]] page for a discussion of how modjy complies with the WSGI standard. |
|
| 33 | 1 | ||
| 34 | 1 | ||
| 35 | 1 | ||
| 36 | 1 | h2(#license). License: Apache License Version 2.0 |
|
| 37 | 1 | ||
| 38 | 1 | ||
| 39 | 1 | Modjy is released under the "Apache License Version 2.0":http://www.apache.org/licenses/LICENSE-2.0.html |
|
| 40 | 1 | ||
| 41 | 1 | The full text of the licence, including all terms and conditions, is included in the "Download":download.html. |
|
| 42 | 1 | ||
| 43 | 1 | ||
| 44 | 1 | ||
| 45 | 1 | h2(#structural_overview). A structural overview of modjy |
|
| 46 | 1 | ||
| 47 | 1 | ||
| 48 | 1 | ||
| 49 | 1 | h3. Architecture |
|
| 50 | 1 | ||
| 51 | 1 | ||
| 52 | 1 | ||
| 53 | 1 | 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. |
|
| 54 | 1 | ||
| 55 | 1 | ||
| 56 | 1 | ||
| 57 | 1 | 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":ModjyLocateCallables. It then creates WSGI environment and start_response_callable objects, and invokes the application. |
|
| 58 | 1 | ||
| 59 | 1 | ||
| 60 | 1 | ||
| 61 | 1 | More details on how to configure modjy to use single vs. multi threading, etc, see the "Configuration reference":params.html. |
|
| 62 | 1 | ||
| 63 | 1 | ||
| 64 | 1 | ||
| 65 | 1 | h3. Code structure |
|
| 66 | 1 | ||
| 67 | 1 | ||
| 68 | 1 | ||
| 69 | 1 | The principal jython class for implementation of modjy is the *modjy_servlet* class. This class uses "mixins":http://en.wikipedia.org/wiki/Mixin to "factor out code by functionality":http://www.linuxjournal.com/article/4540, so that the structure can be more easily evolved, components replaced, etc. |
|
| 70 | 1 | ||
| 71 | 1 | ||
| 72 | 1 | ||
| 73 | 1 | Modjy has been updated to work on jython 2.5 and jython 2.2, and will no longer run on jython 2.1. |