【问题标题】:How to configure custom servlet in Jruby-rack?如何在 Jruby-rack 中配置自定义 servlet?
【发布时间】: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


    【解决方案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),无需编写 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 下的包目录 ...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多