Ok, The issue is fixed in the trunk. I had only Drools 5.0 M2 release
source. That code base has the issue as it is:
public boolean accept(Object object) {
return this.accept( object );
}
Hi Mark,
I have couple of questions regarding marshalling in Drools 5.0:
1. In case of "SerializablePlaceholderResolverStrategy" ,
what should be "PlaceholderResolverStrategyAcceptor" impl class to be set?
1. In the blog :
http://blog.athico.com/2008/05/efficient-binary-protocol-marshalling.html,
you have mentioned that "Implementations have not been added for accumulate,
collect, from and rightinputadapter." If marshalling implementation is now
complete in trunk ?
Actually, I was evaluating Drools 5.0 M2 release for our next Drools
upgrade. We are heavy user of serialization feature in Drools 4.0.7.
Best Regards!
Siddhartha
Mark Proctor wrote:
Siddhartha Banik wrote:
> Hi Michal,
>
> Thanks for your reply.
> I have got a better idea about marshalling now. After I have made the
> changes you suggested, the things are working now.
>
> There is a bug in "SerializablePlaceholderResolverStrategy.java" file
> Line#38. Recursive call is made inside the method "public boolean
> accept(Object object)" . So marshalling is failing with
> stackOverflowError.
>
I think that is fixed... This is what I have in trunk:
public boolean accept(Object object) {
return acceptor.accept( object );
}
Doesn't look recursive to me.
> The blog
>
"http://blog.athico.com/2008/05/efficient-binary-protocol-marshalling.html"
> says :
>
> It's still very alphaware. The following types don't yet marshall, not
> sure
> how to handle date/time stuff at the moment. Implementations have not
> been
> added for accumulate, collect, from and rightinputadapter.
>
> If these issues are fixed in Drools 5.0 M2 release?
>
> Best Regards!
> Siddhartha
>
>
> Siddhartha Banik wrote:
>
>> Hi Drools Team,
>>
>> I am trying out new Serialization technique introduced in Drools 5.0
>> using
>> "
>> org.drools.marshalling.DefaultMarshaller".
>>
>> The use case I am trying, is:
>> Create a Stateful session.
>> Then Serialize that.
>> Try to load the the serialized
>> session
>> back.
>>
>> Loading of serialized session is working good if, I try that in same
>> java
>> program & same object of DefaultMarshaller is used during serialization
>> &
>> de
>> serialization of the Stateful session.
>>
>> But, when I tried a different instance of DefaultMarshaller to read back
>> the
>> saved session, that is not working anymore. I am getting a exception :
>>
>> java.lang.NullPointerException
>> at
>> org.drools.common.DefaultFactHandle.<init>(DefaultFactHandle.java:78)
>> at
>> org.drools.marshalling.InputMarshaller.readFactHandle(InputMarshaller.java:331)
>> at
>> org.drools.marshalling.InputMarshaller.readFactHandles(InputMarshaller.java:277)
>> at
>> org.drools.marshalling.InputMarshaller.readSession(InputMarshaller.java:179)
>> at
>> org.drools.marshalling.DefaultMarshaller.read(DefaultMarshaller.java:58)
>> at
>> org.drools.marshalling.DefaultMarshaller.read(DefaultMarshaller.java:15)
>> at
>> org.drools.reteoo.ReteooRuleBase.readStatefulSession(ReteooRuleBase.java:277)
>> at
>>
org.drools.common.AbstractRuleBase.readStatefulSession(AbstractRuleBase.java:321)
>> at
>>
com.sample.test.NewMarshallingTest.testSerializationInFile_1(NewMarshallingTest.java:79)
>> 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 junit.framework.TestCase.runTest(TestCase.java:154)
>> at junit.framework.TestCase.runBare(TestCase.java:127)
>> at junit.framework.TestResult$1.protect(TestResult.java:106)
>> at junit.framework.TestResult.runProtected(TestResult.java:124)
>> at junit.framework.TestResult.run(TestResult.java:109)
>> at junit.framework.TestCase.run(TestCase.java:118)
>> at
>>
org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
>> at
>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>> at
>>
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
>> at
>>
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
>> at
>>
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
>> at
>>
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
>>
>> With Drools 4.0.7 ... I can serialize a Stateful session & at later
>> point
>> of
>> time I can deserialize that back. For our usecase, the feature is very
>> critical.
>>
>> Does Drools 5.0 support that ? DefaultMarshaller is not serializable.
>> So
>> once a Stateful session is serialized. At Later point of time, I am not
>> able to read that back.
>>
>> I have attached my test files.
>>
>>
>> Best Regards!
>> Siddhartha
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>>
>
>
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
View this message in context:
http://www.nabble.com/Serialization-in-Drools-5.0-M2-tp20314346p20334733....
Sent from the drools - user mailing list archive at
Nabble.com.