【发布时间】:2012-09-19 19:24:18
【问题描述】:
根据Jruby-Rack Github,我们可以配置使用 org.jruby.rack.RackServlet 代替上下文监听器。
我们可以使用另一个自定义 servlet 而不是 RackServlet 吗?或者我们可以覆盖 org.jruby.rack.RackServlet?
【问题讨论】:
标签: java ruby-on-rails servlets jruby jruby-rack
根据Jruby-Rack Github,我们可以配置使用 org.jruby.rack.RackServlet 代替上下文监听器。
我们可以使用另一个自定义 servlet 而不是 RackServlet 吗?或者我们可以覆盖 org.jruby.rack.RackServlet?
【问题讨论】:
标签: java ruby-on-rails servlets jruby jruby-rack
监听器保留 - 您通常使用 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>
您可以覆盖RackFilter 和RackServlet,您甚至可以使用自定义类,只要它符合JRuby-Rack 的规则即可。使用最新的 Trinidad(在底层使用 JRuby-Rack),无需编写 web.xml 即可更轻松地配置备用 servlet,例如在 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 下的包目录 ...
【讨论】: