This is a known conflict between JDT versions used by tomcat and drools.
http://wiki.jboss.org/wiki/Wiki.jsp?page=RulesTomcat
[]s
Edson
2007/9/24, Guardian <d.h.j.(a)gmx.de>:
Hello,
I have many problems to integrate Drools in my existing Application that
is running on JBoss AS 4.0.5 GA.
When I try to load and execute the rule-file I get the following
Exception:
*java.lang.RuntimeException*: java.lang.NoSuchMethodError:
org.eclipse.jdt.internal.compiler.CompilationResult.getProblems
()[Lorg/eclipse/jdt/core/compiler/CategorizedProblem;
*javax.ejb.EJBException*: *java.lang.RuntimeException*:
java.lang.NoSuchMethodError:
org.eclipse.jdt.internal.compiler.CompilationResult.getProblems
()[Lorg/eclipse/jdt/core/compiler/CategorizedProblem;
at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(*
Ejb3TxPolicy.java:69*)
at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(*TxPolicy.java:83*)
at org.jboss.aspects.tx.TxInterceptor$Required.invoke(*
TxInterceptor.java:191*)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(*
MethodInvocation.java:101*)
at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(*
TxPropagationInterceptor.java:76*)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(*
MethodInvocation.java:101*)
at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(*
StatelessInstanceInterceptor.java:62*)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(*
MethodInvocation.java:101*)
at org.jboss.aspects.security.AuthenticationInterceptor.invoke(*
AuthenticationInterceptor.java:77*)
at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(*
Ejb3AuthenticationInterceptor.java:102*)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(*
MethodInvocation.java:101*)
at org.jboss.ejb3.ENCPropagationInterceptor.invoke(*
ENCPropagationInterceptor.java:47*)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(*
MethodInvocation.java:101*)
at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(*
AsynchronousInterceptor.java:106*)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(*
MethodInvocation.java:101*)
at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(*
StatelessContainer.java:263*)
at org.jboss.aop.Dispatcher.invoke(*Dispatcher.java:106*)
at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(*
AOPRemotingInvocationHandler.java:82*)
at org.jboss.remoting.ServerInvoker.invoke(*ServerInvoker.java:828*)
at org.jboss.remoting.ServerInvoker.invoke(*ServerInvoker.java:681*)
at
org.jboss.remoting.transport.socket.ServerThread.processInvocation(*
ServerThread.java:358*)
at org.jboss.remoting.transport.socket.ServerThread.dorun(*
ServerThread.java:412*)
My Application consists of the following parts:
The rule-file:
#created on: 04.09.2007
*package* drools.rules
#list any import classes here.
*import* drools.session.Message;
#declare any global variables here
*rule* "Hello World"
*when*
m : Message( status == Message.HELLO, message : message )
*then*
System.out.println( message );
m.setMessage( "Goodbye cruel world" );
m.setStatus( Message.GOODBYE );
*update*( m );
*end*
*rule* "GoodBye"
*no-loop* *true*
*when*
m : Message( status == Message.GOODBYE, message : message )
*then*
System.out.println( message );
m.setMessage( message );
*end*
a Class to encapsulate the rule-initialisation and rule-execution
(wrapper-Class):
*public* *class* RuleEngineWrapper
{
*private* WorkingMemory workingMemory;
*private* *boolean* debugMode = *false*;
*private* DebugAgendaEventListener debugListener;
*public* RuleEngineWrapper(WorkingMemory wm) {
*this*.workingMemory = wm;
debugListener = *new* DebugAgendaEventListener();
}
/**
* construct a RuleEngineWrapper with only a rule-file-name, no
idea of
* callers' class. Assume the rule file is located
*
* *@param* rulesFile
*/
*public* RuleEngineWrapper(String rulesFile) {
*this*(RuleEngineWrapper.*class*, rulesFile);
}
/**
* construct a RuleEngineWrapper with only a calling object known
*
* *@param* caller
* *@param* rulesFile
*/
*public* RuleEngineWrapper(Object caller, String rulesFile) {
*this*(caller.getClass(), rulesFile);
}
/**
* construct a RuleEngineWrapper with Class caller and rule-file-
name known.
* We load the rule-file as classpath resource.
*
* *@param* caller
* *@param* rulesFile
*/
*public* RuleEngineWrapper(Class caller, String rulesFile) {
*super*();
*try* {
*final* PackageBuilder builder = *new* PackageBuilder();
System.*out*.println(caller);
builder.addPackageFromDrl(*new* InputStreamReader(caller
.getResourceAsStream(rulesFile)));
*final* RuleBase ruleBase = RuleBaseFactory.*newRuleBase*
();
ruleBase.addPackage(builder.getPackage());
workingMemory = ruleBase.newStatefulSession();
debugListener = *new* DebugAgendaEventListener();
} *catch* (Exception e) {
System.*out*.println("cannot read rule file: " +
rulesFile);
}
}
/**
* Allow to add arbitrary objects as facts. Users can add any
objects to
* workingMemory
*
* *@param* o
* the fact to be added
*/
*public* *void* addFact(Object o) {
workingMemory.insert(o);
}
/**
* Execute rules.
*
*/
*public* *void* executeRules() {
workingMemory.fireAllRules();
}
...
[Mensagem cortada]
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @
www.jboss.com