Hi All- I'm trying to use Drools in a Spring 4 applications. Trying to inject
a StatelessSession in a Spring bean:

@Service
public class RulesServiceImpl implements RulesService {
        @Inject()
        private StatelessKieSession kStatelessSession;

...
}

This results in:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type [org.kie.api.runtime.StatelessKieSession] found
for dependency: expected at least 1 bean which qualifies as autowire
candidate for this dependency. Dependency annotations:
{@javax.inject.Inject()}

pom.xml is as follows:

<kie.version>6.0.1.Final</kie.version>
<drools.version>6.0.1.Final</drools.version>

                <dependency>
                        <groupId>org.kie</groupId>
                        <artifactId>kie-api</artifactId>
                        <version>${kie.version}</version>
                </dependency>
                <dependency>
                        <groupId>org.kie</groupId>
                        <artifactId>kie-internal</artifactId>
                        <version>${kie.version}</version>
                </dependency>
                <dependency>
                        <groupId>org.drools</groupId>
                        <artifactId>drools-core</artifactId>
                        <version>${drools.version}</version>
                </dependency>
                <dependency>
                        <groupId>org.drools</groupId>
                        <artifactId>drools-compiler</artifactId>
                        <version>${drools.version}</version>
                </dependency>
                <dependency>
                        <groupId>org.kie</groupId>
                        <artifactId>kie-spring</artifactId>
                        <version>${kie.version}</version>
                </dependency>

and applicationContext.xml:

        <kie:kmodule id="kmodule1">
                <kie:kbase name="kbase1" packages="rules">
                        <kie:ksession name="ksession1" type="stateless" />
                </kie:kbase>
        </kie:kmodule>

        <bean id="kiePostProcessor"
class="org.kie.spring.KModuleBeanFactoryPostProcessor" />


I also tried the other route:

        @PostConstruct
        public void setUp() {
                KieServices kieServices = KieServices.Factory.get();
                KieContainer kContainer = 
kieServices.getKieClasspathContainer();

                kStatelessSession = 
kContainer.newStatelessKieSession("ksession1");
        }

This results in NullPointerException:

Caused by: java.lang.NullPointerException
        at
org.drools.compiler.kie.builder.impl.KieContainerImpl.newStatelessKieSession(KieContainerImpl.java:444)
        at
org.drools.compiler.kie.builder.impl.KieContainerImpl.newStatelessKieSession(KieContainerImpl.java:435)
        at
ca.utoronto.med.dc.webcv.service.RulesServiceImpl.setUp(RulesServiceImpl.java:27)
        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
org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:349)
        at
org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:300)
        at
org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133)
        ... 23 more

I do see the following in the console:
2014-02-10 20:05:06,263 DEBUG
org.drools.compiler.kie.builder.impl.ClasspathKieProject.getPomProperties(210): 
- Found and used pom.properties
\work\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\dcwebcv\META-INF\maven\ca.utoronto.med.dc\dcwebcv\pom.properties
releaseId == ca.utoronto.med.dc:dcwebcv:1.0-SNAPSHOT
2014-02-10 20:05:06,407 INFO 
org.drools.compiler.kie.builder.impl.KieRepositoryImpl.addKieModule(72):  -
KieModule was added:FileKieModule[
ReleaseId=ca.utoronto.med.dc:dcwebcv:1.0-SNAPSHOTfile=\work\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\dcwebcv\WEB-INF\classes]

Any pointer will be highly appreciated.



--
View this message in context: 
http://drools.46999.n3.nabble.com/Spring-4-0-Drools-6-0-1-Integration-issue-tp4028052.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to