SORU
7 EKİM 2008, Salı


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
7 EKİM 2008, Salı


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 Linux 127.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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Eric Enge

    Eric Enge

    2 Kasım 2009
  • MagmaRhino

    MagmaRhino

    16 Temmuz 2011
  • Videogamerz | Call of Duty

    Videogamerz

    5 NİSAN 2012