jbpm4.3 repositoryService circular reference 循环引用
来源:互联网 发布:杨幂 知乎 编辑:程序博客网 时间:2024/04/29 03:59
jbmp4.3 整合spring, 配置文件只注入processEngine 就没问题。
但是如果注入repositoryService , taskService等就会出现 Is there an unresolvable circular reference?
但注入repositoryService:
就报如下错误
Error creating bean with name 'repositoryService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public final org.jbpm.api.RepositoryService org.jbpm.pvm.internal.processengine.SpringProcessEngine$$EnhancerByCGLIB$$66ea6eb4.getRepositoryService()] threw exception; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'repositoryService': Requested bean is currently in creation: Is there an unresolvable circular reference?
分析原因是SpringProcessEngine.getRepositoryService会调用getBean的, 出现循环引用的错误
解决方案就是
方法1就是
方法2就是在写个工厂类, 通过processEngineWireContext构造出一个工厂类, 工厂类中有getRepositoryService,getTaskService等方法
但是如果注入repositoryService , taskService等就会出现 Is there an unresolvable circular reference?
- <bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" />
- <bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
但注入repositoryService:
- <bean id="repositoryService" factory-bean="processEngine"
- factory-method="getRepositoryService" />
就报如下错误
Error creating bean with name 'repositoryService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public final org.jbpm.api.RepositoryService org.jbpm.pvm.internal.processengine.SpringProcessEngine$$EnhancerByCGLIB$$66ea6eb4.getRepositoryService()] threw exception; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'repositoryService': Requested bean is currently in creation: Is there an unresolvable circular reference?
分析原因是SpringProcessEngine.getRepositoryService会调用getBean的, 出现循环引用的错误
- // SpringProcessEngine中的方法, getRepositoryService,getTaskService,等都是最终调用这个方法的
- public <T> T get(Class<T> type) {
- String[] names = applicationContext.getBeanNamesForType(type);
- if (names.length >= 1) {
- if (names.length > 1 && log.isWarnEnabled()) {
- log.warn("Multiple beans for type " + type + " found. Returning the first result.");
- }
- return (T) applicationContext.getBean(names[0]); // 会出现循环引用错误
- }
- return super.get(type);
- }
解决方案就是
方法1就是
- <bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" />
- <bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
- <bean id="processEngineWireContext" factory-bean="processEngine" factory-method="getProcessEngineWireContext" />
- <bean id="repositoryService" factory-bean="processEngineWireContext" factory-method="get">
- <constructor-arg>
- <value type="java.lang.Class">org.jbpm.api.RepositoryService</value>
- </constructor-arg>
- </bean>
方法2就是在写个工厂类, 通过processEngineWireContext构造出一个工厂类, 工厂类中有getRepositoryService,getTaskService等方法
- jbpm4.3 repositoryService circular reference 循环引用
- JBPM4 - RepositoryService
- java.lang.IllegalStateException: circular reference error Gson循环引用
- jbpm4.0-RepositoryService分析
- JBPM4 下RepositoryService的用法
- SPRING循环依赖(circular reference)的解决方法
- SPRING循环依赖(circular reference)的解决方法
- reference cycle 引用循环
- JBPM4.4工作流引擎学习(四)--流程资源RepositoryService
- Circular Reference with Blocks
- spring 循环注入:is there an unresolvable circular reference的解决方案
- gson circular reference error问题
- 循环单链表(circular list)
- 循环队列(circular queue)
- 循环队列(Circular Queue)
- nodejs 循环引用JSON序列化错误的解决办法:TypeError: Converting circular structure to JSON
- 关于循环强引用(Strong Reference Cycles)
- 【读书笔记】循环引用(reference cycles)的问题
- 记Redis那坑人的HGETALL
- 财报显示中兴通讯2012年减少1.1万员工
- sql 基础操作
- 用PHP遍历文件夹(递归)
- 通过Spring的配置文件来访问WebService
- jbpm4.3 repositoryService circular reference 循环引用
- 编程之美大赛初赛的一点整理
- 动态生成rdlc 报表(转载)
- Croc Champ 2013 - Qualification Round(完全)
- Android使用AttributeSet自定义控件的方法
- 虚拟货币比特币的前世今生
- linux 进程间通信(IPC)一共享内存
- How to enter deep idle with USB plugged in (Used For Debugging)
- TCP/IP 网络数据包