Резьба заблокирована на пружинном контейнере - PullRequest
0 голосов
/ 15 октября 2018

Сведения о проблеме

Наше приложение является приложением с высокой степенью многопоточности, работающим в контейнере 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, и в настоящее время я сталкиваюсь с той же проблемой. Однако мне еще предстоит найти правильное решение этой проблемы.проблема.

Ценю любую помощь по этому вопросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...