.dll déjà chargé dans un autre chargeur de classe?

J'ai une application web s'exécutant sous Tomcat 3.2.1 qui doit faire JNI appels en
afin d'accéder à des données et des méthodes de l'héritage de code C++. Une servlet est chargée
sur
démarrage de la webapp qui, dans le cadre de son init méthode, les causes d'un ensemble de données
spécifiques à cette webapp instance pour être chargé dans le C++ de données
les structures.

Ce code Java pour cette servlet contient les éléments suivants:

static
{
    try {
        System.loadLibrary("JCoreImpl");
        System.out.println("JCoreImpl loaded");
        m_bLibraryLoaded = true;
    } catch (UnsatisfiedLinkError e) {
        m_bLibraryLoaded = false;
        System.out.println("JCoreImpl NOT loaded " + e);
    }
}

Choses fonctionnent bien si il y a seulement une webapp (appelons-la
"webapps/aaa").

Si j'ai un deuxième webapp ("webapps/bbb") qui est identique à webapps/aaa
sauf pour le jeu de données utilisé dans le C++ structures de données, puis webapps/aaa
démarre très bien, mais quand webapps/bbb est commencé, j'obtiens une erreur
indiquant
que:

JCoreImpl NOT loaded java.lang.UnsatisfiedLinkError: Native Library
E:\WebStation\binDebug\JCoreImpl.dll already loaded in another classloader

J'ai besoin d'avoir une instance distincte de la bibliothèque native pour chacun de mes
webapps chaque fois qu'une instance doit contenir des données qui est unique à ce
particulier webapp. J'ai fouillé les archives d'e-mails et lire
e-mails par Craig McLanahan expliquant le chargeur de classe de la hiérarchie. Mais Je
ont
pas été en mesure de trouver quelque chose de spécifique pour le chargement d'une instance unique d'un
la bibliothèque native pour chaque webapp.

InformationsquelleAutor krishnakumar | 2009-06-23