[rules-dev] Drools and GWT Application integration

Moses Kalema mkgremo20 at gmail.com
Wed Sep 11 05:51:00 EDT 2013


In my serviceImplementation[in the server package] class in GWT RPC
When i try to check the execution the system doesn't run this line:
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
//inputStream =
this.getClass().getClassLoader().getResourceAsStream("ChangeSet.xml");
url= this.getClass().getClassLoader().getResource("ChangeSet.xml");
workingDirectory = System.getProperty("user.dir");
System.out.println("URL "+url);
file = new File(workingDirectory +"/src/ChangeSet.xml");
if(file.exists()){
System.out.println("Directory "+file.getName());
 }
else{
System.out.println("File not seen");
}
kbuilder.add( ResourceFactory.newUrlResource(url),ResourceType.CHANGE_SET);
 if( kbuilder.hasErrors() ) {

    System.out.println( kbuilder.getErrors() );
    System.out.println("The changeset file has errors");
   // return;
}else{
System.out.println("The changeset has no errors");
}

 KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
 System.out.println("knowledgebase has been created");

 KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent( "MyAgent"
);
// URL url = getClass().getResource("ChangeSet.xml");
// File file = new File(url.getPath());
 kagent.applyChangeSet( ResourceFactory.newUrlResource(url) );
 kbase = kagent.getKnowledgeBase();
 ResourceFactory.getResourceChangeNotifierService().start();
 ResourceFactory.getResourceChangeScannerService().start();
 System.out.println("knowledge agent created");

 StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
 System.out.println("session created");
 FactType factType = kbase.getFactType("procnet.requisition.test",
"requisition");
try {
Object obj = factType.newInstance();
factType.set(obj, "requisitionType", requisitionType);
factType.set(obj, "totalCost", totalCost);
FactHandle objHandle = ksession.insert(obj);
ksession.fireAllRules();
System.out.println(factType.get(obj, "approvalMessage"));
approvalMessage = (String) factType.get(obj, "approvalMessage");
//System.out.println(factType.get(obj, "name"));
} catch (InstantiationException e) {
 e.printStackTrace();
} catch (IllegalAccessException e) {
 e.printStackTrace();
}
return approvalMessage;
This is the exact code i use in a normal java application and it works
fine,infact even when i run the class as a java application it returns the
approve message from guvnor.
I find this strange
This is the error am getting,
        02:19:43.040 [WARN] Exception while dispatching incoming RPC call

com.google.gwt.user.server.rpc.UnexpectedException: Service method
'public abstract com.planet.requisition.client.rules.RequisitionTemp
com.planet.requisition.client.rules.RequisitionTempService.getRequisitionDet(java.lang.String,int)'
threw an unexpected exception: java.lang.NoClassDefFoundError:
org/slf4j/LoggerFactory
	at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:385)
	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:588)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.Server.handle(Server.java:324)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
Caused by: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
	at org.drools.util.ServiceRegistryImpl.<clinit>(ServiceRegistryImpl.java:55)
	at org.drools.builder.KnowledgeBuilderFactory.loadServiceFactory(KnowledgeBuilderFactory.java:130)
	at org.drools.builder.KnowledgeBuilderFactory.getKnowledgeBuilderServiceFactory(KnowledgeBuilderFactory.java:124)
	at org.drools.builder.KnowledgeBuilderFactory.newKnowledgeBuilder(KnowledgeBuilderFactory.java:46)
	at com.requisition.RequisitionApproval.main(RequisitionApproval.java:35)
	at com.requisition.TestInputStream.main(TestInputStream.java:22)
	at com.planet.requisition.server.RequisitionTempServiceImpl.getRequisitionDet(RequisitionTempServiceImpl.java:37)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.Server.handle(Server.java:324)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload$WebAppClassLoaderExtension.findClass(JettyLauncher.java:372)
	at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:366)
	at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:337)
	at org.drools.util.ServiceRegistryImpl.<clinit>(ServiceRegistryImpl.java:55)
	at org.drools.builder.KnowledgeBuilderFactory.loadServiceFactory(KnowledgeBuilderFactory.java:130)
	at org.drools.builder.KnowledgeBuilderFactory.getKnowledgeBuilderServiceFactory(KnowledgeBuilderFactory.java:124)
	at org.drools.builder.KnowledgeBuilderFactory.newKnowledgeBuilder(KnowledgeBuilderFactory.java:46)
	at com.requisition.RequisitionApproval.main(RequisitionApproval.java:35)
	at com.requisition.TestInputStream.main(TestInputStream.java:22)
	at com.planet.requisition.server.RequisitionTempServiceImpl.getRequisitionDet(RequisitionTempServiceImpl.java:37)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.Server.handle(Server.java:324)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)



On Wed, Sep 11, 2013 at 11:11 AM, Mauricio Salatino <salaboy at gmail.com>wrote:

> Hi, we are using GWT and Drools in all our tooling.. For example if you
> take a look at the kie-wb workbench or the jbpm-console-ng they are create
> Knowledge Session (kie sessions) right now.
>
>
> On Wed, Sep 11, 2013 at 9:07 AM, Moses Kalema <mkgremo20 at gmail.com> wrote:
>
>> Hello everyone,
>> I recently started using Drools Guvnor and i find it necessary. I create
>> rules on Guvnor and fire the rules in a Java application and everything is
>> fine.
>> However when i try to access the rules in a GWT application,i get an
>> error which looks like none of the Drools code is executed.
>> My request is if any one has used rules n a GWT application please help
>> me out
>>
>> --
>> Moses Kalema
>> Bachelor Science in Computer Engineering
>> Software/Mobile/Embedded Systems Developer
>> +256773391723
>> +256704209937
>> Skype: mkgremo
>> Twitter: @mkgremo
>> "Life's Success is based on Opportunity not Chance"
>>
>>
>> _______________________________________________
>> rules-dev mailing list
>> rules-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>
>
>
>
> --
>  - MyJourney @ http://salaboy.com <http://salaboy.wordpress.com>
>  - Co-Founder @ http://www.jugargentina.org
>  - Co-Founder @ http://www.jbug.com.ar
>
>  - Salatino "Salaboy" Mauricio -
>
> _______________________________________________
> rules-dev mailing list
> rules-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev
>



-- 
Moses Kalema
Bachelor Science in Computer Engineering
Software/Mobile/Embedded Systems Developer
+256773391723
+256704209937
Skype: mkgremo
Twitter: @mkgremo
"Life's Success is based on Opportunity not Chance"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-dev/attachments/20130911/44b5c84d/attachment-0001.html 


More information about the rules-dev mailing list