Author: jleroux
Date: Sun Jan  1 10:00:06 2012
New Revision: 1226225

URL: http://svn.apache.org/viewvc?rev=1226225&view=rev
Log:
"Applied fix from trunk for revision: 1226223" 
------------------------------------------------------------------------
r1226223 | jleroux | 2012-01-01 10:57:50 +0100 (dim., 01 janv. 2012) | 9 lines

A patch from Martin Kreidenweis "Deserialization of arrays with 
UtilObject.getObject() throws ClassNotFoundException" 
https://issues.apache.org/jira/browse/OFBIZ-4295

Deserialization of arrays with UtilObject.getObject() throws a 
ClassNotFoundException. This happened to us when we enabled the distributed 
cache clear feature and it was sending arrays of EntityExpr objects to other 
OFBiz instances.

The reason is, that the org.ofbiz.base.util.ObjectInputStream calls 
classLoader.loadClass(name) directly instead of using Class.forName(name, init, 
classLoader).
According to java bug 
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6446627 
ClassLoader.loadClass() is not intended to being used this way and doesn't 
support loading arrays.

jleroux: Sun/Oracle is pretty clear about that <<[When you want to reflectively 
load a class by name initiated using a specific class loader, you should not 
invoke that loader's public loadClass method directly-- instead, you should 
always use the static three-argument Class.forName method.  The 
ClassLoader.loadClass instance method is more intended for delegation from one 
class loader to another within a class loading operation (although this is a 
common confusion and not well described in the documentation).  In other words, 
replace L.loadClass(N) with Class.forName(N,false,L).  The Class.forName 
invocation may eventually end up invoking loadClass on the specified loader, 
but only after taking care of some other aspects of the VM's standard symbolic 
class name resolution process-- the significant bit in this case being the 
support for loading/creation of array classes.]>> More at the link above

------------------------------------------------------------------------


Modified:
    ofbiz/branches/release10.04/   (props changed)
    
ofbiz/branches/release10.04/framework/base/src/org/ofbiz/base/util/ObjectType.java
    
ofbiz/branches/release10.04/framework/base/src/org/ofbiz/base/util/UtilIO.java

Propchange: ofbiz/branches/release10.04/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Jan  1 10:00:06 2012
@@ -1,3 +1,3 @@
 /ofbiz/branches/addbirt:831210-885099,885686-886087
 /ofbiz/branches/multitenant20100310:921280-927264
-/ofbiz/trunk:939988,939990,939999,940025,940053,940234,940248,940309,940401,940410,940425,940779,940815,940849,940851,941007,941047,941109,941177,941199,941261,941440,941600,941999,942084,942406,942414,942671,942883-942884,943168,943271-943272,943843,944614,944621,944623,944647,944669,944797,944895,945010,945018,945026,945118,945573,945578,945580,945582,945610,945619,945848,945852,945857,946061,946066,946073,946075,946080,946309,946313,946320,946322,946596,947004-947005,947392,947424,947679,947988,948017,948694,949174,949710,949844,950866,950870,950893,951005,951062,951098,951251,951367,951381,951672,952232,952249,952270,953294,953671,954135,954583,954733,954956,955568,956022,956206,956340,957160,958343,958514,958521,958752,958758,958769,958953,959456,960143,960491,960997,963610,964558,965470,965916,966525,966785,967098,978806,978893,978939,979104,980641-980642,980935,981051,981104,981123,981288,983920,983930,985163,985298,985473,985718,985856,985902,987841,989166,990127,990
 
339,990539,991485,993344,993387,995384,995686,996069,996078-996079,996563,997418-997420,997423-997425,997431,997440,997526,997990,998061,998412,998557,1000621,1000725,1000998,1001099,1001131,1001185,1001574,1001849,1001962,1002963,1003434,1003450,1003829,1004139,1027756,1027960,1028053,1028625,1028627,1029600,1030016,1030385,1030390,1033928,1033953,1034138,1034179,1035080,1035084,1036426,1036669,1037507,1037559-1037560,1037567,1037883,1038228,1038990,1039256,1040044,1040091,1042009,1042034,1042038,1042132,1042188,1042222,1042317,1042348,1042396,1042411,1042950,1043861,1043996-1043998,1044047,1044084,1044912,1049031,1050602,1051111,1051450,1051812,1052195,1053285,1053289,1053722,1054565,1055057,1056072,1056305,1056803,1057519,1058028,1058056,1058488,1059180,1060236,1060261,1060368,1060933,1061167,1061307,1061346,1061886,1061939,1062138,1062144,1062152,1063273,1064090,1064953,1064993,1065550,1066048,1067097,1067942,1069597,1069965,1070193,1070229,1072017,1072378,1074624,107520
 
