senhores, bom dia.
sim o titulo do assunto é sujestivo a tomar porrada no forum, mas estou com um grande problema e nada melhor do que compartilhar com a comunidade para ver se acho uma solução porque ja estou a 15 dias tentando resolver o problema mas não consigo. Vou explicar o problema:
Trabalho em um grande projeto que hoje recebe por dia cerca de 1500 usuarios.
O problema: estamos usando dwr para fazer algumas chamadas de combo e outras coisas mais, o problema é o seguinte existe um determinado momento, que um metodo, que esta sincronizado trava(lock) a variavel chamada sessionMap, fazendo com que um simples carregamento de combo leve em torno de 200 milisegundo, isso geralmente leva 0,5 segundo para acontecer.
Isso tudo é dentro do proprio dwr. Atualmente junto com a equipe do projeto fizemos a seguinte modificação no dwr: retiramos o sincronized do metodo e colocamos um backport na variavel sessionMap(ConcurrentHasMap), esta versão ainda não foi para produção.
Ah detalhe a versão da jvm é 1.4.
Minha pergunta é: alguém já passou por um problema semelhante com dwr ???
Outra alguém usa outro framework web para fazer esse tipo de trabalho que não seja o dwr???
Agradeço a atenção de todos e espero ter explicado o problema.
Só por curiosidade vou colar o java core também, caso alguem queira analisar:
at java.util.HashMap$HashIterator.nextEntry(HashMap.java(Compiled Code))
at java.util.HashMap$ValueIterator.next(HashMap.java(Compiled Code))
at org.directwebremoting.impl.DefaultScriptSessionManager.invalidate(DefaultScriptSessionManager.java(Compiled Code))
at org.directwebremoting.impl.DefaultScriptSession.invalidate(DefaultScriptSession.java(Compiled Code))
at org.directwebremoting.impl.DefaultScriptSessionManager.checkTimeouts(DefaultScriptSessionManager.java(Compiled Code))
at org.directwebremoting.impl.DefaultScriptSessionManager.maybeCheckTimeouts(DefaultScriptSessionManager.java(Compiled Code))
at org.directwebremoting.impl.DefaultScriptSessionManager.getScriptSession(DefaultScriptSessionManager.java(Compiled Code))
at org.directwebremoting.impl.DefaultWebContext.getScriptSession(DefaultWebContext.java(Compiled Code))
at org.directwebremoting.dwrp.BaseCallMarshaller.marshallOutbound(BaseCallMarshaller.java(Compiled Code))
at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java(Compiled Code))
at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java(Compiled Code))
at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java(Compiled Code))
at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code))
at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code))
at com.ibm.ws.cache.servlet.ServletWrapper.serviceProxied(ServletWrapper.java(Compiled Code))
at com.ibm.ws.cache.servlet.CacheHook.handleFragment(CacheHook.java(Compiled Code))
at com.ibm.ws.cache.servlet.CacheHook.handleServlet(CacheHook.java(Compiled Code))
at com.ibm.ws.cache.servlet.ServletWrapper.service(ServletWrapper.java(Compiled Code))
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java(Compiled Code))
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java(Compiled Code))
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java(Compiled Code))
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java(Compiled Code))
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java(Compiled Code))
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java(Compiled Code))
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java(Compiled Code))
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java(Compiled Code))
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java(Compiled Code))
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java(Compiled Code))
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java(Compiled Code))
at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java(Compiled Code))
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))