如何在Jruby机架中配置自定义servlet



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

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

侦听器保留-您通常使用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机架),配置备用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下的包目录。。。

最新更新