Using "assets" property of "RuntimeEnvironmentFactoryBean" Spring bean to load BPMN2 process definitions from kjar causes "java.io.FileNotFoundException"
Issue
- There are scenarios where users would like to use the obtain and load kjars (containing
BPMN2
process definitions) downloaded to the localmaven repository
inside the<USER_HOME>/.m2/repository
location of the filesystem within their Spring based applications. In such a scenario there seems to be a problem with configuring and usingorg.kie.spring.factorybeans.RuntimeEnvironmentFactoryBean
bean to define theG.A.V.
details of the intended kjars. The problem arises when users attempt to choose specific assets (e.g.BPMN2
process definitions) from kjars usingassets
property throughorg.kie.spring.factorybeans.RuntimeEnvironmentFactoryBean
bean configuration insideApplicationContext.xml
file as shown below.
...
<bean id="processA" factory-method="newClassPathResource" class="org.kie.internal.io.ResourceFactory">
<constructor-arg>
<value>com/aaa/bbb/ccc/package/SimpleProcess.bpmn2</value>
</constructor-arg>
</bean>
<bean id="defaultRuntimeEnvironment" class="org.kie.spring.factorybeans.RuntimeEnvironmentFactoryBean" >
...
<property name="kbaseName" value="firstKBase"/>
<property name="assets">
<map>
<entry key-ref="processA"><util:constant static-field="org.kie.api.io.ResourceType.BPMN2"/>
</entry>
</map>
</property>
<property name="groupId" value= "com.simple.jbpm.process"/>
<property name="artifactId" value= "SimpleProcessProject"/>
<property name="version" value= "1.0-SNAPSHOT"/>
</bean>
...
During the deployment of the application it throws the following exception.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultRuntimeManager' defined in class path resource [ApplicationContext.xml]: Cannot resolve reference to bean 'defaultRuntimeEnvironment' while setting bean property 'defaultRuntimeEnvironment'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultRuntimeEnvironment': FactoryBean threw exception on object creation; nested exception is java.lang.RuntimeException: Unable to get LastModified for ClasspathResource
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1327)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1085)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:516)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:567)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at com.sample.RuntimeManagerTest.testBean(RuntimeManagerTest.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at junit.framework.TestCase.runTest(TestCase.java:176)
at junit.framework.TestCase.runBare(TestCase.java:141)
at junit.framework.TestResult$1.protect(TestResult.java:122)
at junit.framework.TestResult.runProtected(TestResult.java:142)
at junit.framework.TestResult.run(TestResult.java:125)
at junit.framework.TestCase.run(TestCase.java:129)
at junit.framework.TestSuite.runTest(TestSuite.java:255)
at junit.framework.TestSuite.run(TestSuite.java:250)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:84)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultRuntimeEnvironment': FactoryBean threw exception on object creation; nested exception is java.lang.RuntimeException: Unable to get LastModified for ClasspathResource
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:149)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:109)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1440)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:247)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
... 34 more
Caused by: java.lang.RuntimeException: Unable to get LastModified for ClasspathResource
at org.drools.core.io.impl.ClassPathResource.getLastModified(ClassPathResource.java:211)
at org.drools.core.io.impl.ClassPathResource.getInputStream(ClassPathResource.java:148)
at org.drools.core.io.impl.ClassPathResource.getReader(ClassPathResource.java:233)
at org.jbpm.compiler.ProcessBuilderImpl.addProcessFromXml(ProcessBuilderImpl.java:264)
at org.drools.compiler.compiler.PackageBuilder.addProcessFromXml(PackageBuilder.java:700)
at org.drools.compiler.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:741)
at org.drools.compiler.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:51)
at org.drools.compiler.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:40)
at org.jbpm.runtime.manager.impl.SimpleRuntimeEnvironment.addAsset(SimpleRuntimeEnvironment.java:104)
at org.jbpm.runtime.manager.impl.RuntimeEnvironmentBuilder.addAsset(RuntimeEnvironmentBuilder.java:281)
at org.jbpm.runtime.manager.impl.RuntimeEnvironmentBuilder.addAsset(RuntimeEnvironmentBuilder.java:56)
at org.kie.spring.factorybeans.RuntimeEnvironmentFactoryBean.getObject(RuntimeEnvironmentFactoryBean.java:179)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142)
... 39 more
Caused by: java.io.FileNotFoundException: 'com/aaa/bbb/ccc/package/SimpleProcess.bpmn2' cannot be opened because it does not exist
at org.drools.core.io.impl.ClassPathResource.getURL(ClassPathResource.java:172)
at org.drools.core.io.impl.ClassPathResource.getLastModified(ClassPathResource.java:184)
... 51 more
- What is the root cause of this issue and how to workaround it?
Environment
- Red Hat JBoss BPM Suite (BPMS)
- 6.0.3
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.