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]



Reply via email to