Java AEM/CQ5 上的注释(构造后和破坏前)
Java Annotations (Postconstruct and PreDestroy) on AEM/CQ5
是否可以在 AEM 6 中的 OSGI 包的服务 class 上使用带有注释 @PostConstruct
或 @PreDestroy
的方法,因为我打算创建一个单独的用于数据库连接的捆绑包以及我将使用这两个注释的方式是在 @PostConstruct
上打开数据库连接并关闭连接并在 @PreDestroy
上执行提交或回滚。如果不可能,是否有任何其他方法或解决我正在计划的方法?
OSGi 使用一组不同的注释来处理包的激活和停用。
这些是来自 org.apache.felix.scr.annotations
的 @Activate
和 @Deactivate
注释
例如:
@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
但是,我认为您不应该在包的整个生命周期中保持数据库连接打开。只需在真正需要时临时打开和关闭它即可。
激活包时应该创建的不是连接,而是能够构建和维护连接池的对象。
Google左右为DataSourceFactory
interface
此外,我认为 AEM 已经提供了一套 JDBC 连接器 OOTB。在开始开发自定义解决方案之前,请务必检查 Adobe documentation on the subject。
是否可以在 AEM 6 中的 OSGI 包的服务 class 上使用带有注释 @PostConstruct
或 @PreDestroy
的方法,因为我打算创建一个单独的用于数据库连接的捆绑包以及我将使用这两个注释的方式是在 @PostConstruct
上打开数据库连接并关闭连接并在 @PreDestroy
上执行提交或回滚。如果不可能,是否有任何其他方法或解决我正在计划的方法?
OSGi 使用一组不同的注释来处理包的激活和停用。
这些是来自 org.apache.felix.scr.annotations
@Activate
和 @Deactivate
注释
例如:
@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
但是,我认为您不应该在包的整个生命周期中保持数据库连接打开。只需在真正需要时临时打开和关闭它即可。
激活包时应该创建的不是连接,而是能够构建和维护连接池的对象。
Google左右为DataSourceFactory
interface
此外,我认为 AEM 已经提供了一套 JDBC 连接器 OOTB。在开始开发自定义解决方案之前,请务必检查 Adobe documentation on the subject。