Hi,
I am using a file of jess rules in a Java application through the
javax.rules API (JSR-94 API).
However I would like to add some additional Jess commands written in Java.
Therefore I have followed the manual with the ExMyUpcase example.
Here is the following code that I am using to create a RuleExecutionSet:
// Get a RuleRuntime
RuleRuntime runtime = serviceProvider.getRuleRuntime();
// Create a StatelessRuleSession
StatelessRuleSession session =
(StatelessRuleSession)runtime.createRuleSession(URI, new
HashMap(),RuleRuntime.STATELESS_SESSION_TYPE);
// Execute the rules
List input = new ArrayList();
List results = session.executeRules(input);
This code works properly when calling non-user defined commands and the
ExMyUpcase command works when launching the rules file alone.
But when calling the rules file, containing the ExMyUpcase command,
through the javax.rules API, it throws the following exception:
RuleException(javax.rules.RuleSessionCreateException: Problem creating
rule session), root cause(java.io.NotSerializableException:
builtinsJess.MyUpcase)
at jess.jsr94.h.<init>(Unknown Source)
at jess.jsr94.c.<init>(Unknown Source)
at jess.jsr94.l.createRuleSession(Unknown Source)
at rules.Handler.execute(Handler.java:76)
at rules.Handler.run(Handler.java:19)
at principal.Main.main(Main.java:64)
Caused by: java.io.NotSerializableException: builtinsJess.MyUpcase
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at java.util.HashMap.writeObject(Unknown Source)
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 java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteObject(Unknown Source)
at java.util.Collections$SynchronizedMap.writeObject(Unknown Source)
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 java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at jess.Rete.bsave(Unknown Source)
at jess.jsr94.j.clone(Unknown Source)
... 6 more
Is there something I am doing wrong?
Thanks in advance,
Amandine
--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [email protected]'
in the BODY of a message to [email protected], NOT to the list
(use your own address!) List problems? Notify [email protected].
--------------------------------------------------------------------