我正在尝试使用ClassPathXmlApplicationContext
加载具有以下详细信息的activiti-cfg.xml。
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("activiti-cfg.xml");
Getting Error:
Caused by: java.lang.IllegalStateException: Already value [org.springframework.jdbc.datasource.ConnectionHolder] for key [org.apache.tomcat.dbcp.dbcp2.BasicDataSource] bound to thread [localhost-startStop-1]
任何解决此问题的建议都会有所帮助。
activiti-cfg.xml
:
<context:annotation-config />
<tx:annotation-driven transaction-manager="transactionManager" />
<context:component-scan base-package="com.dds.flow" />
<!-- Configuration of Datasource -->
<bean id="adminDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/admin" />
<property name="resourceRef" value="false" />
</bean>
<bean id="sampleDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/sample" />
<property name="resourceRef" value="false" />
</bean>
<!-- Configuration of transaction manager -->
<bean id="adminDSTransactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="adminDataSource" />
</bean>
<bean id="sampleDSTransactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="sampleDataSource" />
</bean>
<bean id="transactionManager"
class="org.springframework.data.neo4j.transaction.ChainedTransactionManager">
<constructor-arg>
<list>
<ref bean="adminDSTransactionManager" />
<ref bean="sampleDSTransactionManager" />
</list>
</constructor-arg>
</bean>
<bean name="quartzScheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="dataSource" ref="adminDataSource"></property>
<property name="configLocation" value="quartz.properties"></property>
<property name="transactionManager" ref="transactionManager"></property>
<property name="jobFactory">
<bean class="org.springframework.scheduling.quartz.SpringBeanJobFactory"></bean>
</property>
</bean>
<bean name="simpleTriggerBean"
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean" scope="prototype">
<property name="group" value="WorkflowTriggerGroup"></property>
<property name="jobGroup" value="WorkflowJobGroup"></property>
</bean>
<bean id="jobTriggerFactory"
class="org.springframework.beans.factory.config.ObjectFactoryCreatingFactoryBean">
<property name="targetBeanName">
<idref bean="simpleTriggerBean" />
</property>
</bean>
<!-- Configuration of Spring into Activiti -->
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
<property name="dataSource" ref="adminDataSource" />
<property name="transactionManager" ref="transactionManager" />
<property name="databaseSchemaUpdate" value="true" />
<property name="asyncExecutorActivate" value="false" />
<property name="history" value="audit" />
</bean>
<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>
<bean id="repositoryService" factory-bean="processEngine"
factory-method="getRepositoryService" />
<bean id="runtimeService" factory-bean="processEngine"
factory-method="getRuntimeService" />
<bean id="taskService" factory-bean="processEngine"
factory-method="getTaskService" />
<bean id="historyService" factory-bean="processEngine"
factory-method="getHistoryService" />
<bean id="managementService" factory-bean="processEngine"
factory-method="getManagementService" />
</beans>