[jboss-user] [Management, JMX/JBoss] - Re: JNI, System.loadLibrary() and class loader interactions

fastmhaavald do-not-reply at jboss.com
Tue Oct 24 06:59:54 EDT 2006


"bhandsaker" wrote : I was on the right track in what I wrote above.  I finally found the
  | following reference in the JNI spec
  | (http://java.sun.com/j2se/1.5.0/docs/guide/jni/spec/design.html):
  | 
  |  anonymous wrote :    "The programmer may use a single library to store all the native methods
  |   |     needed by any number of classes, as long as these classes are to be
  |   |     loaded with the same class loader. The VM internally maintains a list
  |   |     of loaded native libraries for each class loader. Vendors should choose
  |   |     native library names that minimize the chance of name clashes."
  | 
  | The key point here is "same class loader".  Not a parent, not a child:
  | Same class loader.
  | 
  | We have resolved this problem by loading the native libraries from an MBean
  | and then invoking code during the initialization of the MBean that loads the
  | library *and* touches each class that uses native methods, forcing the classes
  | to be loaded by the MBean class loader.  Once we do this, everything works
  | correctly.
  | 
  | Note that if you do not force a class with native methods to be loaded by the
  | MBean, it will be successfully loaded later by a different class loader,
  | (for example, an EJB class loader), but the native methods will not be visible.
  | 
  | One side effect of this solution is that we cannot hot deploy the classes
  | with the native methods and our code that calls them.  We could perhaps
  | achieve some level of hot deployment if we carefully separated our code,
  | but we didn't try.
  | 
  | 

How do you force the class loading?

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3980320#3980320

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3980320



More information about the jboss-user mailing list