Сведения о проблеме
Наше приложение является приложением с высокой степенью многопоточности, работающим в контейнере Tomcat.Приложение является весенним.Это многопоточное приложение.Однако через некоторое время приложение перестает отвечать на запросы.Мы взяли дампы потоков и обнаружили, что все потоки ожидают создания пружинных бинов в трассировке стека.Вот дамп потока ниже.
"sam@torcher|9b12f29d42ea" #201 daemon prio=5 os_prio=0 tid=0x000000000e032800 nid=0x7a7f waiting for monitor entry [0x00002af2ddae9000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:187)
- waiting to lock <0x0000000700ff0a30> (a java.util.concurrent.ConcurrentHashMap)
at org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:487)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:436)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:412)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:398)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:337)
at org.springframework.beans.factory.support.CglibSubclassingInstantiationStrategy$LookupOverrideMethodInterceptor.intercept(CglibSubclassingInstantiationStrategy.java:235)
at com.sam.torch.config.AppConfig$$EnhancerBySpringCGLIB$$fcd39318.getSamTorcherParser(<generated>)
at com.sam.torch.AppSubscriber.onMessage(AppSubscriber.java:135)
"sam@torcher|9f3c52f5c041" #200 daemon prio=5 os_prio=0 tid=0x000000000eb58800 nid=0x7a7e waiting for monitor entry [0x00002af2dd9e8000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:187)
- waiting to lock <0x0000000700ff0a30> (a java.util.concurrent.ConcurrentHashMap)
at org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:487)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:436)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:412)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:398)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:337)
at org.springframework.beans.factory.support.CglibSubclassingInstantiationStrategy$LookupOverrideMethodInterceptor.intercept(CglibSubclassingInstantiationStrategy.java:235)
at com.sam.torch.config.AppConfig$$EnhancerBySpringCGLIB$$fcd39318.getSamTorcherParser(<generated>)
at com.sam.torch.AppSubscriber.onMesssage(AppSubscriber.java:135)
Структура кода и обзор функциональности кода
Я получаю сообщение от сервера JMS, и мне нужно найти правильноеэкземпляр компонента для анализа содержимого сообщения.
Вот моя структура кода
@Configuration
public class AppConfiguration {
@Lookup
public SamTorcher getSamTorcherParser() {
return null;
}
}
@Component
@Scope("prototype")
public class SamTorcher {
}
Здесь у меня есть класс SamTorcher
, который определен с аннотацией @Component
и с @Scope("prototype")
.Здесь у меня есть @Configuration
аннотированный AppConfiguration
класс, предназначенный для начальной загрузки любой необходимой конфигурации.
Когда я получаю сообщение, основанное на поиске messageType
I для bean-компонента SamTorcher
с использованием config.getSamTorcherBean()
method.
Вот JIRA (https://jira.spring.io/browse/SPR-7949), связанная с вышеупомянутой проблемой на веб-сайте spring.io, и в настоящее время я сталкиваюсь с той же проблемой. Однако мне еще предстоит найти правильное решение этой проблемы.проблема.
Ценю любую помощь по этому вопросу.