5,1075952,1076027,1076115,1080218,1080959,1083144,1084572,1084671,1084689,1084855,1085697,1085774,1090952,1090961,1090964,1092479,1094007,1094126,1096441,1098063,1104423,1131144,1132589,1132749,1134649,1134990,1135199,1135686,1137201,1137435,1139346,1139385,1139504,1140358,1140362,1140375,1140469,1144537,1144791,1153073,1153768,1158126,1159080,1163036,1163093,1165130,1166591,1167116,1167314,1167480,1167501,1167510,1167517,1167606,1170469,1172213,1172243,1174964,1175130,1175135,1175143,1177128,1181878,1182259,1183651,1184996,1184999,1185179,1187515,1187528,1187933,1187944,1188042,1188564,1196778,1199450,1200207,1201125,1201941,1203350,1206507,1206690,1209921,1210211,1212147,1221913,1222105,1226055,1226065
+/ofbiz/trunk:939988,939990,939999,940025,940053,940234,940248,940309,940401,940410,940425,940779,940815,940849,940851,941007,941047,941109,941177,941199,941261,941440,941600,941999,942084,942406,942414,942671,942883-942884,943168,943271-943272,943843,944614,944621,944623,944647,944669,944797,944895,945010,945018,945026,945118,945573,945578,945580,945582,945610,945619,945848,945852,945857,946061,946066,946073,946075,946080,946309,946313,946320,946322,946596,947004-947005,947392,947424,947679,947988,948017,948694,949174,949710,949844,950866,950870,950893,951005,951062,951098,951251,951367,951381,951672,952232,952249,952270,953294,953671,954135,954583,954733,954956,955568,956022,956206,956340,957160,958343,958514,958521,958752,958758,958769,958953,959456,960143,960491,960997,963610,964558,965470,965916,966525,966785,967098,978806,978893,978939,979104,980641-980642,980935,981051,981104,981123,981288,983920,983930,985163,985298,985473,985718,985856,985902,987841,989166,990127,990
 
339,990539,991485,993344,993387,995384,995686,996069,996078-996079,996563,997418-997420,997423-997425,997431,997440,997526,997990,998061,998412,998557,1000621,1000725,1000998,1001099,1001131,1001185,1001574,1001849,1001962,1002963,1003434,1003450,1003829,1004139,1027756,1027960,1028053,1028625,1028627,1029600,1030016,1030385,1030390,1033928,1033953,1034138,1034179,1035080,1035084,1036426,1036669,1037507,1037559-1037560,1037567,1037883,1038228,1038990,1039256,1040044,1040091,1042009,1042034,1042038,1042132,1042188,1042222,1042317,1042348,1042396,1042411,1042950,1043861,1043996-1043998,1044047,1044084,1044912,1049031,1050602,1051111,1051450,1051812,1052195,1053285,1053289,1053722,1054565,1055057,1056072,1056305,1056803,1057519,1058028,1058056,1058488,1059180,1060236,1060261,1060368,1060933,1061167,1061307,1061346,1061886,1061939,1062138,1062144,1062152,1063273,1064090,1064953,1064993,1065550,1066048,1067097,1067942,1069597,1069965,1070193,1070229,1072017,1072378,1074624,107520
 
5,1075952,1076027,1076115,1080218,1080959,1083144,1084572,1084671,1084689,1084855,1085697,1085774,1090952,1090961,1090964,1092479,1094007,1094126,1096441,1098063,1104423,1131144,1132589,1132749,1134649,1134990,1135199,1135686,1137201,1137435,1139346,1139385,1139504,1140358,1140362,1140375,1140469,1144537,1144791,1153073,1153768,1158126,1159080,1163036,1163093,1165130,1166591,1167116,1167314,1167480,1167501,1167510,1167517,1167606,1170469,1172213,1172243,1174964,1175130,1175135,1175143,1177128,1181878,1182259,1183651,1184996,1184999,1185179,1187515,1187528,1187933,1187944,1188042,1188564,1196778,1199450,1200207,1201125,1201941,1203350,1206507,1206690,1209921,1210211,1212147,1221913,1222105,1226055,1226065,1226223

Modified: 
ofbiz/branches/release10.04/framework/base/src/org/ofbiz/base/util/ObjectType.java
URL: 
http://svn.apache.org/viewvc/ofbiz/branches/release10.04/framework/base/src/org/ofbiz/base/util/ObjectType.java?rev=1226225&r1=1226224&r2=1226225&view=diff
==============================================================================
--- 
ofbiz/branches/release10.04/framework/base/src/org/ofbiz/base/util/ObjectType.java
 (original)
+++ 
ofbiz/branches/release10.04/framework/base/src/org/ofbiz/base/util/ObjectType.java
 Sun Jan  1 10:00:06 2012
@@ -105,7 +105,7 @@ public class ObjectType {
         if (loader == null) loader = 
Thread.currentThread().getContextClassLoader();
 
         try {
-            theClass = loader.loadClass(className);
+            theClass = Class.forName(className, true, loader);
         } catch (Exception e) {
             theClass = classCache.get(className);
             if (theClass == null) {

Modified: 
ofbiz/branches/release10.04/framework/base/src/org/ofbiz/base/util/UtilIO.java
URL: 
http://svn.apache.org/viewvc/ofbiz/branches/release10.04/framework/base/src/org/ofbiz/base/util/UtilIO.java?rev=1226225&r1=1226224&r2=1226225&view=diff
==============================================================================
--- 
ofbiz/branches/release10.04/framework/base/src/org/ofbiz/base/util/UtilIO.java 
(original)
+++ 
ofbiz/branches/release10.04/framework/base/src/org/ofbiz/base/util/UtilIO.java 
Sun Jan  1 10:00:06 2012
@@ -317,7 +317,7 @@ public final class UtilIO {
             for (i = offset; i < length && buffer[i] != ':'; i++);
             if (i > offset && i < length) {
                 String className = new String(buffer, offset, i);
-                Class<?> type = 
ClassLoaderContainer.getClassLoader().loadClass(className);
+                Class<?> type = Class.forName(className, true, 
ClassLoaderContainer.getClassLoader());
                 if (buffer[length - 1] == '\n') {
                     length--;
                 }


Reply via email to