0

Jruby-Rack Githubによると、コンテキストリスナーの代わりにorg.jruby.rack.RackServletを使用するように構成できます。

RackServletではなく別のカスタムサーブレットを使用できますか?または、org.jruby.rack.RackServletをオーバーライドできますか?

4

1 に答える 1

1

リスナーは残ります-通常、サーブレット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>

JRuby-Rackのルールに従って再生される限り、カスタムクラスを使用するだけでなく、オーバーライドすることもRackFilterできます。RackServlet最新のトリニダード(内部でJRuby-Rackを使用)を使用すると、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の下のパッケージディレクトリ..。

于 2012-09-20T19:16:56.867 に答える