• category: swing folder: SingleInstanceService title: SingleInstanceServiceを使って Web Start アプリケーションの重複起動を禁止 tags: [SingleInstanceService, ServiceManager, SingleInstance] author: aterai pubdate: 2008-02-25T02:06:56+09:00 description: SingleInstanceServiceを使って、Web Startアプリケーションの重複起動を禁止したり、引数の取得を行います。 image: https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTTIU5TktI/AAAAAAAAAj4/muKNMFrhEcE/s800/SingleInstanceService.png

概要

概要

SingleInstanceServiceを使って、Web Startアプリケーションの重複起動を禁止したり、引数の取得を行います。

サンプルコード

サンプルコード

#spandel
final JFrame frame = new JFrame("@title@");
#spanend
#spanadd
JFrame frame = new JFrame("@title@");
#spanend
try {
  SingleInstanceService sis =
      (SingleInstanceService)ServiceManager.lookup("javax.jnlp.SingleInstanceService");
      (SingleInstanceService) ServiceManager.lookup("javax.jnlp.SingleInstanceService");
  sis.addSingleInstanceListener(new SingleInstanceListener() {
    private int count = 0;
    @Override public void newActivation(String[] args) {
      //System.out.println(EventQueue.isDispatchThread());
      // System.out.println(EventQueue.isDispatchThread());
      EventQueue.invokeLater(new Runnable() {
        @Override public void run() {
          JOptionPane.showMessageDialog(frame, "");
          frame.setTitle("title:"+count);
          frame.setTitle("title:" + count);
          count++;
        }
      });
    }
  });
#spandel
} catch(UnavailableServiceException use) {
#spanend
#spanadd
} catch (UnavailableServiceException use) {
#spanend
  use.printStackTrace();
  return;
}
View in GitHub: Java, Kotlin

解説

Web Startアプリケーションの場合、javax.jnlp.SingleInstanceServiceに、SingleInstanceListenerを追加することで、新しい次のインスタンスの起動やその時の引数を取得することが簡単に出来ます。

解説

Web Startアプリケーションの場合、javax.jnlp.SingleInstanceServiceSingleInstanceListenerを追加することで、新しい次のインスタンスの起動やその時の引数取得などが可能になります。
  • メモ: JDK 1.6.0_03では、SingleInstanceServiceは正常に動作しない
    • JDK 1.6.0_10で修正済み
  • - コンパイルに、javaws.jarが必要なので、以下のようなクラスパスを設定します。
  • コンパイルにjavaws.jarが必要なので以下のようなクラスパスを設定
    set CLASSPATH=%JAVA_HOME%/jre/lib/javaws.jar
または、build.xmlなどに記入してください。
  • またはbuild.xmlなどに記入
    <path id="project.class.path">
      <pathelement location="${build.dest}" />
      <pathelement location="${java.home}/lib/javaws.jar" />
      <pathelement path="${java.class.path}" />
    </path>
    

参考リンク

参考リンク

コメント

コメント