Nasıl tek örnek bir Java uygulaması uygulamak için?
Bir ara tek örnek uygulamaları olan msn, windows media player vb kullanıcı uygulama çalışırken yeni bir uygulama örneği ortaya çıkacak değil yürütür () gibi pek çok uygulama gördüm.
C#, bunun için Mutex
sınıf kullanın ama Java ile bunu yapmak için nasıl bilmiyorum.
CEVAP
Eğer bu article tarafından: inanıyorum
ilk örneği olması localhost arabirim üzerinde dinleme soketi açmaya. Eğer mümkün soket açmak için ise, bu uygulamanın ilk örneği piyasaya olduğu varsayılmıştır. Bu uygulamanın bir örneği zaten çalışıyor o değilse, bu varsayım. Yeni bir örneğini başlatmak denendi varolan örneği haber, çıkın. Varolan örnek bildirim aldıktan sonra devraldı ve eylemi işleyen dinleyiciye bir olayı tetikler.
Not: Ahe InetAddress.getLocalHost()
kullanarak zor olabilir yorum bahseder:
- iade adresi bilgisayarın ağ erişimi olup olmadığını bağlıdır, çünkü DHCP ortamında beklendiği gibi çalışmıyor.
Çözüm ile bağlantı kurmak vardıInetAddress.getByAddress(new byte[] {127, 0, 0, 1})
;
Muhtemelen bug 4435662 ile ilgili.
- Ben de
getLocalHost
Beklenen sonuçları daha raporlar bug 4665037 bulundu: makine dönüş IP adresi, vs. Gerçek sonuçlar : dönüş127.0.0.1
.
şaşırtıcı
getLocalHost
ama windows üzerinde Linux127.0.0.1
dönüş var.
Ya da ManagementFactory
nesne kullanabilirsiniz. here açıkladı:
getMonitoredVMs(int processPid)
yöntem alır gibi parametre geçerli uygulama PID ve yakalamak uygulamanın adı " adlı komut satırı, örneğin, uygulama başladıc:\java\app\test.jar
yol değeri değişkendir "c:\\java\\app\\test.jar
". Bu şekilde, satır kod 17 sadece uygulama adı altında yakalayacağız.
Bundan sonra, biz JVM aynı ada sahip başka bir işlem için arama ve uygulama PID farklı olduğunu bulursak, ikinci uygulama örneği olduğu anlamına gelir.
JNLP fazla da bir SingleInstanceListener
Nasıl java uygulaması, bir windows hiz...
Nasıl Java sunucu uygulaması bir filtr...
Nasıl yerel Java Uygulaması Motor depo...
Nasıl java uygulaması içinden vm değiş...
Nasıl program içinde java uygulaması ç...