2012-09-13 4 views
2

몇 시간 동안 사용하면 GWT 응용 프로그램을 Tomcat에 배포합니다 (2 QA는 일반 테스트 수행). Java 프로세스가 모든 CPU를 사용하고 응용 프로그램이 시작됩니다. 느린.RequestFactory 요청 (AutoBeanCodexImpl.doCoderFor)은 100 % CPU를 완료하지 않고 사용하지 않습니다.

Tomcat 관리자를 살펴본 결과, 오랫동안 실행되는 HTTP 요청이 많아지며 RequestFactory 서블릿 인 "/ gwtRequest"를 가리키고 있습니다. 그 후

나는 스레드 덤프를 데리고 덤프의 모든 RUNNABLE HTTP 스레드는 "AutoBeanCodexImpl.doCoderFor는()"

"http-8080-51" daemon prio=10 tid=0x00007f23d8b81800 nid=0x4981 runnable [0x00007f23d4285000] 
java.lang.Thread.State: RUNNABLE 
at java.util.HashMap.get(HashMap.java:303) 
at com.google.web.bindery.autobean.shared.impl.AutoBeanCodexImpl.doCoderFor(AutoBeanCodexImpl.java:519) 
at com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.setProperty(AbstractAutoBean.java:276) 
at com.google.web.bindery.autobean.vm.impl.ProxyAutoBean.setProperty(ProxyAutoBean.java:253) 
at com.google.web.bindery.autobean.vm.impl.BeanPropertyContext.set(BeanPropertyContext.java:44) 
at com.google.web.bindery.requestfactory.server.Resolver$PropertyResolver.visitValueProperty(Resolver.java:155) 
at com.google.web.bindery.autobean.vm.impl.ProxyAutoBean.traverseProperties(ProxyAutoBean.java:289) 
at com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.traverse(AbstractAutoBean.java:166) 
at com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.accept(AbstractAutoBean.java:101) 
at com.google.web.bindery.requestfactory.server.Resolver.resolveClientValue(Resolver.java:414) 
at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.processInvocationMessages(SimpleRequestProcessor.java:493) 
at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:235) 
at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:137) 
at com.google.web.bindery.requestfactory.server.RequestFactoryServlet.doPost(RequestFactoryServlet.java:133) 

누군가가 친절하게 지역으로 날 지점 수를 가리키는 것을 발견 내가 봐야 해? 감사합니다

답변

2

아, 아! 동기화하지 않고 고정 HashMap을 사용하고있는 것 같습니다. 이것은 AutoBeans가 처음에는 단일 스레드 인 브라우저에서만 작동하도록 설계 되었기 때문이라고 생각합니다.

이것은 fixed in trunk이며 며칠 내에 발표해야합니다. make it into 2.5.0-rc2. the issue 상태를 추적 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. rc2 릴리스를 기대합니다. –

+0

바보 같은 질문을 던지십시오. 동기화 문제 일 경우 교착 상태가 발생해야하며 경우에 따라 무한 루프가 발생할 수 있습니까? –

+0

내 질문에 대한 답변을 찾은 http://stackoverflow.com/questions/1003026/hashmap-concurrency-issue –

관련 문제