Tomcatを組み込んだJavaSwingアプリケーションがあります。組み込みTomcatはプログラムで構成されます。xmlはありません。TomcatもGroovyサーブレットを使用して構成されます。
StandardWrapper gspWrapper = new StandardWrapper();
gspWrapper.setName("groovy");
gspWrapper.setServletName("groovy");
gspWrapper.setServletClass(GroovyServlet.class.getName());
gspWrapper.addInitParameter("fork", "false");
gspWrapper.setLoadOnStartup(2);
Rubyサポート(jRuby 1.7)も欲しいです。したがって、Groovyサポートと同じ方法で構成したいと思います。
StandardWrapper rubyWrapper = new StandardWrapper();
rubyWrapper.setName("rb");
rubyWrapper.setServletName("rb");
rubyWrapper.setServletClass(JRubyServlet.class.getName());
rubyWrapper.addInitParameter("fork", "false");
rubyWrapper.setLoadOnStartup(2);
JRubyServletクラスを作成しようとしましたが、スクリプトを実行して出力を応答に書き込む方法がわかりません。これが私の現在のコードです:
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jruby.Ruby;
import org.jruby.javasupport.JavaEmbedUtils;
public class JRubyServlet extends HttpServlet {
private static final long serialVersionUID = -6913887886084787803L;
private Ruby ruby;
@Override public void init(ServletConfig config) throws ServletException {
super.init(config);
ruby = JavaEmbedUtils.initialize(new ArrayList<String> ());
}
@Override public void destroy() {
JavaEmbedUtils.terminate(ruby);
super.destroy();
}
@Override protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
//How do you execute the script here?
}
@Override protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
doGet(req, res);
}
}