2014-09-03 5 views
4

Я пытаюсь направить запрос на страницу JSP от способа отдыха в WildFly 8.1, но это бросает исключение:Запрос io.undertow.servlet.spec.HttpServletRequestImpl не был оригинальным или обертка

Caused by: java.lang.IllegalArgumentException: UT010023: Request [email protected] was not original or a wrapper 
    at io.undertow.servlet.spec.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:103) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] 
    at my.domain.RestResource.myRestMethod(RestResource.java:525) [classes:] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_51] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_51] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_51] 
    at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_51] 
    at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:137) [resteasy-jaxrs-3.0.8.Final.jar:] 
    at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:296) [resteasy-jaxrs-3.0.8.Final.jar:] 
    at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:250) [resteasy-jaxrs-3.0.8.Final.jar:] 
    at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:237) [resteasy-jaxrs-3.0.8.Final.jar:] 
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356) [resteasy-jaxrs-3.0.8.Final.jar:] 
    ... 31 more 

код:

@GET 
@Path("/my-path") 
public void myRestMethod(@Context final HttpServletResponse response, 
     @Context final HttpServletRequest request) throws ServletException, IOException { 

    RequestDispatcher dispatcher = request.getRequestDispatcher("/path/to/jsp"); 
    dispatcher.forward(request, response); 
} 

Этот код работал без проблем в Jboss 7.1.

ответ

6

Я не отлаживать достаточно, чтобы понять, почему/когда были добавлены эти чеки (по-видимому, это требует спецификации Servlet), но есть возможность в Undertow, чтобы отключить его:

В изменении standalone/configuration/standalone.xml файла XML-элемент servlet-container, так что он имеет атрибут allow-non-standard-wrappers="true".

Подробнее см. the official documentation (раздел Servlet container configuration).