简体   繁体   English

如何在Jruby-rack中配置自定义servlet?

[英]How to configure custom servlet in Jruby-rack?

According to Jruby-Rack Github , we can configure to use org.jruby.rack.RackServlet instead of context listener. 根据Jruby-Rack Github的介绍 ,我们可以配置为使用org.jruby.rack.RackServlet代替上下文侦听器。

Can we use another custom servlet rather than RackServlet? 我们可以使用其他自定义servlet而不是RackServlet吗? Or can we override org.jruby.rack.RackServlet? 还是我们可以覆盖org.jruby.rack.RackServlet?

The listener stays - you usually use a servlet instead of a filter with the Servlet API eg 监听器停留-您通常在Servlet API中使用servlet而不是过滤器,例如

<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. 您可以重写RackFilter以及RackServlet ,甚至可以使用自定义类,只要它按照JRuby-Rack的规则播放即可。 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 eg in config/trinidad.yml you might : 使用最新的Trinidad(在引擎盖下使用JRuby-Rack),无需编写web.xml(例如在config / trinidad.yml中 ),配置备用servlet就容易一些:

---
  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 eg 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 ... 如果确实要确保CoolRackServlet类位于类路径中,例如将其包装在jar中,然后将.jar放在* [APP_ROOT] / lib / java *下,或者为了进行快速测试,只需复制已编译的.class文件,包括lib / java / classes下的包目录...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM