Hi,
I get the following exception when serializing/deserializing an object of type:
javax.management.openmbean.OpenType,
anonymous wrote :
| Type: java.lang.OutOfMemoryError
| Message: Java heap space
| Stack trace:
| at java.lang.AbstractStringBuilder.(AbstractStringBuilder.java:45)
| at java.lang.StringBuffer.(StringBuffer.java:91)
| at org.jboss.serial.util.StringUtil.readString(StringUtil.java:295)
| at
org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readUTF(DataContainer.java:757)
| at
org.jboss.serial.persister.ObjectInputStreamProxy.readUTF(ObjectInputStreamProxy.java:196)
| at
org.jboss.serial.objectmetamodel.FieldsContainer.readField(FieldsContainer.java:147)
| at
org.jboss.serial.objectmetamodel.FieldsContainer.readMyself(FieldsContainer.java:218)
| at
org.jboss.serial.persister.ObjectInputStreamProxy.readFields(ObjectInputStreamProxy.java:224)
| at javax.management.openmbean.OpenType.readObject(OpenType.java:378)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:1)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:597)
| at
org.jboss.serial.persister.RegularObjectPersister.readSlotWithMethod(RegularObjectPersister.java:103)
| at
org.jboss.serial.persister.RegularObjectPersister.defaultRead(RegularObjectPersister.java:269)
| at
org.jboss.serial.persister.RegularObjectPersister.readData(RegularObjectPersister.java:241)
| at
org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:412)
| at
org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:82)
| at
org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readObject(DataContainer.java:643)
| at
org.jboss.serial.persister.RegularObjectPersister.readSlotWithFields(RegularObjectPersister.java:353)
| at
org.jboss.serial.persister.ObjectInputStreamProxy.defaultReadObject(ObjectInputStreamProxy.java:78)
| at
alchemy.mx.mbean.SimpleTabularDataSupport.readObject(SimpleTabularDataSupport.java:971)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:1)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:597)
| at
org.jboss.serial.persister.RegularObjectPersister.readSlotWithMethod(RegularObjectPersister.java:103)
| at
org.jboss.serial.persister.RegularObjectPersister.defaultRead(RegularObjectPersister.java:269)
| at
org.jboss.serial.persister.RegularObjectPersister.readData(RegularObjectPersister.java:241)
| at
org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:412)
| at
org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:82)
| at
org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readObject(DataContainer.java:643)
|
The code fails in StringUtil.readString(DataInput, StringUtilBuffer) method when it tries
to instantiate a StringBuffer:
| if (strbuffer==null)
| {
| strbuffer = new StringBuffer((int)size);
| }
|
The size variable at this stage has a value of 42238343537016.
I am trying to write a test case to reproduce the error, but my test code gives a
different exception:
| OpenType[] itemTypes = new OpenType[] { SimpleType.STRING,
| SimpleType.STRING, SimpleType.STRING };
| String[] itemNames = new String[] { "Item1", "Item2",
"Item3" };
| String[] itemDescriptions = new String[] { "Item 1", "Item 2",
"Item 3" };
| CompositeType rowType = new CompositeType("composite",
"Description",
| itemNames, itemDescriptions, itemTypes);
|
| ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
| JBossObjectOutputStream os = new JBossObjectOutputStream(byteOut);
| os.writeObject(rowType);
| os.flush();
|
| ByteArrayInputStream byteInpt = new ByteArrayInputStream(byteOut
| .toByteArray());
| JBossObjectInputStream is = new JBossObjectInputStream(byteInpt);
| rowType = (CompositeType) is.readObject();
|
Exception:
anonymous wrote :
| java.io.IOException
| at
org.jboss.serial.persister.RegularObjectPersister.readSlotWithMethod(RegularObjectPersister.java:107)
| at
org.jboss.serial.persister.RegularObjectPersister.defaultRead(RegularObjectPersister.java:269)
| at
org.jboss.serial.persister.RegularObjectPersister.readData(RegularObjectPersister.java:241)
| at
org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:412)
| at
org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:82)
| at
org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readObject(DataContainer.java:643)
| at
org.jboss.serial.io.JBossObjectInputStream.readObjectOverride(JBossObjectInputStream.java:163)
| at java.io.ObjectInputStream.readObject(ObjectInputStream.java:345)
| at alchemy.measure.TestInterfaces.testSerialization(TestInterfaces.java:90)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:597)
| at junit.framework.TestCase.runTest(TestCase.java:168)
| at junit.framework.TestCase.runBare(TestCase.java:134)
| at junit.framework.TestResult$1.protect(TestResult.java:110)
| at junit.framework.TestResult.runProtected(TestResult.java:128)
| at junit.framework.TestResult.run(TestResult.java:113)
| at junit.framework.TestCase.run(TestCase.java:124)
| at junit.framework.TestSuite.runTest(TestSuite.java:232)
| at junit.framework.TestSuite.run(TestSuite.java:227)
| at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
| at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
| 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)
| Caused by: java.lang.reflect.InvocationTargetException
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:597)
| at
org.jboss.serial.persister.RegularObjectPersister.readSlotWithMethod(RegularObjectPersister.java:103)
| ... 27 more
| Caused by: java.io.EOFException
| at java.io.DataInputStream.readFully(DataInputStream.java:180)
| at org.jboss.serial.util.StringUtil.pullDataToBuffer(StringUtil.java:191)
| at org.jboss.serial.util.StringUtil.readString(StringUtil.java:238)
| at
org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readUTF(DataContainer.java:757)
| at
org.jboss.serial.persister.ObjectInputStreamProxy.readUTF(ObjectInputStreamProxy.java:196)
| at
org.jboss.serial.objectmetamodel.FieldsContainer.readField(FieldsContainer.java:147)
| at
org.jboss.serial.objectmetamodel.FieldsContainer.readMyself(FieldsContainer.java:218)
| at
org.jboss.serial.persister.ObjectInputStreamProxy.readFields(ObjectInputStreamProxy.java:224)
| at javax.management.openmbean.OpenType.readObject(OpenType.java:378)
| ... 32 more
|
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4254487#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...