DeserialPendingTask sessionTask = getSessionDeserialPendingTask();
if (sessionTask != null)
{
ItsNatServletImpl itsNatServlet = itsNatRequest.getItsNatServletImpl();
ItsNatServletResponse itsNatResponse = itsNatRequest.getItsNatServletResponse();
sessionTask.process(itsNatServlet,itsNatRequest,itsNatResponse);
setSessionDeserialPendingTask(null); // Para liberar memoria
}
if (hasDeserialPendingTasks())
{
ItsNatServletImpl itsNatServlet = itsNatRequest.getItsNatServletImpl();
String servletName = itsNatServlet.getName();
ItsNatServletResponse itsNatResponse = itsNatRequest.getItsNatServletResponse();
ServletContext context = itsNatContext.getServletContext();
MapListImpl<String,DeserialPendingTask> pendingTasks = getDeserialPendingTasks();
for(Map.Entry<String,LinkedList<DeserialPendingTask>> entry : pendingTasks.getMap().entrySet() )
{
String currServletName = entry.getKey();
LinkedList<DeserialPendingTask> pendingTasksOfServlet = entry.getValue();
if (pendingTasksOfServlet == null) continue; // Por si acaso pero es raro que sea nulo
if (servletName.equals(currServletName))
{
// El servlet que est� haciendo la request de verdad
for(DeserialPendingTask task : pendingTasksOfServlet)
{
task.process(itsNatServlet,itsNatRequest,itsNatResponse);
}
}
else
{
ItsNatServletImpl currItsNatServlet = ItsNatServletImpl.getItsNatServletByName(currServletName);
ServletRequest servRequest = itsNatRequest.getServletRequest();
ServletResponse servResponse = itsNatResponse.getServletResponse();
if (currItsNatServlet == null)
{
// Despertamos al servlet para que se inicie y se registren los templates etc
RequestDispatcher servletDisp = context.getNamedDispatcher(currServletName);