MarshallingWebServiceOutboundGateway занимает слишком много для первого запроса

У нас есть много мыльных сервисов, которые мы используем для подключения, и каждый раз, когда первому тому же сервису требуется интеграция, а последующие запросы быстро сокращаются на 60% времени ответа.

Проанализировано на инициализацию привязок JAXB

@Configuration
public interface WSCommons {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
    @Bean
      static Jaxb2Marshaller jaxb2Marshaller() {
            marshaller.setPackagesToScan("com.abc");
        return marshaller;
      }
}

Это занимает значительное количество для первого запроса, чтобы просканировать каждую вещь и создать маршаллер.

Но,

Как только Бин инициализируется, он быстро работает для нескольких запросов. Когда поток службы в течение некоторого времени простаивает и запросы начинают выполняться снова, MarshallingWebServiceOutboundGateway очень сильно отстает.

Jaxb2Marshaller статичен, и в этом случае он должен отключиться для повторной инициализации.

Любой вклад приветствуется, возможно, что-то не так в процессе инициализации.

Спасибо

1 ответ

Решение

Я не верю, что это будет работать с @Configuration на интерфейсе. Поэтому ваш @Bean для Jaxb2Marshaller не видно

Вы должны рассмотреть, чтобы сделать ваш @Configuration как class и удали это static из определения бобов.

Jaxb2Marshaller имеет такую ​​опцию:

/**
 * Set whether to lazily initialize the {@link JAXBContext} for this marshaller.
 * Default is {@code false} to initialize on startup; can be switched to {@code true}.
 * <p>Early initialization just applies if {@link #afterPropertiesSet()} is called.
 */
public void setLazyInit(boolean lazyInit) {

Который false по умолчанию и, следовательно, afterPropertiesSet() вызывается во время нормальной фазы инициализации компонента. Все пакеты отсканированы здесь и полностью унесены JAXBContext кэшируется в Jaxb2Marshaller боб.

Другие вопросы по тегам