2009-06-18 77 views
1

我想用JRuby中嵌入的jetty来提供servlet和静态内容。我尝试这样做:使用JRuby嵌入式jetty的Servlets和静态内容

server = Server.new(8080) 
context = Context.new(server, '/', 0) 

context_static = Context.new(server, '/static', 0) 
context_static.setHandler(ResourceHandler.new) 
context_static.setResourceBase('./') 
context_static.setContextPath('/static') 

servlet = Servlet.new() 
holder = ServletHolder.new(servlet) 
context.addServlet(holder, '/') 
server.start() 

的问题是,http://localhost:8080/static不工作作为exepecte,但也显示出由servlet,而不是静态的内容创建的内容。

关于servlet:我首先使用javax.servlet.http.HttpServlet,但后来切换到org.mortbay.jetty.servlet.DefaultServlet,因为这似乎使得并行服务成为可能。我会很乐意解决这个问题。

回答

2

尝试在context之前初始化context_static(因为构造函数接受服务器参数,我假设实例化顺序影响上下文的链接顺序)。 (试用了Jetty 6和Clojure。)

+0

太棒了!这工作!它不需要jetty的DefaultServlet,但可以很好地处理HttpServlet。 非常感谢! – konrad 2009-06-18 10:43:13