IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Chargement d'une instance d'une DLL externe par session utilisateur


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2003
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 211
    Points : 85
    Points
    85
    Par défaut Chargement d'une instance d'une DLL externe par session utilisateur
    Bonjour,

    Je développe une application qui doit charger une DLL externe. Cette DLL externe est initialisé en fonction de l'utilisateur connecté.

    Pour l'instant le chargement et l'initialisation de ma DLL fonctionne mais au niveau "application". Je n'arrive pas à charger plusieurs DLL (ou créer plusieurs instance de cette DLL). Si je lance plusieurs sessions sur mon application elle plante.

    J'aimerais donc pouvoir charger autant d'instances de cette DLL que de session utilisateur. Que les différentes instances de cette DLL soit propre à chaque session et qu'elles n'interfèrent pas entre elles.

    Note: Je développe en J2EE sous Ecipse avec Struts et Tomcat 6.

    D'avance merci pour vos réponses.

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Impossible de charger plusieurs fois la même lib: http://bugs.sun.com/bugdatabase/view...bug_id=4225434

    Tu vas devoir revoir ton archi.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    une instance de la librairie native par jvm, pas plus.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2003
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 211
    Points : 85
    Points
    85
    Par défaut
    Ok. Cela est très problématique pour moi.

    N'y a t'il un moyen de forcer la duplication de l'environnement d’exécution coté serveur d'application (Tomcat ou autre au besoin) ? Que chaque session utilisateur ouvre une "application" à part entière coté serveur ?

    Je comprend que cela consommera + de ressources et de mémoire mais je n'ai pas vraiment le choix de changer d'architecture.

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    non, par contre tu peux lancer une application externe dans sa propre jvm en passant pas Runtime.getRuntime().exec(application)

    Par curiosité, c'est du java natif sur lequel tu n'as pas le controle et que tu veux charger plusieurs fois poru des besoin technique.

    Ou tu as une dll qui nécessite d'etre chargée différement par utilisateur et tu as codé du code natif qui l'utilise?

    Dans le premier cas, t'es coincé à une JVM / une dll

    Dans le second cas, c'est ton code natif qui gère mal la DLL et devrais être capable de la charger N fois (mais le code natif, lui, ne sera chargé qu'une seule fois)

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2003
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 211
    Points : 85
    Points
    85
    Par défaut
    C'est "une dll qui nécessite d’être chargée différement par utilisateur et j'ai codé du code natif qui l'utilise"

    En fait c'est l'API d'une application developpé en delphi.
    Nous avons fait une surcouche JNI pour l'exploiter en Java (J2EE).
    L'API charge les données suivant l'utilisateur avec laquelle elle a été initialisé. Du coup il faut une instance de cette API par utilisateur.

    Donc ton conseil serait de modifier la surcouche JNI pour lancer une instance de la DLL par session utilisateur ?
    Du coup mon code java fournirait un identifiant de session à la JNI qui utiliserait la bonne instance suivant ce code de session ?
    A priori j'avais évoqué cette solution avec la personne en charge de la JNI mais on ne voyait pas trop comment faire cela.

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    je connais pas a fond les DLLs sous windows, mais je sais que sous linux, en C, charger plusieurs fois une librairie est tout à fait possible, chaque chargement ayant son segment de code indépendant. On utilise ça par exemple pour des systèmes de plugins. Evidement, ca nécessite du travail, mais ca vaut peut etre le coup de tenter.

Discussions similaires

  1. Utiliser une méthode d'une instance, dans une callback
    Par qdaemon_fr dans le forum Langage
    Réponses: 3
    Dernier message: 18/04/2014, 18h09
  2. [ATL] Utiliser une instance d'une règle dans une autre règle
    Par sacha33 dans le forum Eclipse Modeling
    Réponses: 0
    Dernier message: 02/06/2013, 23h41
  3. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  4. Réponses: 11
    Dernier message: 16/06/2008, 10h36
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo