Swing/SingleInstanceService のバックアップ(No.17)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/SingleInstanceService へ行く。
- 1 (2008-02-25 (月) 02:06:56)
- 2 (2008-02-25 (月) 14:23:14)
- 3 (2008-05-16 (金) 13:06:26)
- 4 (2009-08-11 (火) 16:05:57)
- 5 (2010-04-06 (火) 02:27:40)
- 6 (2011-04-19 (火) 21:34:47)
- 7 (2013-01-27 (日) 22:17:11)
- 8 (2013-08-22 (木) 15:34:24)
- 9 (2013-09-10 (火) 00:41:50)
- 10 (2014-11-01 (土) 00:46:09)
- 11 (2014-11-25 (火) 03:03:31)
- 12 (2015-03-03 (火) 14:14:00)
- 13 (2016-06-01 (水) 19:07:31)
- 14 (2017-09-13 (水) 17:56:08)
- 15 (2017-11-02 (木) 15:34:40)
- 16 (2018-02-27 (火) 16:01:16)
- 17 (2018-10-13 (土) 21:31:41)
- 18 (2020-10-08 (木) 15:41:14)
- 19 (2022-07-14 (木) 10:40:45)
- 20 (2022-08-20 (土) 22:15:25)
- 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:
概要
SingleInstanceService
を使って、Web Start
アプリケーションの重複起動を禁止したり、引数の取得を行います。
Screenshot
Advertisement
サンプルコード
final JFrame frame = new JFrame("@title@");
try {
SingleInstanceService sis =
(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());
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
JOptionPane.showMessageDialog(frame, "");
frame.setTitle("title:" + count);
count++;
}
});
}
});
} catch (UnavailableServiceException use) {
use.printStackTrace();
return;
}
View in GitHub: Java, Kotlin解説
Web Start
アプリケーションの場合、javax.jnlp.SingleInstanceService
に、SingleInstanceListener
を追加することで、新しい次のインスタンスの起動やその時の引数を取得することが簡単に出来ます。
メモ:JDK 1.6.0_03
では、SingleInstanceService
は正常に動作しないJDK 1.6.0_10
で修正済み
コンパイルに、javaws.jar
が必要なので、以下のようなクラスパスを設定します。
set CLASSPATH=%JAVA_HOME%/jre/lib/javaws.jar
または、build.xml
などに記入してください。
<path id="project.class.path">
<pathelement location="${build.dest}" />
<pathelement location="${java.home}/lib/javaws.jar" />
<pathelement path="${java.class.path}" />
</path>
参考リンク
- SingleInstanceService (JNLP API Reference 1.8.0_71)
- Bug ID: 6631056 SingleInstanceService does not work on JRE 1.6.0_03
- Java Web Start SingleInstanceService - appframework(JSR-296)
- ServerSocketを使ってアプリケーションの複数起動を禁止