2012-08-10 17 views
39

Chciałbym dowiedzieć się czegoś o javaagentach, ale badania nie są łatwe. Większość wyników odnosi się do JADE. Znam agenta Java może oznaczać dwie rzeczy:Poradniki na temat javaagentów

  1. Środek zaprogramowany w Javie jest inkarnacją agenta koncepcji systemów rozproszonych.
  2. Składnik oprogramowania na niskim poziomie w celu wzmocnienia funkcjonowania JVM, takiego jak , narzędzia do profilowania kodu zasięgu, itp

Znalazłem podobne pytanie here, ale niestety również odnosi się do wersji 1

Czy znasz jakieś artykuły, samouczki dla początkujących, przykładowy projekt o javaagent w wersji 2? Znalazłem jeden here,, ale szukam więcej.

+1

http://stackoverflow.com/questions/1277219/starting-a-java-agent-after-program-start posiada również kilka przydatnych linków – Vadzim

Odpowiedz

62

Drugi przypadek mówi o Java Instrumentation API - to połączenie wskazuje na Javadoc, który jest raczej opisowy.

A tutaj jest pełna instrukcja i example of how to create java instrumentation agent.

Główną ideą jest:

  1. Wdrożenie metody premain (jako analogię do main) statyczny, na przykład:

    import java.lang.instrument.Instrumentation; 
    
    class Example { 
        public static void premain(String args, Instrumentation inst) { 
         ... 
        } 
    } 
    
  2. Utwórz plik manifestu (powiedzmy, manifest.txt) oznaczenie tej klasy do wykonania przed głównym. Jego zawartość to:

    Premain-Class: Example 
    
  3. Kompilacja klasę i zapakować tę klasę do JAR archiwum:

    javac Example.java 
    jar cmf manifest.txt yourAwesomeAgent.jar *.class 
    
  4. Execute swoją JVM z -javaagent parametru tak:

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

Ważne jest, aby parametr '-javaagent' był przed parametrem' -jar'. – berezovskyi

+1

Musiałem dodać dodatkowy wpis do mojego manifestu, aby mógł pracować z Javassist. Możesz zobaczyć w mojej odpowiedzi na to pytanie: https://stackoverflow.com/questions/10423319/how-do-you-analyze-fatal-javaagent-errors – 11101101b

+1

Niedawno wykonałem te kroki, aby zbudować agenta. Ciągle napotykałem problemy z tworzeniem słoja, dopóki nie dowiedziałem się, że polecenie powinno zawierać najpierw plik docelowy .jar, a następnie plik manifestu. –

Powiązane problemy