<div>Hi&nbsp;<span class="Apple-style-span" style="font-family: Verdana; ">Siddhartha,</span></div><div>See this blog for more info:<a href="http://blog.athico.com/2008/05/efficient-binary-protocol-marshalling.html" target="_blank">http://blog.athico.com/2008/05/efficient-binary-protocol-marshalling.html</a></div>
<div>&quot;<span style="line-height:22px">The&nbsp;<a href="http://fisheye.jboss.org/browse/JBossRules/trunk/drools-core/src/main/java/org/drools/marshalling/DefaultMarshaller.java?r=HEAD" style="text-decoration:none;color:rgb(128, 0, 128)" target="_blank">DefaultMarshalling&nbsp;</a>class uses the Identity strategy if it is not passed a strategy factory.<span style="font-family:arial;line-height:normal">&quot;</span></span></div>

<div><span style="line-height:22px">Identity strategy is stateful</span>. This means that the same instance needs to be used for deserialization.</div><div>
You may try the&nbsp;<span style="line-height:22px">Serialised strategy -&nbsp;<span class="Apple-style-span" style="line-height: normal; "><span class="Apple-style-span" style="line-height: 22px;">SerializablePlaceholderResolverStrategy</span><span class="Apple-style-span" style="line-height: 22px; ">. However, with this strategy the fact identities change when you deserialize. That may or may not be a problem, depending on what you are doing.</span></span></span></div>
<div>Best Regards,</div><div>Michal</div><div><br><div class="gmail_quote">On Mon, Nov 3, 2008 at 9:06 PM, siddhartha banik <span dir="ltr">&lt;<a href="mailto:siddhartha.banik@gmail.com" target="_blank">siddhartha.banik@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div><font face="Verdana" color="#000000"><span>Hi Drools Team,</span></font></div>
<div><font face="Verdana" color="#000000"><span></span></font>&nbsp;</div>
<div><font face="Verdana" color="#000000"><span>I am trying&nbsp;out new Serialization technique introduced in&nbsp;Drools 5.0 using &quot;<font size="2">org.drools.marshalling.<font size="2">DefaultMarshaller&quot;. </font></font></span></font></div>



<div><font face="Verdana" color="#000000"><span></span></font>&nbsp;</div>
<div><font face="Verdana" color="#000000"><span>The use case I am trying, is: </span></font></div>
<div><font face="Verdana" color="#000000"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Create a Stateful session. </span></font></div>
<div><font face="Verdana" color="#000000"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Then Serialize that. </span></font></div>
<div><font face="Verdana" color="#000000"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Try to load the the serialized session back. </span></font></div>
<div><font face="Verdana" color="#000000"><span></span></font>&nbsp;</div>
<div><font face="Verdana" color="#000000"><span>Loading of serialized session&nbsp;is working good if, I try that in same java program &amp; same object of DefaultMarshaller is used during serialization &amp; de serialization of the Stateful session.</span></font></div>



<div><font face="Verdana" color="#000000"><span></span></font>&nbsp;</div>
<div><font face="Verdana" color="#000000"><span>But, when I tried a different instance of DefaultMarshaller to read back the saved session, that is not working anymore.&nbsp;I am getting a exception :</span></font></div>

<div><font face="Verdana" color="#000000"><span></span></font>&nbsp;</div>
</div><div><font face="Verdana" color="#000000"><span>java.lang.NullPointerException<br>&nbsp;at org.drools.common.DefaultFactHandle.&lt;init&gt;(DefaultFactHandle.java:78)<div><div></div><div><br>&nbsp;at org.drools.marshalling.InputMarshaller.readFactHandle(InputMarshaller.java:331)<br>


&nbsp;at org.drools.marshalling.InputMarshaller.readFactHandles(InputMarshaller.java:277)<br>&nbsp;at org.drools.marshalling.InputMarshaller.readSession(InputMarshaller.java:179)<br>&nbsp;at org.drools.marshalling.DefaultMarshaller.read(DefaultMarshaller.java:58)<br>


&nbsp;at org.drools.marshalling.DefaultMarshaller.read(DefaultMarshaller.java:15)<br>&nbsp;at org.drools.reteoo.ReteooRuleBase.readStatefulSession(ReteooRuleBase.java:277)<br>&nbsp;at org.drools.common.AbstractRuleBase.readStatefulSession(AbstractRuleBase.java:321)<br>


&nbsp;at com.sample.test.NewMarshallingTest.testSerializationInFile_1(NewMarshallingTest.java:79)<br>&nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>&nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<br>


&nbsp;at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)<br>&nbsp;at java.lang.reflect.Method.invoke(Unknown Source)<br>&nbsp;at junit.framework.TestCase.runTest(TestCase.java:154)<br>&nbsp;at junit.framework.TestCase.runBare(TestCase.java:127)<br>


&nbsp;at junit.framework.TestResult$1.protect(TestResult.java:106)<br>&nbsp;at junit.framework.TestResult.runProtected(TestResult.java:124)<br>&nbsp;at junit.framework.TestResult.run(TestResult.java:109)<br>&nbsp;at junit.framework.TestCase.run(TestCase.java:118)<br>


&nbsp;at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)<br>&nbsp;at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)<br>&nbsp;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)<br>


&nbsp;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)<br>&nbsp;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)<br>&nbsp;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)</div>

</div></span></font></div><div><div></div><div>

<div><font face="Verdana" color="#000000"><span></span></font>&nbsp;</div>
<div><font face="Verdana" color="#000000"><span>With Drools 4.0.7 ... I can serialize a Stateful session &amp; at later point of time I can deserialize that back. For our usecase, the feature is very critical.</span></font></div>



<div><font face="Verdana" color="#000000"><span></span></font>&nbsp;</div>
<div><font face="Verdana" color="#000000"><span>Does Drools 5.0 support that ?&nbsp; DefaultMarshaller is not serializable. So once a&nbsp; Stateful session is serialized. At Later point of time, I am not able to read that back.</span></font></div>



<div><font face="Verdana" color="#000000"><span></span></font>&nbsp;</div>
<div><font face="Verdana" color="#000000"><span>I have attached my test files.</span></font></div>
<div><font face="Verdana" color="#000000"></font>&nbsp;</div>
<div>
<p align="left"><span style="font-size:10pt;font-family:Verdana">Best Regards!<br>Siddhartha</span></p></div>
</div></div><br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br></div>