After upgrading from 3.0.2 to 3.0.4 it seems JBoss handles EJB properties of type Serializable in a different way.
My whole solution is running the way it used to except for one thing: Those of my EJB’s which have CMP fields which are of type serializable object fail. For instance, one of my beans has a field called “validator” which stores a serialized java object. After I started using JBoss 3.0.4 it was no longer possible to read these beans from the database. JBoss threw this exception:
java.sql.SQLException: Got a [B[cl=0, value=[B@1ab7626] while looking for a dk.r
Extensive testing has shown that all EJBs which have a serializable object field with a non-null value cannot be read from or written to the database (a SAP DB). As another example, I have an EJB which has a field called “menuBar” which stores a serialized java object. When setting a non-null value for this field on my EJB I get the following exception:
javax.ejb.EJBException: Internal error setting parameters for field menuBar; Cau
Cannot put ASCII data into this long column
Now, my database is exactly the same namely a SAP database, and I checked that the standardjbosscmp-jdbc configuration is also the same – looking at the exception above it seems JBoss tries to store the object as a ascii string of some sort. Both my 3.0.2 and 3.0.4 has this setting
which is exactly the setting I want. I went as far as dropping the whole database and reconstructing it using the new 3.0.4 in hopes the error was caused by some inconsistency between the two versions – no luck, the 3.0.4 is simply not able to handle my Serializable fields.
If anyone has any idea what is different in JBoss 3.0.4 I shall be very pleased to hear from you. Finally I should mention that I based my 3.0.2 deployment on the “all” deployment configuration (with virtually no changes), and my 3.0.4 deployment is now based on the “default” deployment configuration (with virtually no changes). I did this to improve startup performance (it actually lowered the startup time by one third).