[rules-users] Drools With Spring Framework Problem
Edson Tirelli
tirelli at post.com
Tue Feb 20 08:15:33 EST 2007
Niyas,
This one seems to be a conflict when using JDT and tomcat. Look at
the JBoss Rules wiki that I believe someone posted a solution for that
there.
[]s
Edson
Niyas wrote:
> Hi Edson,
>
> Thanks for your reply.
>
> Yes, you are correct and I have changed the operator ">" . But I am
> getting some other error now.
>
> javax.servlet.ServletException: Servlet.init() for servlet insurance
> threw exception
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
>
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
>
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>
> java.lang.Thread.run(Thread.java:595)
>
>
> root cause
>
> org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name '/home.htm' defined in ServletContext resource
> [/WEB-INF/insurance-servlet.xml]: Cannot resolve reference to bean
> 'ruleBase' while setting bean property 'ruleBase'; nested exception is
> org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'ruleBase' defined in ServletContext resource
> [/WEB-INF/insurance-servlet.xml]: Initialization of bean failed;
> nested exception is java.lang.NoSuchMethodError:
> org.eclipse.jdt.internal.compiler.CompilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/CategorizedProblem;
>
> org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:190)
>
> org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1046)
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:857)
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:378)
>
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:233)
>
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:145)
>
> org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:537)
>
> org.springframework.web.servlet.handler.AbstractUrlHandlerMapping.registerHandler(AbstractUrlHandlerMapping.java:186)
>
> org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping.initApplicationContext(BeanNameUrlHandlerMapping.java:62)
>
> org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(ApplicationObjectSupport.java:73)
>
> org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:84)
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:277)
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:395)
>
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:233)
>
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:145)
>
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:283)
>
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:313)
>
> org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:139)
>
> org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:306)
>
> org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:251)
>
> org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:220)
>
> org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:112)
>
> javax.servlet.GenericServlet.init(GenericServlet.java:211)
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
>
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
>
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>
> java.lang.Thread.run(Thread.java:595)
>
>
> And also while I starting the tomcat, in the server console the same
> error message is displaying:
>
> Feb 20, 2007 5:00:15 PM org.apache.coyote.http11.Http11BaseProtocol start
> INFO: Starting Coyote HTTP/1.1 on http-8080
> Feb 20, 2007 5:00:16 PM org.apache.jk.common.ChannelSocket init
> INFO: JK: ajp13 listening on /0.0.0.0:8009
> Feb 20, 2007 5:00:16 PM org.apache.jk.server.JkMain start
> INFO: Jk running ID=0 time=0/31 config=null
> Feb 20, 2007 5:00:16 PM org.apache.catalina.storeconfig.StoreLoader load
> INFO: Find registry server-registry.xml at classpath resource
> Feb 20, 2007 5:00:16 PM org.apache.catalina.startup.Catalina start
> INFO: Server startup in 9609 ms
> java.lang.NoSuchMethodError:
> org.eclipse.jdt.internal.compiler.CompilationResult
> .getProblems()[Lorg/eclipse/jdt/core/compiler/CategorizedProblem;
> at
> org.apache.commons.jci.compilers.EclipseJavaCompiler$2.acceptResult(E
> clipseJavaCompiler.java:237)
> at
> org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:335)
>
> at
> org.apache.commons.jci.compilers.EclipseJavaCompiler.compile(EclipseJ
> avaCompiler.java:268)
> at org.drools.compiler.PackageBuilder.compileAll(Unknown Source)
> at org.drools.compiler.PackageBuilder.addPackage(Unknown Source)
> at org.drools.compiler.PackageBuilder.addPackageFromDrl(Unknown
> Source)
> at
> com.sample.RuleBaseBeanFactory.afterPropertiesSet(RuleBaseBeanFactory
> .java:31)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBean
> Factory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1091)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBean
> Factory.createBean(AbstractAutowireCapableBeanFactory.java:396)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean
> (AbstractBeanFactory.java:233)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean
> (AbstractBeanFactory.java:145)
> at
> org.springframework.beans.factory.support.BeanDefinitionValueResolver
> .resolveReference(BeanDefinitionValueResolver.java:186)
> at
> org.springframework.beans.factory.support.BeanDefinitionValueResolver
> .resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBean
> Factory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1046)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBean
> Factory.populateBean(AbstractAutowireCapableBeanFactory.java:857)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBean
> Factory.createBean(AbstractAutowireCapableBeanFactory.java:378)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean
> (AbstractBeanFactory.java:233)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean
> (AbstractBeanFactory.java:145)
> at
> org.springframework.context.support.AbstractApplicationContext.getBea
> n(AbstractApplicationContext.java:537)
> at
> org.springframework.web.servlet.handler.AbstractUrlHandlerMapping.reg
> isterHandler(AbstractUrlHandlerMapping.java:186)
> at
> org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping.ini
> tApplicationContext(BeanNameUrlHandlerMapping.java:62)
> at
> org.springframework.context.support.ApplicationObjectSupport.setAppli
> cationContext(ApplicationObjectSupport.java:73)
> at
> org.springframework.context.support.ApplicationContextAwareProcessor.
> postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:84)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBean
> Factory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanF
>
> actory.java:277)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBean
> Factory.createBean(AbstractAutowireCapableBeanFactory.java:395)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean
> (AbstractBeanFactory.java:233)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean
> (AbstractBeanFactory.java:145)
> at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.
> preInstantiateSingletons(DefaultListableBeanFactory.java:283)
> at
> org.springframework.context.support.AbstractApplicationContext.refres
> h(AbstractApplicationContext.java:313)
> at
> org.springframework.web.context.support.AbstractRefreshableWebApplica
> tionContext.refresh(AbstractRefreshableWebApplicationContext.java:139)
> at
> org.springframework.web.servlet.FrameworkServlet.createWebApplication
> Context(FrameworkServlet.java:306)
> at
> org.springframework.web.servlet.FrameworkServlet.initWebApplicationCo
> ntext(FrameworkServlet.java:251)
> at
> org.springframework.web.servlet.FrameworkServlet.initServletBean(Fram
> eworkServlet.java:220)
> at
> org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.
> java:112)
> at javax.servlet.GenericServlet.init(GenericServlet.java:211)
> at
> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.
> java:1105)
> at
> org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.jav
> a:757)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
> alve.java:130)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
> alve.java:178)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
> ava:126)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
> ava:105)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
> ve.java:107)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
> a:148)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
> :869)
> at
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p
> rocessConnection(Http11BaseProtocol.java:664)
> at
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo
> int.java:527)
> at
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol
> lowerWorkerThread.java:80)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
> ool.java:684)
> at java.lang.Thread.run(Thread.java:595)
>
>
> On 2/20/07, Edson Tirelli <tirelli at post.com> wrote:
>
>>
>> Hi Niyas,
>>
>> This is something I faced yesterday but did not had the time to work
>> on it yet. Basically, 2 problems:
>>
>> 1. Error message is crap... we need to improve that.
>>
>> 2. It should not be raising any error. The error means you have a String
>> attribute you are trying to compare using operators like >, <, >=, <=.
>> Example:
>>
>> Person( name > 'Edson' )
>>
>> And I think the above should work but is not working. I will open a
>> JIRA for that.
>> Meanwhile, if you need to have such constraint, a workaround is to
>> use a predicate:
>>
>> Person( $n : name, ( $n.compareTo( 'Edson' ) > 0 ) )
>>
>> []s
>> Edson
>>
>>
>> Niyas wrote:
>>
>> > I have tried of using the sample coding given the link given by you:
>> > But i am getting the following error:
>> > org.springframework.beans.factory.BeanCreationException: Error
>> > creating bean with name 'ruleBase' defined in ServletContext resource
>> > [/WEB-INF/insurance-servlet.xml]: Initialization of bean failed;
>> > nested exception is java.lang.RuntimeException: Operator '40' does not
>> > exist for StringEvaluator
>> >
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:403)
>>
>> >
>> >
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:233)
>>
>> >
>> >
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:145)
>>
>> >
>> >
>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:277)
>>
>> >
>> >
>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:313)
>>
>> >
>> >
>> org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:139)
>>
>> >
>> >
>> org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:306)
>>
>> >
>> >
>> org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:251)
>>
>> >
>> >
>> org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:220)
>>
>> >
>> >
>> org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:112)
>>
>> >
>> > javax.servlet.GenericServlet.init(GenericServlet.java:211)
>> >
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>>
>> >
>> >
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>>
>> >
>> >
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
>>
>> >
>> >
>> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
>>
>> >
>> >
>> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>>
>> >
>> >
>> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>>
>> >
>> >
>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>>
>> >
>> > java.lang.Thread.run(Thread.java:595)
>> > ========================================================
>> > My insurance-servlet.xml:
>> > <beans>
>> > <!-- default handlermapping -->
>> > <bean id="beanNameUrlMapping"
>> >
>> class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
>>
>> >
>> >
>> > <bean name="/home.htm" class="com.sample.InsuranceController"
>> > singleton="false">
>> > <property name="ruleBase">
>> > <ref bean="ruleBase"/>
>> > </property>
>> > <property name="insurBean">
>> > <ref bean="insurance"/>
>> > </property>
>> > </bean>
>> >
>> > <!-- View Resolver -->
>> > <bean id="viewResolver"
>> >
>> class="org.springframework.web.servlet.view.InternalResourceViewResolver">
>>
>> >
>> > <property name="prefix">
>> > <value>/WEB-INF/jsp/</value>
>> > </property>
>> > <property name="suffix">
>> > <value>.jsp</value>
>> > </property>
>> > </bean>
>> >
>> > <!-- Bean -->
>> > <bean id="insurance" class="com.sample.InsuranceBean"/>
>> >
>> >
>> > <bean id="ruleBase" class="com.sample.RuleBaseBeanFactory">
>> > <property name="drlResourceList">
>> > <list>
>> > <value
>> >
>> type="org.springframework.core.io.Resource">classpath:/com/sample/Approval.drl</value>
>>
>> >
>> > </list>
>> > </property>
>> >
>> > <property name="packageBuilderConfiguration">
>> > <bean
>> > class="org.drools.compiler.PackageBuilderConfiguration">
>> > <property name="javaLanguageLevel" value="1.5"/>
>> > </bean>
>> > </property>
>> > </bean>
>> > </beans>
>> >
>> >
>> >
>> > On 2/19/07, Olenin, Vladimir (MOH) <Vladimir.Olenin at moh.gov.on.ca>
>> wrote:
>> >
>> >> Check out 'Spring Modules' subproject - it has a DROOLS integration
>> >> module.
>> >> Haven't used it myself yet, so not sure whether it's
>> >> mature/compatible with
>> >> most recent release.
>> >>
>> >>
>> https://springmodules.dev.java.net/docs/reference/0.7/html/jsr94.html#d0e570
>>
>> >>
>> >> 9
>> >>
>> >> https://springmodules.dev.java.net/
>> >>
>> >> Vlad
>> >>
>> >>
>> >> -----Original Message-----
>> >> From: rules-users-bounces at lists.jboss.org
>> >> [mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Niyas
>> >> Sent: 19 February 2007 09:49
>> >> To: rules-users at lists.jboss.org
>> >> Subject: [rules-users] Drools With Spring Framework Problem
>> >>
>> >> Hi all,
>> >>
>> >> I am in need of integrating Drools JBoss Rule Engine with Spring
>> >> Framework.
>> >> I have tried sample rule engine examples in the Drools in the
>> >> standalone with the help od drools IDE for eclipse 3.2.
>> >> And I also tried some example in the Spring Framework,to know how it
>> >> works. I have tried some examples in IOC, MVC and JDBC in the spring
>> >> framework.
>> >>
>> >> Now, I want to use both Drools and Spring Framework in such a way
>> that
>> >> Spring will have the MVC application and it should validate the
>> rules,
>> >> which written in the drools (.drl)
>> >>
>> >> I don't know how to begin with/what are he configuration files needed
>> >> to setup. PLease if anyone have the sample coding on Drools with
>> >> Spring or any other links willl be very useful.
>> >>
>> >> And also, guide me what are the things need to be know for Spring
>> with
>> >> Drools. While I have searched in google, lots of things came up like:
>> >>
>> >> Use JSR94... (which is mentioning to configure RuleServiceProvider,
>> >> RuleRuntime, RuleSet..and others..which seeme to be confusing and not
>> >> clear)
>> >>
>> >> Whether there are any API for drools with spring that DROOLS is
>> >> supporting..like org.drools.spring.metadata.ArgumentMetadataSource. I
>> >> don't find these Drools API section
>> >>
>> http://labs.jboss.com/file-access/default/members/jbossrules/freezone/docs/3
>>
>> >>
>> >> .0.5/apidocs/index.html
>> >> _______________________________________________
>> >> rules-users mailing list
>> >> rules-users at lists.jboss.org
>> >> https://lists.jboss.org/mailman/listinfo/rules-users
>> >> _______________________________________________
>> >> rules-users mailing list
>> >> rules-users at lists.jboss.org
>> >> https://lists.jboss.org/mailman/listinfo/rules-users
>> >>
>> > _______________________________________________
>> > rules-users mailing list
>> > rules-users at lists.jboss.org
>> > https://lists.jboss.org/mailman/listinfo/rules-users
>> >
>>
>>
>> --
>> Edson Tirelli
>> Software Engineer - JBoss Rules Core Developer
>> Office: +55 11 3124-6000
>> Mobile: +55 11 9218-4151
>> JBoss, a division of Red Hat @ www.jboss.com
>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3124-6000
Mobile: +55 11 9218-4151
JBoss, a division of Red Hat @ www.jboss.com
More information about the rules-users
mailing list