Uzoqdan (mahalliy emas) VMga ulang

API Java ilovasini mahalliy VMlar va yuk agentlari bilan bog'lashi mumkin. Agentni yuklash uchun boshqa kompyuterga VM ga qanday ulanish mumkin?

JMX haqida bilaman. Lekin masofali VM uchun maxsus agentni qanday yuklayotganimni bilmasdim.

Ehtimol, muammoni hal etishning yana bir yo'li mavjud (maxsus kodni (agentni) uzoq VMga o'rnatish va bajarish uchun)?

yangilash. Masofadagi JVMda maxsus kodni bajarishni xohlayman. Dastlab JVM parametrlarining mustaqilligi ortiqcha.

Rahmat.

3
Bu yo'l bilan hal qilish kerak bo'lgan asl muammo nimada?
qo'shib qo'ydi muallif Thorbjørn Ravn Andersen, manba
Dasturiy ta'minotni yangilash uchun agentlardan foydalanishni qat'iyan to'xtatib qo'yaman. Buning ustiga ko'maklashadigan muammolarni tasavvur qiling.
qo'shib qo'ydi muallif Thorbjørn Ravn Andersen, manba
masofadan turib ishlaydigan JVM-larda ilovani, monitoringni va kodni yangilashni taklif etadi
qo'shib qo'ydi muallif Andrew Kondratovich, manba

3 javoblar

Hattoki uzoqdan disk raskadrovka biriktirilgan .

UPDATE

Agar ilovangiz ichidagi maxsus kodni bajarishni istasangiz, unda bitta yechim sinf yozish va uni kompilyatsiya qilish, uni serverga joylashtirish va keyin sizning ilovangiz ichida shunday usulni bajarish:

/**
 * This method:
 * 
  • loads a class from the server file system *
    • does a lookup for the method to execute *
    • creates a new instance of the specified class *
    • executes the given method with the given arguments * (which can be null if the method doesn't have arguments) *
    • returns the result of the invoked method * * @param classUrlOnTheServer * @param className * @param methodNameToExecute * @param argumentsForTheMethod arguments that should be passed to * the method of the loaded class - can * be null. * @return returns the result of the invoked method * @throws ClassNotFoundException * @throws MalformedURLException * @throws SecurityException * @throws NoSuchMethodException * @throws InstantiationException * @throws IllegalAccessException * @throws IllegalArgumentException * @throws InvocationTargetException */ public static Object loadAndExecuteCustomMethodFromALoadedClass(String classUrlOnTheServer, String className, String methodNameToExecute, Object ... argumentsForTheMethod) throws ClassNotFoundException, MalformedURLException, SecurityException, NoSuchMethodException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { File file = new File(classUrlOnTheServer); URL url = file.toURI().toURL(); URL[] urls = new URL[] { url }; ClassLoader cl = new URLClassLoader(urls); Class clazz = cl.loadClass(className); Method method = clazz.getDeclaredMethod(methodNameToExecute); Object instance = clazz.newInstance(); Object result = method.invoke(instance, argumentsForTheMethod); return result; }
  • 2
    qo'shib qo'ydi
    Masofadan nosozliklarni tuzatishda siz so'zlarni (barcha kod satrlarini) baholashingiz mumkin. Siz ushbu kodni saqlay olmaysiz, lekin siz maydonlarni va o'zgaruvchilar qiymatlarini o'zgartirishi mumkin. Men nima istayotganingizni to'liq tushunmayapman, iltimos, dastlabki savolni tuzating va batafsil tushuntirib bering.
    qo'shib qo'ydi muallif davorp, manba
    Javobni yangiladim ...
    qo'shib qo'ydi muallif davorp, manba
    Maxsus kodni AOK qilish kerak. JMX bilan uzoq JVM haqida ma'lumot olishim mumkin, lekin kodni AOKlay olmayman va bajarolmayman. API-ni JVM-da, faqat mahalliy JVM-da executable agentni yuklash usullarini taqdim etadi. Men uzoq JVM bilan bir xil yo'lni qidiryapman.
    qo'shib qo'ydi muallif Andrew Kondratovich, manba
    istaganingizcha yangilanadi.
    qo'shib qo'ydi muallif Andrew Kondratovich, manba

    Men savolni tushunmayapman, faqat uzoq VMga ulanishni xohlaysizmi? Qachon bog'langaningizda siz xohlagan narsani amalga oshirishingiz mumkin, hodisa VMni bekor qiladi. VMni disk raskadrovka rejimida ishga tushirishingiz kerak:

    -Xdebug -Xrunjdwp: transport = dt_socket, manzil = 8000, server = y, suspend = n

    Then in Eclipse for example, create a new remote application profile. check this : http://www.ibm.com/developerworks/opensource/library/os-eclipse-javadebug/index.html

    0
    qo'shib qo'ydi
    Men disk raskadrovka interfeyslari haqida bilaman, ammo disk raskadrovka uchun emas, ishlab chiqarish uchun bu kerak.
    qo'shib qo'ydi muallif Andrew Kondratovich, manba

    Tajribali echim topdim: jsadebugd Keyin unga sun.jvm.hotspot.jdi.SAPIDAttachingConnector ulagichi orqali ulashingiz mumkin.

    0
    qo'shib qo'ydi
    nima demoqchisiz? Qancha qadamlar?
    qo'shib qo'ydi muallif Nick Dong, manba
    U buni dasturda hal qildimi? @Andrew Knodratovich
    qo'shib qo'ydi muallif Nick Dong, manba
    Siz bilan bir xil muammom bor. Uzoq jvmni qanday qo'shish va kodni ba'zi disk ruxsatsiz argumentlarni kiritish uchun uzoqdan jvmni qayta yoqmasdan dasturni ishlatish qanday ishlatiladi?
    qo'shib qo'ydi muallif Nick Dong, manba