Swing/SingleInstanceApplication のバックアップ(No.14)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/SingleInstanceApplication へ行く。
- 1 (2008-02-18 (月) 16:46:47)
- 2 (2008-03-05 (水) 12:41:41)
- 3 (2014-10-03 (金) 14:07:56)
- 4 (2015-03-06 (金) 19:01:42)
- 5 (2017-02-03 (金) 16:02:56)
- 6 (2017-12-22 (金) 17:40:49)
- 7 (2019-12-18 (水) 19:49:56)
- 8 (2020-04-08 (水) 16:08:59)
- 9 (2021-10-20 (水) 16:19:55)
- 10 (2025-01-03 (金) 08:57:02)
- 11 (2025-01-03 (金) 09:01:23)
- 12 (2025-01-03 (金) 09:02:38)
- 13 (2025-01-03 (金) 09:03:21)
- 14 (2025-01-03 (金) 09:04:02)
- category: swing folder: SingleInstanceApplication title: ServerSocketを使ってアプリケーションの複数起動を禁止 tags: [ServerSocket, SingleInstance] author: aterai pubdate: 2008-02-18T16:46:47+09:00 description: ServerSocketを使ってポートをロック代わりに使用し、アプリケーションの複数起動を禁止します。 image:
Summary
ServerSocket
を使ってポートをロック代わりに使用し、アプリケーションの複数起動を禁止します。Java Swing Hacks #68 単一インスタンスのアプリケーションを作る を参考にしています。
Screenshot
Advertisement
Source Code Examples
ServerSocket socket = null;
try {
socket = new ServerSocket(38765);
} catch (IOException e) {
socket = null;
}
if (socket == null) {
JOptionPane.showMessageDialog(null, "An instance of the application is already running...");
return;
}
View in GitHub: Java, KotlinExplanation
Java Swing Hacks #68
で紹介されているポートをロックとして使用する方法(任意のポートにバインドできるアプリケーションは一つだけ)で起動できるアプリケーションを一つに制限しています。
上記のサンプルでは、警告ダイアログを表示して二番目のアプリケーションは終了するだけですが、#68
のサンプルではポートへの接続要求が来るまで待機し要求が発生するとソケット入力ストリームを開いてコマンドラインオプションを取得する例(タブブラウザなどのように既に起動しているアプリケーションで別のコンテンツを開く場合に使用する)も記述されています。
- 以下のリンクのようにポートを使用せず
JDK 6
にあるAttach API
を使ったり、ロックファイルを使用して起動するアプリケーションの数を制御する方法もある
Reference
- Java Swing Hacks #68 単一インスタンスのアプリケーションを作る
- SingleInstanceServiceを使って Web Start アプリケーションの重複起動を禁止
javax.jnlp.SingleInstanceService
を使用して複数起動を禁止する