Bugs item #595672, was opened at 2002-08-15 13:28
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=376685&aid=595672&group_id=22866
Category: JBossCMP
>Group: v3.0 Rabbit Hole
>Status: Closed
>Resolution: Wont Fix
Priority: 5
Submitted By: Boris Tamarkin (upss)
Assigned to: Dain Sundstrom (dsundstrom)
Summary: Deserialization broken in JBoss 3.01
Initial Comment:
Win2000 operating system
MySQL or MS SQLServer 2000 databases
mapping in standardjbosscmp-jdbc.xml (same as in 3.0)
for mySQL
<java-type>java.lang.Object</java-type>
<jdbc-type>JAVA_OBJECT</jdbc-type>
<sql-type>LONGBLOB</sql-type>
<java-type>java.lang.Object</java-type>
<jdbc-type>JAVA_OBJECT</jdbc-type>
<sql-type>IMAGE</sql-type>
Repeat scenario
Having CMP2 entity bean with one Object atribute.
Call setObject works fine and store as a Blob in
database.
When trying to retreive after, failure happens.
Stacktrace attached below
*Notes:
1. Serialization and deserialization doing only with 3.01
version of JBoss
2. Not trying to deserealize old blobs (I am aware of it
can be not supported and compatible with earlier version
of JBoss)
3. This functionality and same code works fine with
previous JBoss 3.0 version, but it is broken in 3.01.
Thanks
Stacktrace
*********
10:51:02,738 ERROR [LogInterceptor]
TransactionRolledbackLocalException, causedB
y:
java.sql.SQLException: Unable to load to deserialize
result: java.io.StreamCorru
ptedException: invalid stream header
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCUtil.convertByteArra
yToObject(JDBC
Util.java:612)
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCUtil.getResult
(JDBCUtil.java:311)
at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMP
FieldBridge.load
ArgumentResults
(JDBCAbstractCMPFieldBridge.java:350)
at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMP
FieldBridge.load
InstanceResults(JDBCAbstractCMPFieldBridge.java:304)
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityComman
d.execute(JDBCLoad
EntityCommand.java:142)
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityComman
d.execute(JDBCLoad
EntityCommand.java:62)
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.load
Entity(JDBCStoreM
anager.java:572)
at
org.jboss.ejb.plugins.CMPPersistenceManager.loadEntit
y(CMPPersistence
Manager.java:410)
at
org.jboss.resource.connectionmanager.CachedConnectio
nInterceptor.load
Entity(CachedConnectionInterceptor.java:353)
at
org.jboss.ejb.plugins.EntitySynchronizationInterceptor.inv
oke(EntityS
ynchronizationInterceptor.java:262)
at
org.jboss.resource.connectionmanager.CachedConnectio
nInterceptor.invo
ke(CachedConnectionInterceptor.java:186)
at
org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke
(EntityInstance
Interceptor.java:152)
at
org.jboss.ejb.plugins.EntityLockInterceptor.invoke
(EntityLockIntercep
tor.java:107)
at
org.jboss.ejb.plugins.EntityCreationInterceptor.invoke
(EntityCreation
Interceptor.java:69)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext
(AbstractTxInte
rceptor.java:107)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransacti
ons(TxIntercep
torCMT.java:178)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke
(TxInterceptorCMT.java:6
0)
at org.jboss.ejb.plugins.SecurityInterceptor.invoke
(SecurityInterceptor.
java:130)
at org.jboss.ejb.plugins.LogInterceptor.invoke
(LogInterceptor.java:203)
at org.jboss.ejb.EntityContainer.invoke
(EntityContainer.java:493)
at
org.jboss.ejb.plugins.local.BaseLocalContainerInvoker.inv
oke(BaseLoca
lContainerInvoker.java:301)
at org.jboss.ejb.plugins.local.EntityProxy.invoke
(EntityProxy.java:38)
at $Proxy161.getKeyValue(Unknown Source)
at com.rendition.MyEJB.retrieveKey
(MyEJB.java:155)
******
----------------------------------------------------------------------
>Comment By: Dain Sundstrom (dsundstrom)
Date: 2002-09-17 16:08
Message:
Logged In: YES
user_id=251431
I spend all day testing this and have determined the following:
Value classes in 3.0.0 were really broken. You can not have
a field of type java.lang.Object and get the value back out.
If you have a field of some custom type (like
my.custom.ValueClass), it will work until you redeploy your
applcation and then you get class cast exceptions because of
a classloader conflict.
Value classes work perfectly in 3.0.2 if the field was
stored using 3.0.2. If it was stored with 3.0.0, it will
work the first time you deploy, but you will get a class
cast exception on redeploy. This is because 3.0.0 stored a
java.rmi.MarshalledObject, which doesn't respect
classloaders, and 3.0.1+ stores a MarshalledValue, which
uses classloaders correctly.
To make a long story short, there is nothing more we can do.
Hopefully this will be the last data incompatiblity we
have, but there is no guarantee. I suggest you try to find
a way to store you values in a more portable way in the
database, such as an xml string.
----------------------------------------------------------------------
Comment By: Nobody/Anonymous (nobody)
Date: 2002-08-27 08:42
Message:
Logged In: NO
We are using Oracle and map a String[] to a Blob and we do get the same exception.
----------------------------------------------------------------------
Comment By: Dain Sundstrom (dsundstrom)
Date: 2002-08-23 19:10
Message:
Logged In: YES
user_id=251431
I don't use MS SQL Server, but I'll see if this works with
my databases. It may just be a SQL Server bug.
----------------------------------------------------------------------
Comment By: Nobody/Anonymous (nobody)
Date: 2002-08-21 13:28
Message:
Logged In: NO
Any news?
Or whom should be assigned?
Thanks
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=376685&aid=595672&group_id=22866
-------------------------------------------------------
This SF.NET email is sponsored by: AMD - Your access to the experts
on Hammer Technology! Open Source & Linux Developers, register now
for the AMD Developer Symposium. Code: EX8664
http://www.developwithamd.com/developerlab
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development