En FundeWeb 2.0 y en FundeWeb 1.2.x tenemos disponibles varios filtros para garantizar el QoS de las aplicaciones, que permiten controlar el número total de peticiones que puede atender la aplicación en un instante de tiempo, comprobación de solicitudes duplicadas y control de peticiones concurrentes de una IP o sesión.
Los filtros son los siguientes:
Este filtro permite controlar el número máximo de peticiones concurrentes que puede ejecutar la aplicación para una misma sesión o dirección IP. Una vez alcanzado dicho número, las peticiones se encolan en una lista FIFO para ir sirviéndose, cuando el número de peticiones concurrentes sea menor que el limite establecido.
1.- Hay que añadir el siguiente espacio de nombres en el elemento raíz del fichero _<components>_ (donde están definidos el resto de espacio de nombres):
Para FundeWeb 1.2.x: xmlns:fdw-control=“http://www.umu.org/atica/seam/web/control“
Para FundeWeb 2.0.x: xmlns:fdw-control=“http://www.um.es/atica/seam/web/control“
2.- En la propiedad _xsi:schemaLocation_ añadimos lo siguiente:
Para FundeWeb 1.2.x: http://www.umu.org/atica/seam/web/control http://www.umu.org/atica/seam/web/control-1.5.0.xsd
Para FundeWeb 2.0.x: http://www.um.es/atica/seam/web/control http://www.um.es/atica/seam/web/control-2.0.0.xsd
3.- Añadir la configuración del filtro. Ejemplo para FundeWeb 2.0.x:
<components ... xmlns:fdw-control="http://www.um.es/atica/seam/web/control" xsi:schemaLocation=" ... http://www.um.es/atica/seam/web/control http://www.um.es/atica/seam/web/control-2.0.0.xsd"> <!-- Concurrent Request Control Filter --> <fdw-control:concurrent-request-control-filter disabled="false" url-pattern="*.seam" max-concurrent-request="2" wait-timeout="250" filter-session="true"/> ... </components>
Las propiedades importantes son las siguientes:
Este filtro permite controlar peticiones duplicadas que se producen en cierto intervalo de tiempo, descartando la segunda petición. Para poder utilizar el filtro, tendremos que realizar los siguientes pasos:
1.- Hay que añadir el siguiente espacio de nombres en el elemento raíz del fichero _<components>_ (donde están definidos el resto de espacio de nombres):
Para FundeWeb 1.2.x: xmlns:fdw-control=“http://www.umu.org/atica/seam/web/control“
Para FundeWeb 2.0.x: xmlns:fdw-control=“http://www.um.es/atica/seam/web/control“
2.- En la propiedad _xsi:schemaLocation_ añadimos lo siguiente:
Para FundeWeb 1.2.x: http://www.umu.org/atica/seam/web/control http://www.umu.org/atica/seam/web/control-1.5.0.xsd
Para FundeWeb 2.0.x: http://www.um.es/atica/seam/web/control http://www.um.es/atica/seam/web/control-2.0.0.xsd
3.- Añadir la configuración del filtro. Ejemplo para FundeWeb 2.0.x:
<components ... xmlns:fdw-control="http://www.um.es/atica/seam/web/control" xsi:schemaLocation=" ... http://www.um.es/atica/seam/web/control http://www.um.es/atica/seam/web/control-2.0.0.xsd"> <!-- Duplicate Request Control Filter --> <fdw-control:duplicate-request-control-filter disabled="false" url-pattern="*.seam" time-interval="10000"/> ... </components>
Las propiedades importantes son las siguientes:
Este filtro permite controlar el número de peticiones máximo que pueden estar ejecutándose en la aplicación al mismo tiempo. Una vez alcanzado dicho número, las nuevas peticiones entrantes se pausan un determinado periodo de tiempo antes de volver a intentar su reanudación. Una petición pausada tiene un número de reintentos de reanudación antes de ser descartada. Cuando una petición es descartada se lanza la excepción es.um.atica.seam.web.exceptions.TooManyRequestException.
Para poder utilizar el filtro, tendremos que realizar los siguientes pasos:
1.- Hay que añadir el siguiente espacio de nombres en el elemento raíz del fichero _<components>_ (donde están definidos el resto de espacio de nombres):
Para FundeWeb 1.2.x: xmlns:fdw-control=“http://www.umu.org/atica/seam/web/control“
Para FundeWeb 2.0.x: xmlns:fdw-control=“http://www.um.es/atica/seam/web/control“
2.- En la propiedad _xsi:schemaLocation_ añadimos lo siguiente:
Para FundeWeb 1.2.x: http://www.umu.org/atica/seam/web/control http://www.umu.org/atica/seam/web/control-1.5.0.xsd
Para FundeWeb 2.0.x: http://www.um.es/atica/seam/web/control http://www.um.es/atica/seam/web/control-2.0.0.xsd
3.- Añadir la configuración del filtro. Ejemplo para FundeWeb 2.0.x:
<components ... xmlns:fdw-control="http://www.um.es/atica/seam/web/control" xsi:schemaLocation=" ... http://www.um.es/atica/seam/web/control http://www.um.es/atica/seam/web/control-2.0.0.xsd"> <!-- Traffic Filter --> <fdw-control:traffic-control-filter disabled="false" url-pattern="*.seam" max-request="150" wait-timeout="1000" retries="5"/> ... </components>
Las propiedades importantes son las siguientes:
Para poder controlar el mensaje que se quiere mostrar, cuando se descarta una petición y se lanza la excepción org.umu.atica.seam.web.exceptions.TooManyRequestException en FundeWeb 1.2.x y es.um.atica.seam.web.exceptions.TooManyRequestException para FundeWeb 2.0.x, tenemos que realizar los siguientes cambios:
1. Añadir al fichero messages_es.properties el siguiente mensaje:
Para FundeWeb 1.2.x: org.umu.atica.seam.web.TooManyRequestException=Demasiadas solicitudes para ser servidas por la aplicación
Para FundeWeb 2.0.x: es.um.atica.seam.web.TooManyRequestException=Demasiadas solicitudes para ser servidas por la aplicación
2. Añadir al fichero messages_en.properties el siguiente mensaje:
Para FundeWeb 1.2.x: org.umu.atica.seam.web.TooManyRequestException=Too many requests to be dispatched by the application
Para FundeWeb 2.0.x: es.um.atica.seam.web.TooManyRequestException=Too many requests to be dispatched by the application
Modificar el fichero pages.xml añadiendo la siguiente captura de excepción. Ejemplo para FundWeb 2.0.x:
<!-- Ejemplo para Fundeweb 2.0.x --> <exception class="es.um.atica.seam.web.exceptions.TooManyRequestException"> <redirect view-id="/error.xhtml"> <message severity="error">#{messages['es.um.atica.seam.web.TooManyRequestException']}</message> </redirect> </exception>
— JUAN MIGUEL BERNAL GONZALEZ 2015/09/03 10:46