Transformatörün java cihazlarındaki temel amacı nedir? Enstrümantasyon örneğiyle ekleneceklerini biliyorum. Ayrıca premain yönteminde, hangi parametrelerJava enstrümantasyonunda transformatör
cevap
Transformers (java.lang.instrument.ClassFileTransformer) public static void premain(String agentArgs, Instrumentation inst);
içinde agentArgs
atanan onlar Java Virtual Machine yüklenir önce bayt kod düzeyinde sınıf dosyaları dönüştürmek için kullanılır. Bu özellik, bayt düzeyindeki yöntemleri (gerçekten bayt dizisi alırsınız) veya Javassist'in daha yüksek bir modifikasyon katmanında olduğu Javassist veya ASM gibi bir üçüncü taraf kitaplığı kullanarak (kaynak kodları sağlayabilir) kullanılabilir. çalışma zamanı boyunca). ASM bayt kodu anahtar kelimelerle çalışır (ör. invokevirtual
).
Yükler sırasında sınıfları ve girişleri değiştirmek, AspectJ gibi popüler Çerçeveler'de (yükleme süresi-dokuma) denilen özellikleri yükleme yeteneği sağlamak için kullanılır.
premain(...)
yöntemde agentArgs
parametre başlangıçta madde verilen nerede parametreleri içeren bir String
olup. Maddenin kendisi tarafından ayrıştırılan tek bir String
'dur.
Böyle ajan için bir tane sağlayabilir:
$ java -javaagent:${jarfile}=${agentArgs}
Eğer ${agentArgs}
olarak girdiğiniz değer agentArgs
parametrenin değeri olacaktır.
Yalnızca bir bağımsız değişken içeriyorsa neden args
denir? Sadece Tanrı bilir.
Cevabınız için teşekkür ederiz. Lütfen agentArgs'ın ne içereceğini söyler misiniz? Demek istediğim String değerini – FAZ
@FAZ Ben açıklığa kavuşturmak için cevabımı güncelledim. "$ {AgentArgs}" konumunda verdiğiniz değer, "agentArgs" parametresinin değeri olacaktır. –