Verify that you can do
        FileOutputStream fos = new FileOutputStream(...);
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeInt(1);
        oos.close();
in the same application using the same File and FileOutputStream.
-W

On 09/07/2012, chrisLi <[email protected]> wrote:
> Hi, all
>
>      I am trying to serialize a StatefulKnowledgeSession into a file as a
> snapshot. But I got  the following error:
>
>   java.io.IOException: Write error
>       at java.io.FileOutputStream.writeBytes(Native Method)
>       at java.io.FileOutputStream.write(FileOutputStream.java:282)
>       at 
> java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
>       at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
>       at
> java.io.ObjectOutputStream$BlockDataOutputStream.flush(ObjectOutputStream.java:1793)
>       at java.io.ObjectOutputStream.flush(ObjectOutputStream.java:699)
>       at java.io.ObjectOutputStream.close(ObjectOutputStream.java:720)
>       at com.sample.test.EventDataConsumer.run(EventDataConsumer.java:44)
>       at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>       at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>       at java.lang.Thread.run(Thread.java:662)
>
>     However, when I serialized it to a ByteArrayOutputStream, it works
> well.
>
>  I wrapped the stateful session in a class as a field. And I wrote
> writeObject and readObject methods in this class to provide custom
> serializing behaviour. The code is as follows:
>
>     private void writeObject(ObjectOutputStream out) throws IOException {
>               System.out.println("writing");
>               out.defaultWriteObject();
>
>               DroolsObjectOutputStream droolsOut = new 
> DroolsObjectOutputStream(
>                               (OutputStream) out);
>               droolsOut.writeObject(knowledgeBase);
>
>               Marshaller marshaller = 
> createSerializableMarshaller(knowledgeBase);
>               marshaller.marshall(droolsOut, session);
>               System.out.println("written");
>       }
>
>       private void readObject(ObjectInputStream in) throws IOException,
>                       ClassNotFoundException {
>               System.out.println("read");
>               in.defaultReadObject();
>
>               DroolsObjectInputStream droolsIn = new DroolsObjectInputStream(
>                               (InputStream) in);
>               this.knowledgeBase = (KnowledgeBase) droolsIn.readObject();
>
>               Marshaller marshaller = 
> createSerializableMarshaller(knowledgeBase);
>               session = marshaller.unmarshall(droolsIn);
>       }
>
>       private Marshaller createSerializableMarshaller(KnowledgeBase
> knowledgeBase) {
>               ObjectMarshallingStrategyAcceptor acceptor = MarshallerFactory
>                               .newClassFilterAcceptor(new String[] { "*.*" });
>               ObjectMarshallingStrategy strategy = MarshallerFactory
>                               .newSerializeMarshallingStrategy(acceptor);
>               Marshaller marshaller = 
> MarshallerFactory.newMarshaller(knowledgeBase,
>                               new ObjectMarshallingStrategy[] { strategy });
>               return marshaller;
>       }
>
> Out of this class, I utilized the ordinary ObjectoutputStream to serialize
> an instance of this class to a file.
>
> Unfortunately, I got the Exception.
>
> Any idea or response will be appreciated, Thank you very much.
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/Write-Error-when-Serializing-a-stateful-session-to-a-file-tp4018545.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> [email protected]
> https://lists.jboss.org/mailman/listinfo/rules-users
>
_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to