Hi,
strange! Could you do another test to check common-lang serialization util:
Domain d = new Domain(); Object result = SerializationUtils.clone(d)
This call was used by MetadataManager.
regards, Arnin
Stas Ostapenko wrote:
Hi !
Are you sure that Domain.class contains no "package" declaration in Java? (As Armin already pointed out.)
Yes. here is Domain.java
public class Domain { public Integer Id; public Integer Status; public String Domain; public String Comment; public Domain(Integer Id,Integer Status,String Domain,String Comment) { this.Id = Id; this.Status = Status; this.Domain = Domain; this.Comment = Comment; }; public void setId(Integer Id) { this.Id = Id; } public Integer getId() { return this.Id; } public void setStatus(Integer Status) { this.Status = Status; } public Integer getStatus() { return this.Status; } public void setDomain(String Domain) { this.Domain = Domain; } public String getDomain() { return this.Domain; } public void setComment(String Comment) { this.Comment = Comment; } public String getComment() { return this.Comment; } }
Since you have a static main method with your test, it is easy to check that Domain.class can be loaded by the JVM (without involving OJB at all) by doing:
String className = "Domain"; ClassLoader cl = Thread.currentThread().getContextClassLoader(); Class domain = Class.forName(className, true, cl);
Ok. Here is code and a result :
import org.apache.ojb.broker.metadata.DescriptorRepository; import org.apache.ojb.broker.metadata.MetadataManager;
public class test_copyOfGlobalRepository_two { public static void main(String args[]) { try { System.out.print("loading...");
String className = "Domain"; ClassLoader cl = Thread.currentThread().getContextClassLoader(); Class domain = Class.forName(className, true, cl);
System.out.println("OK");
}
catch(Exception e)
{
System.out.println("Something wrong with loading class");
e.printStackTrace();
};
try
{
System.out.println("Manipulating with MetadataManager");
MetadataManager mm = MetadataManager.getInstance();
mm.setEnablePerThreadChanges(true);
DescriptorRepository dr = mm.copyOfGlobalRepository();
}
catch(Exception ex)
{
System.out.println("Something goes wrong...");
ex.printStackTrace();
}
}
}
Output:
loading...OK
Manipulating with MetadataManager
Something goes wrong...
org.apache.commons.lang.SerializationException: java.lang.ClassNotFoundException
: Domain
at org.apache.commons.lang.SerializationUtils.deserialize(
SerializationUtils.java:202)
at org.apache.commons.lang.SerializationUtils.deserialize(
SerializationUtils.java:229)
at org.apache.commons.lang.SerializationUtils.clone(SerializationUtils.java
:117)
at org.apache.ojb.broker.metadata.MetadataManager.copyOfGlobalRepository(
MetadataManager.java:434)
at test_copyOfGlobalRepository_two.main(test_copyOfGlobalRepository_two.java:30)
Caused by: java.lang.ClassNotFoundException: Domain
at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:219)
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:558)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1513)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
at java.io.ObjectInputStream.readClass(ObjectInputStream.java:1402)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1260)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
at java.util.HashMap.readObject(HashMap.java:1006)
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:324)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:838)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1746)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
at org.apache.commons.lang.SerializationUtils.deserialize(
SerializationUtils.java:199)
... 4 more
As you see class is not in package and loading without problems. Can you provide some simple working example with all configuration files so I could run and compare results ? Maybe I have a config mistake? Any suggestions are welcome.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]