Of course making the inner class static would probably have done the
trick, as then the inner class instances wouldn't hold a reference to
an instance of the outer class.

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
On Behalf Of Henrique Lopes Cardoso
Sent: Friday, September 22, 2006 12:29 PM
To: jess-users@sandia.gov
Subject: Re: JESS: Serializing Userfunctions

Just found out what the problem was.

I was defining my Userfunction as an innerclass of the main class where 
I had the Rete instance. That main class was not Serializable, and that 
was the class getting the NotSerializableException. Something like this:
    class M {
       Rete jess;

       class F implements Userfunction, Serializable { ... }

       public static void main(String args[]) {
          ...
          jess.addUserfunction(new F());
          ...
          jess.bsave(...);
       }
    }

==> Class M was getting the NotSerializableException

I then defined the Userfunction class F as an independent class, 
implementing Serializable, and everything worked fine.

Thank you.

Henrique


friedman_hill ernest j wrote:
> I think Henrique Lopes Cardoso wrote:
>   
>> Just stating the class to be Serializable made it work, that is,
bsave() 
>> does not complain anymore and after bload()ing the functions work as 
>> expected.
>>     
>> I then tried with a simpler example, which got me the
>> NotSerializableException again...
>>     
>
> NotSerializableExceptions have the offending class name as the
> exception message; what class is it complaining about? Note that Jess
> can't do anything to make a serializable class non-serializable.
>
>   
>> My question is: why does this approach work only sometimes?
>>     
>
> There must be something else going on; I would double-check that all
> the Userfunction class files were up to date with the source, and that
> everything that's supposed to be serializable really is.
>
>   
>> Is this approach recommendable[?]
>>     
>
> Yes, definitely. Jess's "built-in" functions aren't actually special
> in any way; they're just serializable Userfunctions.
>
> ---------------------------------------------------------
> Ernest Friedman-Hill  
> Advanced Software Research          Phone: (925) 294-2154
> Sandia National Labs                FAX:   (925) 294-2234
> PO Box 969, MS 9012                 [EMAIL PROTECTED]
> Livermore, CA 94550         http://herzberg.ca.sandia.gov
> --------------------------------------------------------------------
> 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]
> --------------------------------------------------------------------
>
>
>   

-- 
----- - - - - -  -  -  -  -  -   -   -
Henrique Lopes Cardoso
DEEC/FEUP
Rua Dr. Roberto Frias | 4200-465 Porto
PORTUGAL
(+351)225574199 ext.3355
[EMAIL PROTECTED] | www.fe.up.pt/~hlc
----- - - - - -  -  -  -  -  -   -   -
--------------------------------------------------------------------
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]
--------------------------------------------------------------------
--------------------------------------------------------------------
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]
--------------------------------------------------------------------

Reply via email to