2017-02-22 1 views
8

Existe-t-il un plan dans Java 9 (spécifiquement Jigsaw) pour prendre en charge les exigences particulières des agents de surveillance Java?Prise en charge Java 9 Jigsaw pour javaagent

Généralement, les agents de surveillance doivent pouvoir accéder à la classe, aux packages et aux modules qui ne sont pas disponibles par défaut aux applications Java d'origine. Les agents de surveillance chargés dans la JVM via l'argument de ligne de commande -javaagent ne sont pas chargés en tant que modules, même si le fichier jar contient un fichier module-info.class. La seule façon dont j'ai pu fournir à mon agent de surveillance les autorisations dont il a besoin est d'ajouter des arguments de ligne de commande qui fournissent ces autorisations à tous les modules sans nom.

Répondre

6

Le Instrumentation class was extended avec une méthode qui permet la redéfinition de tout module. Il vous permet d'ajouter le module lit supplémentaire, les exportations, ouvre, les usages de service et providings:

void redefineModule(Module module, 
        Set<Module> extraReads, 
        Map<String,Set<Module>> extraExports, 
        Map<String,Set<Module>> extraOpens, 
        Set<Class<?>> extraUses, 
        Map<Class<?>,List<Class<?>>> extraProvides); 

En outre, le ClassFileTransformer API a été étendu pour enregistrer un Java Module sur une transformation:

default byte[] transform(Module module, 
         ClassLoader loader, 
         String className, 
         Class<?> classBeingRedefined, 
         ProtectionDomain protectionDomain, 
         byte[] classfileBuffer) 
        throws IllegalClassFormatException; 

Ce module, en combinaison avec l'API d'instrumentation permet tout réglage nécessaire.

Actuellement, les agents Java sont toujours chargés sur le chemin d'accès aux classes sans appliquer de modularisation; cela peut cependant changer car Java 9 n'est pas encore définitif.

+0

Merci. Cela a beaucoup aidé. J'ai essayé la nouvelle méthode redefineModule(), et il semble faire ce dont nous avons besoin – BradW