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
боб.