I've exactly the same problem. Someone has some information about it or some workarround?
What I do is call a local stateless EJB from a Webapp and while executing the EJB code the current class loader seems ok but the thread one is always the webapp.
I guess that this is a normal behavior for J2EE 5 container Jboss. Because every war file(inside or outside ear) has its own classloader. For instance I have there war files in my ear and they all have there own copies of my singletons. Another thing is that EJB application has its own classloader and when you call these methods the first string returns your war classloader and the second returns EJB app classloader.
I guess that if you try to call the same ejb from a standalone client you will find that Thread's classloader is a classloader of this client(I'm not quite sure about this one).
If you want to read some additional info take a look at the following link: