2012-02-13 9 views
5

Eğer öyleyse, hangi sistemde olduğunu (sistemdeki diğer tüm sistemlerden) nasıl öğrenebilirim ve nasıl kapanır?Bir jvm'de bir java işleminde başka bir jvm'de başka bir java işlemini durdurma/durdurma mümkün mü?

Bunu yapmak istiyorum çünkü apache start, apache stop apache start veya apache stop başlatıldıktan sonra apache stop gibi bir şey uygulamak istiyorum çünkü bir sunucu işlemi arka planda başlar veya durur ve komut veya bash istemi geri alırım ; Bu hem linux hem de windows üzerinde çalışmak için varsayalım.

cevap

2

Ana uygulama tarafından ele alınacak hizmetçi tarafında hizmet veren bir servis açmayı düşünebilirsiniz.

Diğer taraftan, bunu yapmak istemiyorsanız, jvm örneğinin işlemlerini gerçekleştirmenin bir yolunu bulmanız gerekir. Sadece jvm'yi öldürmek istiyorsan, bu kolay olurdu ama belirli bir süreç için. U böyle sanırım biraz yardıma ihtiyacım:

link

çalıştığını Umut için u

+0

Soket meselesini düşündüm ama bir sunucu için başka bir soketin dünyaya sahte bir mesaj gönderebileceği (SSL etkin olsa bile) başka bir soket ortaya çıkarması oldukça riskli olacağına karar verdim. soket sadece localhost'tan ağa değil, bağlantılara dinler, bu mümkün mü? – shawn

+0

Elbette mümkündür. U ana uygulamanızın izinlerini güvenlik duvarınıza tanımlayabilir ve sisteminizi saldırılara karşı önleyebilir. Ve ayrıca, uygulamayı uygulamanın kendisiyle kapatmak için sorumluluk verme fikri, bence iyi bir şey. – Neron

4

Mümkün, ama işletim sistemi özgü olacaktır. JVM'de otomatik olarak diğer VM'leri öldürmeye erişim sağlayan hiçbir şey yok.

İşletim sisteminizin kill komutunu (veya eşdeğerini) çağırmanız veya yerel kod yazmanız gerekir.

Yapabilir ve eğer sadece unix benzeri sistemlerde çalışacaksanız, en iyi seçeneğiniz, istediğiniz şeyi yapan bir kabuk betiği yazmak ve daha sonra ProcessBuilder ve arkadaşları ile yürütmek olacaktır.

0

Bence JMX'i kullanabilirsiniz.

Java işleminizde bir JMX sunucusunu başlatabilir ve başlangıç ​​ve durdurma gibi bir API açın.

JMX ile soket ve izin hakkında herhangi bir şey uygulamanız gerekmez. Sadece JMX ile uzaktan çağrılan bir işlev sağlamanız gerekir. Ayrıca erişim için bir kullanıcı ve şifre belirleyebilirsiniz.