The recommended way to have a web-server run a Kawa program as a CGI script is to compile the Kawa program to a servlet (as explained in Server-side scripts, and then use Kawa’s supplied CGI-to-servlet bridge.
First, compile your program to one or more class files as explained in Server-side scripts. For example:
kawa --servlet --xquery -C hello.xql
Then copy the resulting
.class files to your server’s
CGI directory. On Red Hat GNU/Linux, you can do the following (as root):
cp hello*.class /var/www/cgi-bin/
Next find the
cgi-servlet program that Kawa builds and installs.
If you installed Kawa in the default place, it will be in
(You’ll have this if you installed Kawa from source, but not
if you’re just using Kawa
Copy this program into the same CGI directory:
cp /usr/local/bin/cgi-servlet /var/www/cgi-bin/
You can link instead of copying:
ln -s /usr/local/bin/cgi-servlet /var/www/cgi-bin/
However, because of security issues this may not work, so it is
safer to copy the file. However, if you already have a copy
cgi-servlet in the CGI-directory, it is safe to make
a hard link instead of making an extra copy.
Make sure the files have the correct permissions:
chmod a+r /var/www/cgi-bin/hello*.class /var/www/cgi-bin/hello chmod a+x /var/www/cgi-bin/hello
Now you should be able to run the Kawa program, using the URL http://localhost/cgi-bin/hello. It may take a few seconds to get the reply, mainly because of the start-up time of the Java VM. That is why servlets are preferred. Using the CGI interface can still be useful for testing or when you can’t run servlets.