If this is the wrong forum, please redirect this. I have been debugging a problem with JBoss and JNI native code. I have sample code that runs outside of JBoss, but when run in JBoss it throws an UnsatisfiedLinkError referencing the method name on the first call to a native method. I have verified (at the OS level) that the DLLs (happens to be Windows) are in fact being loaded in to the process.
I believe I've finally found the cause of my problem, which I believe is that the native libraries are loaded in the context of a particular ClassLoader. In my case, I'm loading the DLLs in one ClassLoader and the classes that define the native methods are being loaded into a different ClassLoader. These are third-party java classes and JNI DLLs, so I don't have control over the design. The classes to not load the DLLs automatically, the caller has to do it. Questions: 1. Does my suspect cause above sound correct? If the DLL is loaded in a different ClassLoader than the class declaring the native method, should I expect it to not "see" the loaded native method? 2. I was initially somewhat surprised that this seems to happen even if I load the DLLs in a ClassLoader that is the parent of the ClassLoader that loads the class declaring the native method. For example, I have tried loading the DLLs in the boot class loader (the one that loads org.jboss.Main), hoping that all descendent class loaders would be able to see the DLLs, but this did not work. (I loaded just the DLLs in the boot class loader, not the classes declaring the native methods.) I haven't been able to find definitive documentation on this in terms of Java language specs. Is it correct that child class loaders do not inherit visibility to native libraries loaded by thier parents? Or is this some kind of bug in the JBoss ClassLoader implementations? 3. If I'm on the right track, what I think I would like to do is to have my MBean load the DLLs once and then also have the MBean force-load the classes that declare the native methods. These would not be hot deployable. Then I would like to be able to reference these classes from other jars and EJBs that are deployed separately and have my code be hot deployable. Should this work? What class loader is used for an MBean in JBoss? I read the JMX 4.x class loader documentation but couldn't find a specific reference to which class loader is used for MBeans. View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3891625#3891625 Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3891625 ------------------------------------------------------- SF.Net email is Sponsored by the Better Software Conference & EXPO September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf _______________________________________________ JBoss-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/jboss-user
