2012-03-21 13 views
5

Próbuję znaleźć sposób na znalezienie instancji klasy w działającej maszynie JVM. JVM jest osadzona w innym procesie, a obiekt jest tworzony przez ten proces. Ten sam proces wykonuje mój kod Java. Nie mam bezpośredniego dostępu do odwołania do obiektu Java w moim kodzie Java, ale znam klasę tego obiektu. Chcę się dowiedzieć, czy istnieją obiekty tej klasy już utworzone w JVM, a jeśli tak, to chcę je znaleźć (powiedzmy tablicę Object z odniesieniami do wszystkich wystąpień tej klasy). Ten mechanizm może być interfejsem API języka Java lub interfejsu API JNI.Jak znaleźć instancję klasy w działającej maszynie JVM

Wiem, że jest to możliwe, ponieważ debuggery pozwalają mi sprawdzić wszystkie wystąpienia. Po prostu nie mogę znaleźć drogi.

Dzięki

Nikita

+0

pomyśleć o wszystkich tych silników serwletów tam. Czy chcesz, aby nieznana aplikacja działająca w JBoss lub Tomcat lub WebSphere lub xxx miała dostęp do Twoich obiektów podrzędnych? – Java42

+0

Byłbym niezmiernie zaskoczony, gdyby to było możliwe. –

Odpowiedz

0
+0

Nie znajduję niczego w pakiecie oprzyrządowania, który dałby mi dostęp do już utworzonych obiektów. Pozwala mi się bawić przy klasach i ładowaniu klas, ale nie przy obiektach. Więcej myśli? Dzięki –

+0

@NikitaVisnevski zobacz tę metodę 'getAllLoadedClasses()' lub 'getInitiatedClasses (..)' – Adrian

+0

(Sięgając tutaj) Myślę, że być może będziesz musiał określić agenta oprzyrządowania na swoim (wbudowanym) uruchomieniu JVM i przechwycić różne połączenia, np. nowy X(). – alphazero

Powiązane problemy