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

Plateformes réactives et architectures modulaires Java Discussion :

[Plugin] un URLClassloader par plugin ?


Sujet :

Plateformes réactives et architectures modulaires Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut [Plugin] un URLClassloader par plugin ?
    Bonjour à tous,
    J'ai fait un petit système de plugin très simple, et je me pose quelques questions :
    • Est-ce que je dois utiliser un ClassLoader par plugin ? Je pense que oui séparation des ressources)
    • Mes plugins doivent pouvoir instancier les classes de mon projet, leur ClassLoader doit donc hériter de celui du projet? (Je pense que oui également)
    • Question sécurité, auriez-vous des pistes pour faire du sandboxing rudimentaire (éviter qu'un plugin ai accès au appels systèmes (à "rm -rf /" par exemple)). (Pas trop d'idée)

    Voilà, j'aimerai avoir vos avis éclairés sur la question.
    Merci,

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    • En effet des classloader séparé permettaient de libérer les ressources d'un plugins sans impacter les autres. Donc je dirais oui...
    • Théoriquement oui.
    • Là c'est plus dur. Je dirais que ce doit être possible via le SecurityManager, mais je n'ai jamais toucher à cela...


    a++

  3. #3
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,
    • Là c'est plus dur. Je dirais que ce doit être possible via le SecurityManager, mais je n'ai jamais toucher à cela...
    J'ai regardé ça rapidement ce we, et j'ai pas trouvé beaucoup d'articles (ou très vagues). Si quelqu'un à des liens, il serait les bienvenus... Cette partie à l'air hardu...

    Question annexe : comment gérez-vous vos systèmes de plugins (OSGI, JPF...). J'ai regardé ces solutions, mais elle me semble si lourde pour le besoin que j'en ai.
    Si ça vous intéresse, les sources du gestionnaire de plugin du serveur Openfire (XMPP) sont très intéressante.
    Merci...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par dahtah Voir le message
    J'ai regardé ça rapidement ce we, et j'ai pas trouvé beaucoup d'articles (ou très vagues). Si quelqu'un à des liens, il serait les bienvenus... Cette partie à l'air hardu...

    Question annexe : comment gérez-vous vos systèmes de plugins (OSGI, JPF...). J'ai regardé ces solutions, mais elle me semble si lourde pour le besoin que j'en ai.
    Si ça vous intéresse, les sources du gestionnaire de plugin du serveur Openfire (XMPP) sont très intéressante.
    Merci...
    Salut,

    J'utilise personnellement OSGi, et plus particulièrement Felix (implémentation de Apache).
    Je ne trouve pas ça trop lourd en soit, il faut juste appréhender les concepts et pour la puissance que ça apporte je trouve l'investissment en temps intéressant.
    à noter que OSGi spécifie aussi la sécurité et permet une gestion plus flexible encore de JAAS, afin de changer dynamiquement les permissions (pour un module, pour un signataire, ...). Le tuto felix (http://felix.apache.org/site/apache-...-tutorial.html) est, je trouve, assez bien foutu...
    Un autre lien pouvant être intéressant : http://felix.apache.org/site/apache-...embedding.html comment embarquer felix dans ton application !

    A noter que felix n'implémente pas encore tous les aspects de la sécurité, mais equinox le fait. De plus avec la nouvelle spécification, il y aura un moyen standard de démarrer un noyau OSGi, ce qui rendra ton application totalement indépendate de l'implémentation (normalement )

  5. #5
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Personnellement, j'ai recodé mon propre système de plugin : http://baptiste-wicht.developpez.com...tting-started/

    Personnellement, j'ai commencé à implémenter avec des classloader séparé qui héritaient d'un parent commun définie par le coeur de l'application modulaire, mais j'ai eu beaucoup de problèmes par la suite avec des librairies comme Spring/Hibernate et d'autres encore. Pour finir, je passe par le class loader système, mais c'est beaucoup moins propre.

    Je n'avais pas implémenté de système de securité, donc effectivement, les plugins peuvent tout faire.

    Si j'ai tout recodé à la main plutôt que d'utiliser quelque chose d'existant, c'était surtout pour améliorer mes connaissances Java, mais je suis en train de lorgner du côté d'Osgi actuellement.

  6. #6
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut
    Citation Envoyé par George7 Voir le message
    Le tuto felix (http://felix.apache.org/site/apache-...-tutorial.html) est, je trouve, assez bien foutu...
    j'ai parcouru en diagonale. Ca m'a l'air complet et intéressant.
    Citation Envoyé par George7 Voir le message
    Un autre lien pouvant être intéressant : http://felix.apache.org/site/apache-...embedding.html comment embarquer felix dans ton application !
    Effectivement, ça c'est top.
    Citation Envoyé par George7 Voir le message
    A noter que felix n'implémente pas encore tous les aspects de la sécurité, mais equinox le fait.
    Peux-tu préciser un peu? je saisi pas le lien entre felix et equinox... (à moins qu'il y en ai pas et que tu parles d'une alternative?)
    Citation Envoyé par George7 Voir le message
    De plus avec la nouvelle spécification, il y aura un moyen standard de démarrer un noyau OSGi, ce qui rendra ton application totalement indépendate de l'implémentation (normalement )
    Peux-tu préciser également?
    Citation Envoyé par Baptiste Wicht Voir le message
    Personnellement, j'ai commencé à implémenter avec des classloader séparé qui héritaient d'un parent commun définie par le coeur de l'application modulaire, mais j'ai eu beaucoup de problèmes par la suite avec des librairies comme Spring/Hibernate et d'autres encore. Pour finir, je passe par le class loader système, mais c'est beaucoup moins propre.
    Je fais plus ou moins la même chose, dezip du jar, chargement des éléments dézippés dans un classloader héritant du classe loader système. De toute façon, je suis obligé d'hériter du classe loader système, pour que mes plugins aient accès aux fonctions de mon système.
    Maintenant, ça me gène de laisser tous les droits aux plugins. Mais vu qu'un sandbox ça à l'air (très) compliqué à implémenter et que ce n'est pas le coeur de mon appli, mieux vaut peut-être se tourner vers un framework.
    Merci à tous en tout cas de vos intervention...

Discussions similaires

  1. Technique de programmation par plugins.
    Par gerald3d dans le forum C
    Réponses: 1
    Dernier message: 06/08/2009, 15h13
  2. Plugin php livré par default avec Eclipse PHP ganymede (POO)
    Par lerieure dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 06/05/2009, 11h54
  3. modifier contenu page web par plugin
    Par wanecque dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/01/2009, 21h02
  4. developpement par plugin
    Par altair8080 dans le forum C#
    Réponses: 10
    Dernier message: 09/12/2008, 10h00
  5. développement de plugin pour firefox : par où commencer ?
    Par S2S dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 09/02/2008, 15h08

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