ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ravi Krishnamurthy <ra...@savvion.com>
Subject Re: classLoaders
Date Mon, 24 Oct 2005 18:05:05 GMT
Thanks Larry. Actually I ahve tried 
Resources.setDefaultClassLoaders(customClassLoader) and it worked fine. 
But it forces the clients to call this everytime which I wish to handle 
without forcing the clients to do anything. It is little bit tricky to 
do it without asking the clients to do it.

Bacially users can develop thier own application and write java classes 
which they can change dynamically. The custom clasloader basically 
provides the dynamic loading of the classes - if there is a change in 
the classes, you dont need to restart the jvm again. Also ibatis is one 
of the libraries ( there are many) and these are always loaded using the 
custom classloaders and so it gives flexibility for them to load it 
anytime with their java classes.

In your suggestion, you mentioned about 
setClassLoader(yourEjbClasslOader).. guess you mean the arguement to be 
customClasslOader because ejbClassloader will not work.

Is is a good enhancement for ibatis to look for the classloader that 
loads its classes(Resources.java in this case) for getResources ?

Larry Meadors wrote:

>That is an interesting problem. I wonder why the custom class loader
>is not set as the thread class loader. Hm..oh well. :-)
>If we use the Resources.java class loader, everything breaks when
>people share the iBATIS jar files (i.e., in common/lib or shared/lib
>with tomcat..which IMO, is a bad idea anyway).
>You may want to try using Resources.setClassLoader(yourEjbClassLoader)
>to see if it makes things work. You will need to do that before the
>rest of iBATIS loads, so it may take some digging on your part to
>figure out WHERE to do that, but it is worth a try.
>Just curious, what environment is this in?
>On 10/24/05, Ravi Krishnamurthy <ravik@savvion.com> wrote:
>>I have a custom classloader that has the ejbclassloader as the parent.
>>The custom classloader loads all the ibatis classes but the thread
>>context classloader is the ejbclassloader. So when the ibatis is trying
>>to load the resource, I get resource not found for the sql...dtd files.
>>On lookig at the source code looks like in the Resources.java of ibatis,
>>the getClassLoader first check the default Classloader and then the
>>Thread.contextClassloader. Looks like in my case, the defaultClassLoader
>>is null and so the context classloader (ejbclassloader) is used to
>>search for the resources and so things file.
>>Could someone give me some pointers on how to resolve this problem.
>>But wondering why the getClassLoader does not use the classloader that
>>loaded the Resources.java to search for the resources.
>>Please note that the ibatis classes are only visible to the
>>cutomclassloader and not to the ejbclassloader.
>>Thanks for your time,

View raw message