Spring Activiti JNDI数据源配置

Spring Activiti JNDI数据源配置,spring,jndi,activiti,Spring,Jndi,Activiti,我正在安装Activiti 5.17.0的Activiti Explorer,并希望使用基于JNDI的数据源配置连接到Oracle数据库。我在这里找到的文档:非常明确地说明了如何进行此更改,但不幸的是,这些文档似乎已经过时 特别是,我在提到的地方没有发现activiti standalone context.xml和activiti context.xml。我假设它被更改为activiti custom context.xml,但是这个Spring配置的全部内容都被注释掉了(这让我想知道实际的S

我正在安装Activiti 5.17.0的Activiti Explorer,并希望使用基于JNDI的数据源配置连接到Oracle数据库。我在这里找到的文档:非常明确地说明了如何进行此更改,但不幸的是,这些文档似乎已经过时

特别是,我在提到的地方没有发现
activiti standalone context.xml
activiti context.xml
。我假设它被更改为
activiti custom context.xml
,但是这个Spring配置的全部内容都被注释掉了(这让我想知道实际的Spring配置可能来自哪里)

我尝试使用以下方法在此文件中配置数据源:

<jee:jndi-lookup id="dataSource"
           jndi-name="jdbc/activiti-ds"
           expected-type="javax.sql.DataSource" />

如何完成这项任务有什么提示吗?可能是指向最新文档的指针?

Activiti用户指南包括有关如何在此处配置JDBC数据源的更新说明:

您需要在web应用程序的ActivitiEngineConfiguration类中配置数据源bean,并更新以下代码行以引用新数据源:

processEngineConfiguration.setDataSource(dataSource())


如果您想继续使用Spring XML配置,您仍然可以在activiti custom context.XML中定义自定义bean。

为了进一步参考,我通过在ActivitiEngineConfiguration.java中编辑Spring JavaConfig并用以下代码替换其中的数据源bean创建来解决此问题:

@Bean
public DataSource dataSource() {
    final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
    dsLookup.setResourceRef(true);
    DataSource dataSource = dsLookup.getDataSource("jdbc/activiti-ds");
    return dataSource;
}
在重新编译模块并部署之后,它似乎可以完美地工作


非常感谢格雷格·哈雷,他的问题和评论帮助解决了这个问题

有两点您引用了与我相同的文档,但我仍然认为它已经过时(例如,引用了不存在的配置文件)-我确实知道如何配置JNDI数据源,而且它似乎被发现了问题是我上面显示的ClassCastException。您对此有什么想法吗?特别是,链接的官方文档所指的SpringXML配置已根据其git存储库在5.16.3和5.16.4之间删除。听起来您指的是示例应用程序(Explorer和rest)。这些只是作为示例,并没有完全发挥作用或完成应用程序。您仍然可以在应用程序中使用Spring XML而不是Spring注释(如5.16.2之前的版本)。是的,我正在尝试部署这些注释,但我无法摆脱添加到原始帖子中的ClassCastException。好的,您的类强制转换异常指示您正在使用JNDI检索数据源。你能在这个线程中包含你的bean配置吗?这样我们就可以验证了。如果确实要创建JndiObjectFactory而不是数据源,那么需要调用bean上的getObject()方法并将其转换为数据源。我想更改activiti explorer数据库并更改db.properties。当我想登录时,我不知道用户名和密码。请帮帮我。谢谢
java.lang.ClassCastException: org.springframework.jndi.JndiObjectFactoryBean$$EnhancerBySpringCGLIB$$69ba43af cannot be cast to javax.sql.DataSource
    at org.activiti.explorer.conf.ActivitiEngineConfiguration$$EnhancerBySpringCGLIB$$5db7207e.dataSource(<generated>)
    at org.activiti.explorer.conf.ActivitiEngineConfiguration.processEngineConfiguration(ActivitiEngineConfiguration.java:91)
@Bean
public DataSource dataSource() {
    final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
    dsLookup.setResourceRef(true);
    DataSource dataSource = dsLookup.getDataSource("jdbc/activiti-ds");
    return dataSource;
}