2009-10-28 19 views
7

के माध्यम से जावा प्रक्रिया को प्रोग्रामेटिक रूप से बंद करना संभव है। मैं वर्तमान में किसी अन्य जावा प्रक्रिया की निगरानी करने के लिए एक ऐप लिख रहा हूं और कुछ लक्ष्य हिट होने पर विशिष्ट कार्यवाही करता हूं। उदाहरण के लिए, यदि किसी निश्चित समय के लिए थ्रेड डेडलॉक्स, तो थ्रेड को मार दें, अगर स्मृति का उपयोग किसी विशिष्ट राशि पर जाता है, तो ईमेल अलर्ट भेजें और प्रक्रिया को मार दें, आदिक्या जेएमएक्स

मेरा ऐप स्टैंड-अलोन ऐप के रूप में चलाएगा , विशिष्ट अन्य ऐप्स की निगरानी (स्थानीय रूप से, हालांकि जो मैं दूरस्थ या स्थानीय देख सकता हूं उससे कोई फर्क नहीं पड़ता)।

मैं एमएक्सबीन के माध्यम से बाहरी जेवीएम की निगरानी कर रहा हूं, लेकिन 'kill -9' जैसे सिस्टम कॉल से कम बाहरी प्रक्रिया को मारने का एक साफ तरीका नहीं देख सकता (मैं यूनिक्स में रास्ते में काम कर रहा हूं)।

क्या एमएक्सबीन इंटरफेस के माध्यम से एक जेवीएम को मारने का कोई तरीका है?

ग्राहम

+0

मुझे ऐसा करने का एक ऑफ-द-बॉक्स तरीका पता नहीं है, लेकिन मैं एक "आपातकालीन शट डाउन" एमबीन लागू करना चाहता हूं जो कॉल करने पर System.exit को कॉल करता है (मैं आपको पास करने की भी अनुमति देता हूं निकास वापसी कोड में)। – Adamski

उत्तर

7

निश्चित रूप से। लक्ष्य सर्वर पर एक एमबीन लागू करें जो System.exit() पर कॉल करता है, और क्लाइंट से जेएमएक्स ऑपरेशन के रूप में उसे आमंत्रित करता है।

2

यदि आप वसंत का उपयोग कर रहे हैं, तो आप अपने बीन को MBean operation के रूप में उजागर करने के लिए बस अपने बीन को एनोटेट कर सकते हैं। तो यह कुछ ऐसा होगा:

@MBeanOperation(description="Kill the service") 
public void die() { 
    System.exit(); 
} 

... या शायद एप्लिकेशन संदर्भ को रोकें।

+0

आपका मतलब है '@ प्रबंधित ओपेरेशन' – skaffman

संबंधित मुद्दे