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

  • BigBoyTV

    BigBoyTV

    25 EYLÜL 2013
  • BradleyWuzHere

    BradleyWuzHe

    25 NİSAN 2011
  • wafflepwn

    wafflepwn

    14 AĞUSTOS 2008