JRuby Rack-Rails 애플리케이션의 응답을 처리하기 위해 필터에 응답을 전달하려고합니다 (성공하지 못했습니다). 기본적으로 Orbeon XForm Engine을 사용하여 Rails 애플리케이션에서 나오는 XHTML 출력을 향상시키고 싶습니다. JRuby Rack에서 간단한 Java 서블릿을 사용하면 모든 것이 원활하게 작동합니다. 사전
산드로의JRuby Rack - 서블릿 필터를 추가하는 방법?
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>public.root</param-name>
<param-value>/</param-value>
</context-param>
<context-param>
<param-name>rails.env</param-name>
<param-value>production</param-value>
</context-param>
<context-param>
<param-name>jruby.min.runtimes</param-name>
<param-value>2</param-value>
</context-param>
<context-param>
<param-name>jruby.max.runtimes</param-name>
<param-value>4</param-value>
</context-param>
<filter>
<filter-name>orbeon-xforms-filter</filter-name>
<filter-class>org.orbeon.oxf.servlet.OrbeonXFormsFilter</filter-class>
<init-param>
<param-name>oxf.xforms.renderer.context</param-name>
<param-value>/orbeon</param-value>
</init-param>
</filter>
<!-- This is necessary so that XForms engine resources can be served appropriately -->
<filter-mapping>
<filter-name>orbeon-xforms-filter</filter-name>
<url-pattern>/orbeon/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<!-- Any web resource under /xforms-jsp is processed by the XForms engine -->
<filter-mapping>
<filter-name>orbeon-xforms-filter</filter-name>
<url-pattern>/page/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<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.rails.RailsServletContextListener</listener-class>
</listener>
</web-app>
감사 :
다음은 web.xml 파일입니다.
JRuby Rack이 서블릿이기 때문에 "단순한"서블릿과 JRuby Rack이 아닌 이유는 확실하지 않습니다. 작동하지 않는다고 말하면 필터가 구성되어 있지 않은 것처럼 보이거나 오류가 발생합니까? 오류가 발생하면 해결책을 제시하는 힌트가 될 수 있습니다. 마치 필터가없는 것처럼 JRuby Rack은 필터로 가로 챌 수없는 내용을 출력하는 특별한 방법이 있습니까? 코드에서 체크 인하면,'getOutputStream()'과'getWriter()'가 필터에서 오버라이드되므로 문제가되지 않아야한다. – avernet
참고로 Orbeon XForms 필터의 소스는 다음과 같습니다. https://github.com/orbeon/orbeon-forms/blob/master/src/java/org/orbeon/oxf/servlet/OrbeonXFormsFilter.java – avernet