2012-08-10 12 views
39

Mi piacerebbe imparare qualcosa sui javaagent, ma la ricerca non è facile. La maggior parte dei risultati si riferisce a JADE. So agente java può significare due cose:Esercitazioni su javaagents

  1. Un agente programmato in Java di essere un'incarnazione dell'agente concetto di sistemi distribuiti.
  2. Un componente software di basso livello per aumentare il funzionamento di una JVM, quali come profiler, strumenti di code-copertura, ecc

ho trovato domanda simile here, ma purtroppo si riferisce anche alla versione 1

Conoscete articoli, tutorial per principianti, progetto di esempio su javaagent nella versione 2? Ho trovato uno here, ma sto cercando di più.

+1

http://stackoverflow.com/questions/1277219/starting-a-java-agent-after-program-start ha anche alcuni link utili – Vadzim

risposta

62

Il secondo caso parla di Java Instrumentation API - questo collegamento punta a un Javadoc che è piuttosto descrittivo.

E qui, è l'istruzione completa e uno example of how to create java instrumentation agent.

Il concetto principale è quello di:

  1. implementare un metodo statico premain (come analogia a main), in questo modo:

    import java.lang.instrument.Instrumentation; 
    
    class Example { 
        public static void premain(String args, Instrumentation inst) { 
         ... 
        } 
    } 
    
  2. Creare un file manifesto (ad esempio, manifest.txt) contrassegnando questa classe per l'esecuzione pre-principale. I suoi contenuti sono:

    Premain-Class: Example 
    
  3. compilare la classe e il pacchetto questa classe in un archivio JAR:

    javac Example.java 
    jar cmf manifest.txt yourAwesomeAgent.jar *.class 
    
  4. eseguire la JVM con -javaagent parametro, in questo modo:

    java -javaagent:yourAwesomeAgent.jar -jar yourApp.jar 
    
+8

È importante che il parametro '-javaagent' vada prima del parametro' -jar'. – berezovskyi

+1

Ho dovuto aggiungere una voce aggiuntiva al mio manifest per farlo funzionare con Javassist. Puoi vedere nella mia risposta a questa domanda: https://stackoverflow.com/questions/10423319/how-do-you-analyze-fatal-javaagent-errors – 11101101b

+1

Ho seguito di recente questi passaggi per creare un agente. Ho continuato a riscontrare problemi nella creazione del jar, fino a quando ho scoperto che il comando avrebbe dovuto elencare prima il file .jar di destinazione e il file manifest dopo. –

Problemi correlati