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.

Reply via email to