দূরবর্তী (স্থানীয় নয়) ভিএম সংযুক্ত করুন

জাভা সংযুক্ত API এটিকে স্থানীয় ভিএম এবং লোড এজেন্টগুলিতে সংযুক্ত করতে পারে। কিভাবে এজেন্ট লোড করতে আমি অন্য কম্পিউটারে ভিএম সংযুক্ত করতে পারি?

আমি জেএমএক্স সম্পর্কে জানি। কিন্তু আমার রিমোট ভিএম থেকে আমার কাস্টম এজেন্ট লোড করা হয়নি তা আমি খুঁজে পাইনি।

হয়তো আমার সমস্যা সমাধান করার অন্য উপায় রয়েছে (দূরবর্তী ভিএম থেকে কাস্টম কোড (এজেন্ট) লোড এবং চালানো)?

upd। আমি দূরবর্তী JVM এ কাস্টম কোডটি চালাতে চাই। প্রাথমিক JVM পরামিতিগুলির স্বাধীনতা প্লাস।

ধন্যবাদ।

3
আপনি এই ভাবে সমাধান করার জন্য মূল সমস্যা কি?
যোগ লেখক Thorbjørn Ravn Andersen, উৎস
আমি দৃঢ়ভাবে সফ্টওয়্যার আপডেট করার জন্য এজেন্ট ব্যবহার করে নিরুৎসাহিত করা হবে। শুধু আপনি এই পেতে পারেন সমর্থন সমস্যা কল্পনা।
যোগ লেখক Thorbjørn Ravn Andersen, উৎস
দূরবর্তী চলমান পরিষ্কার JVMs এ সংযুক্তি, পর্যবেক্ষণ এবং কোড আপডেট
যোগ লেখক Andrew Kondratovich, উৎস

3 উত্তর

It's no problem running a application server (Tomcat) in production, even with remote debugging attached.

হালনাগাদ

আপনি যদি আপনার অ্যাপ্লিকেশনের ভিতরে কাস্টম কোডটি চালাতে চান তবে একটি সমাধান লিখতে হবে এবং এটি সংকলন করতে হবে, এটি সার্ভারে কোথাও সংরক্ষণ করতে হবে এবং তারপরে আপনার অ্যাপ্লিকেশনের ভিতরে এটির মতো কিছু পদ্ধতি কার্যকর করুন:

/**
 * 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
    যোগ
    রিমোট ডিবাগিংয়ের মাধ্যমে আপনি এক্সপ্রেশনগুলি মূল্যায়ন করতে পারেন (কোডের সম্পূর্ণ লাইনগুলি)। আপনি যে কোড সংরক্ষণ করতে পারবেন না, কিন্তু আপনি ক্ষেত্র এবং পরিবর্তনশীল মান পরিবর্তন করতে পারেন। আমি যা চাই না তা পুরোপুরি বুঝতে পারছি না, আপনি কি প্রাথমিক প্রশ্নটি সম্পাদনা করতে পারেন এবং বিশদে ব্যাখ্যা করতে পারেন।
    যোগ লেখক davorp, উৎস
    আমি আমার উত্তর আপডেট করেছি ...
    যোগ লেখক davorp, উৎস
    আমি কাস্টম কোড ইনজেকশন প্রয়োজন। JMX এর সাথে আমি রিমোট JVM সম্পর্কে তথ্য পেতে পারি, কিন্তু আমি কোডটি ইনজেক্ট এবং এক্সিকিউট করতে পারি না। API সংযুক্ত করুন JVM এ এক্সিকিউটেবল এজেন্ট লোড করার উপায় সরবরাহ করে, তবে শুধুমাত্র স্থানীয় JVM। আমি রিমোট JVM এর সাথে একই কাজ করার জন্য খুঁজছি।
    যোগ লেখক Andrew Kondratovich, উৎস
    আপনি চান হিসাবে আপডেট।
    যোগ লেখক Andrew Kondratovich, উৎস

    আমি প্রশ্নটি বুঝতে পারছি না, আপনি শুধু একটি দূরবর্তী ভিএম থেকে সংযোগ করতে চান? যখন সংযুক্ত থাকে আপনি যা চান তা সম্পাদন করতে পারেন, ইভেন্ট ভিএম বন্ধ করে দেয়। ডিবাগ মোডে আপনার ভিএম শুরু করতে হবে:

    -Xdebug -Xrunjdwp: পরিবহন = dt_socket, ঠিকানা = 8000, সার্ভার = y, স্থগিত = 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
    যোগ
    আমি ডিবাগ ইন্টারফেস সম্পর্কে জানি, কিন্তু ডিবাগ করার জন্য, আমি এটি উত্পাদন করার জন্য প্রয়োজন।
    যোগ লেখক Andrew Kondratovich, উৎস

    আমি পরীক্ষামূলক সমাধান খুঁজে পেয়েছি: jsadebugd
    তারপরে আপনি sun.jvm.hotspot.jdi.SAPIDAttachingConnector সংযোগকারী দ্বারা এটি সংযুক্ত করতে পারেন।

    0
    যোগ
    আপনি কি বোঝাতে চেয়েছেন? কত ধাপ?
    যোগ লেখক Nick Dong, উৎস
    আপনি একটি প্রোগ্রাম এই সমাধান হয়নি? @ আন্দ্রে নোড্রাতোভিচ
    যোগ লেখক Nick Dong, উৎস
    আমি আপনার সাথে একই সমস্যা আছে। কোন ডিবাগ আর্গুমেন্ট যুক্ত করার জন্য দূরবর্তী jvm পুনরায় চালু না করে কোন রিমোট জেভিএম সংযুক্ত করবেন এবং প্রোগ্রামটি ব্যবহার করে কোডটি ইনজেক্ট করবেন?
    যোগ লেখক Nick Dong, উৎস