2015-10-20 5 views
0

Я работаю в настоящее время с Spring Boot, Tomcat и AWS Elastic Beanstalk.Развертывание новой версии приложения Spring для ElasticBeanstalk, @PreDestroy не вызывается?

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

Что я вижу, так это то, что аннотированные функции @PostConstruct вызываются при каждом запуске приложения, но я никогда не вижу вызывающего вызова @PreDestroy.

Я был в предположении, что контекст закрывался изящно, когда я обновляю среду (отдельную среду). Есть ли что-то, что мне нужно добавить в свойство Application, чтобы вызвать его для вызова @PreDestroy?

Я использую все аннотации и никакой конфигурации XML для этого.

@Component 
public class SomeStructs { 

    static Logger log = LoggerFactory.getLogger(BuzzStructs.class); 

    @PostConstruct 
    public void onCreate(){ 
     log.info("Creating Buzz Structs!"); 
    } 

    @PreDestroy 
    public void onDelete(){ 
     log.info("Deleting Buzz Structs!"); 
     System.out.println("Deleting Junk"); 
    } 
} 

Для этого кусок кода, то @PostConstruct всегда называется, но @PreDestroy никогда не бывает.

Любая помощь приветствуется!

ответ

0

После многих страданий и страданий я понял, что происходит.

Я запускал свой ELB на примере T1.micro (свободный ребенок уровня!). По-видимому, он настолько ограничен, что у него недостаточно памяти для правильной работы JVM, поэтому каждое обновление контекста сопровождалось сбоем JVM. JVM crashes = нет последовательности выключения.

Решение должно было увеличить размер экземпляра до t2.small. Больше не бесплатно, но мое приложение больше не взорвется, что приятно.

Смежные вопросы