2015-11-27 1 views
0

Возможно ли использовать метод с аннотациями @PostConstruct или @PreDestroy в классе обслуживания пакета OSGI в AEM 6, поскольку я планирую создать отдельный пакет для подключение к базе данных и способ использования этих двух аннотаций - открыть соединение с базой данных на @PostConstruct и закрыть соединение и выполнить для фиксации или откат на @PreDestroy. Если это невозможно, есть ли какой-либо другой способ или работать вокруг подхода, который я планирую?Java Annotations (Postconstruct and PreDestroy) на AEM/CQ5

ответ

3

OSGi использует другой набор аннотаций для обработки активации и деактивации пакета.

Это @Activate и @Deactivate аннотаций из org.apache.felix.scr.annotations

Например:

@Component 
public class Foo implements Bar { 

    @Activate 
    void activate(ComponentContext ctx) { 
     System.out.println("Activating bundle: " + ctx.getUsingBundle()); 
    } 

    @Deactivate 
    void deactivate(ComponentContext ctx) { 
     System.out.println("Deactivating bundle: " + ctx.getUsingBundle()); 
    } 
} 

Для получения дополнительной информации ознакомьтесь с OSGi wiki

Однако, я не думаю, что вы должны держать соединение с базой данных открыто на протяжении всего жизненного цикла пакета. Просто откройте и закройте его ad-hoc, когда вам это действительно нужно.

Что нужно создать при активации пучка, это не соединение, а объект, способный создавать и поддерживать пул соединений.

Google вокруг для DataSourceFactory interface

Кроме того, я думаю, что AEM уже предоставляет набор JDBC разъемы OOTB. Обязательно проверьте Adobe documentation on the subject перед погружением в разработку настраиваемого решения.

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