GAE/JでOCamlを動かそうとして挫折した

GAE/JThe website has movedを組み合わせたら、OCamlでWebアプリが作れるんじゃね?と思ったのでチャレンジしてみたけど、うまくいかなかった。
ocaml-java(Cadnium)はThreadを使っているけど、GAE/JはThreadを作れないらしい。(参考:http://code.google.com/intl/ja/appengine/docs/java/runtime.html)
こりゃ、無理だ。

Makefile

OPTIONS=-java-package testserv \
	-classpath  ~/tmp/java-ocaml/ocamljava-bin-1.2/lib/ocamlrun-servlet.jar \
	-I +cadmium \
	-provider fr.x9c.cadmium.primitives.cadmiumservlet.Servlets

OCAMLJAVA=java -jar ~/tmp/java-ocaml/ocamljava-bin-1.2/bin/ocamljava.jar
compile:
	$(OCAMLJAVA) $(OPTIONS) -c -I +cadmium hello.ml
link:
	$(OCAMLJAVA) $(OPTIONS) -o native.war -standalone \
		-additional-jar ~/tmp/java-ocaml/ocamljava-bin-1.2/lib/ocamlrun-servlet.jar \
		-servlet web.xml cadmiumLibrary.cmja cadmiumServletLibrary.cmja hello.cmj

hello.ml

open CadmiumServlet
let handle_get srv req resp =
  let out = Response.get_output_stream resp in
    output_string out "<html><head><title>ERROR</title></head><body>";
    output_string out "<b>UNHANDLED REQUEST</b>";
    output_string out "</body></html>"

let () =
  Servlet.register { Servlet.destroy = ignore;
		     Servlet.init = ignore;
		     Servlet.info = "my first servlet";
		     Servlet.do_delete = None;
		     Servlet.do_get = Some handle_get;
		     Servlet.do_head = None;
		     Servlet.do_options = None;
		     Servlet.do_post = None;
		     Servlet.do_put = None;
		     Servlet.do_trace = None;
		     Servlet.get_last_modified = None; }

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app
   xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5">
  <display-name>New Project Template</display-name>

  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>testserv.Hello</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>
</web-app>