WorkflowProcess 中的 DataSourcePool 或 @Reference DataSource

问题描述

我正在使用 AEM 原型编写 AEM 自定义工作流组件。一切都很好。

我可以编写使用引用注释的代码 @Reference(target = "(&(objectclass=javax.sql.DataSource)(datasource.name=MYDB))") 私有数据源 ds;

这很有效 - 我可以查询获取行等。

但是,我不想硬编码 MYDB。

文档让我相信我只能添加: @参考 数据源池DSP;

然后,查找数据源,但是,这不会产生任何结果。我可以遍历所有数据源名称,但没有。
是权限问题吗?

我的组件代码如下所示:

公共类 queryForData 实现 WorkflowProcess { private static final Logger log = LoggerFactory.getLogger(queryForSingleRow.class);

@Reference(target = "(&(objectclass=javax.sql.DataSource)(datasource.name=MYDB))")
private DataSource ds;

@Override
public void execute(WorkItem workItem,WorkflowSession workflowSession,MetaDataMap args) throws WorkflowException {

呸呸呸呸

解决方法

基本上,我在 configManager 中添加了 Day Commons JDBC Pool 连接配置。我缺少的是位于对话框底部的 DataSource 名称,所以我错过了它。一旦我给它一个“名字”,DS 就可以通过仅使用一个 @参考 私有数据源池DSP; 并按名称查找数据源。