[jboss-jira] [JBoss JIRA] Commented: (JBRULES-1946) Deserializing a KnowledgeBase object throws a java.io.EOFException

Nestor Tarin Burriel (JIRA) jira-events at lists.jboss.org
Fri Oct 2 06:45:49 EDT 2009


    [ https://jira.jboss.org/jira/browse/JBRULES-1946?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12488193#action_12488193 ] 

Nestor Tarin Burriel commented on JBRULES-1946:
-----------------------------------------------

Hi Again,

I'm testing the same marshalling strategy by using the Snapshot 5.1.0 from drools-core, and now I'm getting the error:

	at org.drools.reteoo.LeftTuple.<init>(LeftTuple.java:96)
	at org.drools.marshalling.impl.InputMarshaller.readLeftTuple(InputMarshaller.java:453)
	at org.drools.marshalling.impl.InputMarshaller.readFactHandles(InputMarshaller.java:347)
	at org.drools.marshalling.impl.InputMarshaller.readSession(InputMarshaller.java:207)
	at org.drools.marshalling.impl.DefaultMarshaller.unmarshall(DefaultMarshaller.java:75)
	at org.drools.marshalling.impl.DefaultMarshaller.unmarshall(DefaultMarshaller.java:47)
	at kagent.test.AbstractDroolsEngine.loadCorrelator(AbstractDroolsEngine.java:215)
	at kagent.test.AbstractDroolsEngine.<init>(AbstractDroolsEngine.java:61)
	at kagent.test.TemporalDroolsEngineServiceImpl.<init>(TemporalDroolsEngineServiceImpl.java:71)
	at kagent.test.main.MainTemporal.main(MainTemporal.java:48)

My Marshalling strategy is:

public void saveEngine(FileOutputStream out) throws IOException {
		DroolsObjectOutputStream droolsOut = new DroolsObjectOutputStream(out);
		droolsOut.writeObject(ksession.getKnowledgeBase());
		Marshaller mas = createMarshaller(ksession.getKnowledgeBase());
		mas.marshall(droolsOut, ksession);
		
		droolsOut.flush();
		droolsOut.close();				
	}
	
public void loadEngine(FileInputStream input) throws IOException,
			ClassNotFoundException {

		DroolsObjectInputStream droolsIn = new DroolsObjectInputStream(input);
		KnowledgeBase kbase = (KnowledgeBase) droolsIn.readObject();
		Marshaller mas = createMarshaller(kbase);
		ksession = mas.unmarshall(droolsIn);
		
		droolsIn.close();
	}

private Marshaller createMarshaller(KnowledgeBase knowledgeBase) {
        ObjectMarshallingStrategyAcceptor acceptor = MarshallerFactory.newClassFilterAcceptor( new String[]{"*.*"} );
        ObjectMarshallingStrategy strategy = MarshallerFactory.newSerializeMarshallingStrategy( acceptor );
        Marshaller marshaller = MarshallerFactory.newMarshaller( knowledgeBase,
                                                                 new ObjectMarshallingStrategy[]{strategy} );
        return marshaller;
    }

Nestor

> Deserializing a KnowledgeBase object throws a java.io.EOFException
> ------------------------------------------------------------------
>
>                 Key: JBRULES-1946
>                 URL: https://jira.jboss.org/jira/browse/JBRULES-1946
>             Project: Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: drools-core
>    Affects Versions:  5.0.0.M4, 5.0.0.M5
>         Environment: Ubuntu 8.10
>            Reporter: Simon Kelly
>            Assignee: Edson Tirelli
>             Fix For: 5.0.2, 5.1.0.M1
>
>         Attachments: drools.test.zip, DroolsTest.java, Sample.drl, Sample1.drl, Sandbox2.java
>
>
> A java.io.EOFException is thrown when reading a serialized KnowledgeBase object from a file.
> java.io.EOFException
> 	at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281)
> 	at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2750)
> 	at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
> 	at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
> 	at org.drools.common.DroolsObjectInputStream.<init>(DroolsObjectInputStream.java:55)
> 	at org.drools.common.DroolsObjectInputStream.<init>(DroolsObjectInputStream.java:49)
> 	at org.drools.common.AbstractRuleBase.readExternal(AbstractRuleBase.java:227)
> 	at org.drools.reteoo.ReteooRuleBase.readExternal(ReteooRuleBase.java:173)
> 	at org.drools.impl.KnowledgeBaseImpl.readExternal(KnowledgeBaseImpl.java:83)
> 	at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1792)
> 	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1751)
> 	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> 	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> 	at com.sample.DroolsTest.read(DroolsTest.java:75)
> 	at com.sample.DroolsTest.testIO(DroolsTest.java:50)
> 	at com.sample.DroolsTest.main(DroolsTest.java:40)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list