0

根据Jruby-Rack Github,我们可以配置为使用 org.jruby.rack.RackServlet 而不是上下文监听器。

我们可以使用另一个自定义 servlet 而不是 RackServlet 吗?或者我们可以覆盖 org.jruby.rack.RackServlet 吗?

4

1 回答 1

1

侦听器保留 - 您通常使用 servlet 而不是带有 Servlet API 的过滤器,例如

<servlet>
  <servlet-name>rack</servlet-name>
  <servlet-class>org.jruby.rack.RackFilter</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>rack</servlet-name>
  <url-pattern>/*</url-pattern>
</servlet-mapping>

<!-- using the above servlet instead of : -->
<!--
<filter>
  <filter-name>RackFilter</filter-name>
  <filter-class>org.jruby.rack.RackFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>RackFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
-->

<listener>
  <listener-class>org.jruby.rack.RackServletContextListener</listener-class>
</listener>

您可以覆盖它RackFilterRackServlet甚至可以使用自定义类,只要它符合 JRuby-Rack 的规则即可。使用最新的 Trinidad(在引擎盖下使用 JRuby-Rack)配置备用 servlet 会更容易一些,而无需编写web.xml,例如在config/trinidad.yml中,您可能会:

---
  address: localhost
  port: 3000  # port where Trinidad is running
  rack_servlet:
    class: org.blue-smith.rack.CoolRackServlet

如果您确实确保您的CoolRackServlet类在类路径上,例如将其打包在一个 jar 中并将 .jar 放在 *[APP_ROOT]/lib/java* 下,或者为了快速测试,只需复制已编译的 .class 文件,包括lib/java/classes下的包目录...

于 2012-09-20T19:16:56.867 回答