Hi, On Wed, 21 Nov 2001, marc fleury wrote:
> |It sure looks like the system (Service libraries) rather than application > |classloader is being used, despite your code that clearly sets the > |contextClassLoader to the container's. > > And some people wonder why I loved having Rickard Oberg on the project back > in EJBoss 0.9 > > attached is a ObjectinputStreamWithClassLoader that rickard and monson > haefel put together one night when I ran into the same problem you did > Francisco :) > > Rickard Oberg was a fucking genius make no mistakes about it ... > > Francisco to use this you want to create the ObjectInputStream with this > puppy and pass the context cl as the parameter to the constructor. Then > call readObject as you did. This is great! > > BTw don't commit this, MarshalledObject operates pretty much the same way. I might want to discuss this... ObjectInputStreamWithClassLoader might the way of cutting down bean IOR sizes. I'll get back after I try it. Best, Francisco > > marcf > > | > |Have you checked that poaCurrent doesn't change the context classloader and > |the classloader is really what you expect when you call toObject? > | > |david jencks > | > | > |On 2001.11.21 13:04:25 -0500 Francisco Reverbel wrote: > |> Hi, > |> > |> I have a classloader problem in the IIOP container invoker code and would > |> really appreciate some helpful hints... Classloader wizards: to > |> understand > |> the problem you do not have to know anything about CORBA/IIOP, so please > |> read on! > |> > |> The problem only shows up with entity beans. When the IIOP container > |> invoker creates a CORBA reference for such a bean, it embeds the bean�s > |> primary key into the CORBA reference. When handling a bean invocation, > |> the > |> container invoker extracts the PK from the CORBA reference and passes > |> this > |> PK to the container as the first argument of a MethodInvocation. > |> > |> A ClassNotFoundException is thrown when the container invoker attempts to > |> extract the PK from the CORBA reference (got the stack trace below > |> running > |> RMH's well-known cabin bean): > |> > |> java.lang.ClassNotFoundException: com.titan.cabin.CabinPK > |> at > |org.jboss.system.ServiceLibraries.loadClass(ServiceLibraries.java:372) > |> at > |org.jboss.system.URLClassLoader.loadClass(URLClassLoader.java:111) > |> at java.lang.ClassLoader.loadClass(ClassLoader.java:253) > |> at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313) > |> at java.lang.Class.forName0(Native Method) > |> at java.lang.Class.forName(Class.java:195) > |> at > |java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:654) > |> at > |java.io.ObjectInputStream.inputClassDescriptor(ObjectInputStream.java:918) > |> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:366) > |> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236) > |> at > |java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1186) > |> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386) > |> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236) > |> at org.jboss.ejb.CacheKey.readExternal(CacheKey.java:118) > |> at > |java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1212) > |> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386) > |> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236) > |> at > |org.jboss.ejb.plugins.iiop.server.IIOPContainerInvoker.toObject(IIO > |PContainerInvoker.java:896) > |> at > |org.jboss.ejb.plugins.iiop.server.IIOPContainerInvoker._invoke(IIOP > |ContainerInvoker.java:665) > |> at > |org.jacorb.poa.RequestProcessor.invokeOperation(RequestProcessor.java:239) > |> at > |org.jacorb.poa.RequestProcessor.process(RequestProcessor.java:456) > |> at org.jacorb.poa.RequestProcessor.run(RequestProcessor.java:581) > |> > |> I've found a way of circumventing the problem, but am not satisfied with > |> it. Things work if I wrap the PK into a MarshalledObject before embedding > |> it into the CORBA reference, and do the opposite thing when extracting > |> the > |> PK from the reference. Runs fine, but is very slow... The bank test takes > |> forever to run. > |> > |> This code is in org.jboss.ejb.plugins.iiop.server.IIOPContainerInvoker, > |> under contrib/iiop. Insertion/extraction of the PK is done through the > |> methods toByteArray() and toObject(). Each of these methods has two > |> implementations, one of them commented out. The commented out > |> implementation "solves" the problem in the way described above. > |> > |> Suggestions are very welcome! > |> > |> Cheers, > |> > |> Francisco > |> > |> > |> > |> > |> > |> > |> > |> > |> _______________________________________________ > |> Jboss-development mailing list > |> [EMAIL PROTECTED] > |> https://lists.sourceforge.net/lists/listinfo/jboss-development > |> > |> > | > |_______________________________________________ > |Jboss-development mailing list > |[EMAIL PROTECTED] > |https://lists.sourceforge.net/lists/listinfo/jboss-development > _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development
