Czy jest możliwe wstawienie obiektu javaagent po uruchomieniu maszyny wirtualnej z tej samej maszyny wirtualnej?Uruchamianie agenta Java po uruchomieniu programu
Powiedzmy, że mamy na przykład agenta w pliku jar myagent.jar z odpowiednią konfiguracją meta-danych i metodą agenta agenta już zaimplementowaną. Teraz program użytkownika wywołuje wywołanie API, które powinno spowodować wstawienie agenta, aby mógł ponownie zdefiniować klasy.
Czy można to zrobić i jak?
Nie określa jednak, jakie jest to wywołanie metody. Patrząc dalej to jednak ((URLClassLoader) ClassLoader.getSystemClassLoader()). AddURL (....) gdzie dodany adres URL wskazywał na wynik myagent.jar w wywołaniu nazwy agenta? –
Czy to jest Java 6 ogólnie, czy tylko z HotSpotem? –
@Paul: Nie próbowałem tego, więc nie mogę powiedzieć, czy to działa, ale wydaje się rozsądne. Jednak będziesz musiał wywołać addURL poprzez odbicie, ponieważ jest on chroniony. Coś takiego: Sysloader URLClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader(); \t Class sysclass = URLClassLoader.class; \t try { \t \t Metoda metody = sysclass.getDeclaredMethod ("addURL", parametry); \t method.setAccessible (true); \t \t method.invoke (sysloader, new Object [] {yourURL}); \t} – HerdplattenToni