ModjyGoogleAppEngine » History » Version 8
Alan Kennedy, 2009-06-09 02:49 PM
Updated to reflect the fact a patched version of jython.jar is no longer required: the jython.jar from the latest releases work fine on Google AppEngine.
1 | 4 | Alan Kennedy | h1. Running jython WSGI applications on Google AppEngine, with modjy. |
---|---|---|---|
2 | 2 | Alan Kennedy | |
3 | 1 | Alan Kennedy | Now that "Google has added Java/JVM support to their AppEngine":http://googleappengine.blogspot.com/2009/04/seriously-this-time-new-language-on-app.html , it is now possible to run other JVM languages on it as well, including our favourite language "Jython":http://www.jython.org . |
4 | |||
5 | 8 | Alan Kennedy | Modjy is the jython WSGI -> servlets gateway, used to bridge jython WSGI applications to running inside java servlet containers. And Google AppEngine is arguably one of the largest-scale servlet containers there is. And modjy can run applications on AppEngine. In order to do so, follow these steps. "We contributed modjy to jython a few months back":http://jython.xhaus.com/?p=41 . |
6 | 1 | Alan Kennedy | |
7 | 8 | Alan Kennedy | Follow this link to see the "modjy demo application running on Google AppEngine":http://jywsgi.appspot.com |
8 | |||
9 | 1 | Alan Kennedy | h2. Get a jython.jar suitable for running on AppEngine. |
10 | |||
11 | 8 | Alan Kennedy | Ever since the "patches provided by google to make jython run on Google Appengine":http://bugs.jython.org/issue1188 were applied to jython 2.5 at "revision 6252":http://fisheye3.atlassian.com/changelog/jython/?cs=6252 , the jython.jar supplied with the jython 2.5 distribution should run unmodified on Google Appengine. |
12 | 1 | Alan Kennedy | |
13 | 8 | Alan Kennedy | So you should use the jython.jar from the "latest version of jython":http://www.jython.org/ , which at the time of writing is Release Candidate 4, which will probably become the final jython 2.5.0 release. |
14 | 1 | Alan Kennedy | |
15 | h2. Making the jython library accessible. |
||
16 | |||
17 | 8 | Alan Kennedy | A limitation of Google's AppEngine is that you can only upload a limit of 1,000 files for any given web application. A lot of the code for modjy resides in the *Lib/modjy* directory of the jython distribution. The *Lib* directory is pretty big, and so exceeds the file limit. |
18 | 1 | Alan Kennedy | |
19 | The easiest way to get around this is to upload the Library in a zip file. Simply make a zip file of the contents of the *Lib* directory *within the directory itself*, i.e. the paths inside the zip file *should not start with *Lib/*. (You can download such a zip file below if you're concerned about getting it wrong). |
||
20 | |||
21 | Lastly, you have to add a *.pth* file which refers to your newly created *lib.zip*. It doesn't matter what that file is called, as long as it ends in *.pth*. So make a simple one line text file called *all.pth*, and put the text "lib.zip" on that one line. |
||
22 | |||
23 | 3 | Alan Kennedy | Place both the *all.pth* and the *lib.zip* file in the *WEB-INF/lib-python* directory of your web application, and you're good to go! |
24 | 1 | Alan Kennedy | |
25 | h2. Appengine application descriptor |
||
26 | |||
27 | 6 | Alan Kennedy | When uploading applications to AppEngine, you also need to provide an "Application Descriptor":http://code.google.com/appengine/docs/java/config/appconfig.html , stored in a file called *appengine-web.xml*. The file must reside in the web archive directory, inside *WEB-INF*, i.e. at the same level as the standard servlet *web.xml* file. |
28 | 1 | Alan Kennedy | |
29 | Here is the file that we use for the modjy demo application. |
||
30 | |||
31 | <pre> |
||
32 | <?xml version="1.0" encoding="utf-8"?> |
||
33 | <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> |
||
34 | <application>jywsgi</application> |
||
35 | <version>5</version> |
||
36 | </appengine-web-app> |
||
37 | </pre> |
||
38 | |||
39 | h2. Downloading the complete finished product. |
||
40 | |||
41 | 8 | Alan Kennedy | We have provided a complete version of the "modjy demo application for Google AppEngine":http://downloads.xhaus.com/modjy_webapp_google_appengine/ for you to download. (This version is derived from jython 2.5RC4) |
42 | 1 | Alan Kennedy | |
43 | 8 | Alan Kennedy | Don't forget that you have to get a copy of the latest jython.jar and place it into the *WEB-INF/lib* directory. |
44 | 1 | Alan Kennedy | |
45 | You will also have to place the AppEngine runtime api jar file in the *WEB-INF/lib* directory as well. It is located in the *lib/user* directory of the "AppEngine SDK download":http://code.google.com/appengine/downloads.html . |
||
46 | |||
47 | h2. Deploying to Google AppEngine. |
||
48 | |||
49 | To deploy the application, issue the following command |
||
50 | |||
51 | <pre> |
||
52 | 8 | Alan Kennedy | $APP_ENGINE_SDK_HOME/bin/appcfg update modjy_webapp |
53 | 1 | Alan Kennedy | </pre> |
54 | |||
55 | And you should be up and running. |