Foros de discusión

PortalDelegateServlet + InvokerFilter consume peticiones POST

Juanjo Meroño, modificado hace 11 años.

PortalDelegateServlet + InvokerFilter consume peticiones POST

New Member Mensajes: 2 Fecha de incorporación: 21/11/12 Mensajes recientes
Estoy tratando de utilizar el PortalDelegateServlet (Liferay 6.1.1), para capturar la información de sesión desde un servlet desplegado en un contexto diferente a ROOT. Todo funciona correctamente, salvo las peticiones POST que ejecuto a través del PortalDelegateServlet. Estas peticiones llegan a mi servlet con el InputStream de datos consumido, por lo que no puedo procesar la petición correctamente. ¿Quién consume este flujo?

Investigando un poco más he notado que el problema reside en el InvokerFilter por el que pasan todas las peticiones del contexto ROOT. Por ejemplo, si colocas este sencillo JSP en ROOT y lo invocas (/test.jsp) muestra un formulario que puedes enviar con POST. El resultado del envío POST muestra el valor del primer byte de datos recibido, que es -1, es decir, alguien ha consumido los datos previamente. Cosa que en principio no debería suceder.

[indent]
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>


<title>Testing</title>

&lt;%	if ("GET".equals(request.getMethod())) { %&gt;
<form action="test.jsp" method="post">
	<input type="text" name="data" value="">
	<input type="submit">
</form>		
&lt;%	} else { %&gt;
	<h1>This is a post wich first byte of data is: &lt;%=request.getInputStream().read() %&gt;</h1><br>
&lt;%	} %&gt;


[/indent]
Si se comenta del web.xml del contexto ROOT el filtro para REQUEST:

[indent]
<filter-mapping>
	<filter-name>Invoker Filter - REQUEST</filter-name>
	<url-pattern>/*</url-pattern>
	<dispatcher>REQUEST</dispatcher>
</filter-mapping>

[/indent]
El jsp se comporta correctamente y el InputStream ya no se consume antes de que sea tratado por este. Muestra el primer byte y no -1. Obviamente el filtro no se puede evitar ya que el mapeo es /* y tampoco he verificado si liferay funciona sin este filtro, pero imagino que no. ¿Es posible que se trate de un bug?, ¿Alguien ha experimentado lo mismo?, ¿Se puede evitar este efecto secundario del InvokerFilter?

Gracias.