Reputation: 8820
According to Jruby-Rack Github, we can configure to use org.jruby.rack.RackServlet instead of context listener.
Can we use another custom servlet rather than RackServlet? Or can we override org.jruby.rack.RackServlet?
Upvotes: 0
Views: 532
Reputation: 7166
The listener stays - you usually use a servlet instead of a filter with the Servlet API e.g.
<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>
You can override the RackFilter
as well as the RackServlet
you can even use a custom class as long as it plays by JRuby-Rack's rules. With the latest Trinidad (uses JRuby-Rack under the hood) it's a bit easier to configure an alternate servlet without writing a web.xml e.g. in config/trinidad.yml you might :
---
address: localhost
port: 3000 # port where Trinidad is running
rack_servlet:
class: org.blue-smith.rack.CoolRackServlet
If you do make sure your CoolRackServlet
class is on the class-path e.g. package it in a jar and put the .jar under *[APP_ROOT]/lib/java* or for quick testing simply copy the compiled .class file(s) including the package directories under lib/java/classes ...
Upvotes: 1