Swing/SingleInstanceService のバックアップの現在との差分(No.5)
TITLE:SingleInstanceServiceを使って Web Start アプリケーションの重複起動を禁止
Posted by terai at 2008-02-25
SingleInstanceServiceを使って Web Start アプリケーションの重複起動を禁止
SingleInstanceServiceを使って、Web Start アプリケーションの重複起動を禁止したり、引数の取得を行います。- 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
アプリケーションの重複起動を禁止したり、引数の取得を行います。
- &jnlp;
- &jar;
- &zip;
Screenshot
Advertisement
#screenshot
サンプルコード
#spanend
#spandel
final JFrame frame = new JFrame("@title@");
#spanend
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#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;
public void newActivation(String[] args) {
//System.out.println(EventQueue.isDispatchThread());
@Override public void newActivation(String[] args) {
// System.out.println(EventQueue.isDispatchThread());
EventQueue.invokeLater(new Runnable() {
public void run() {
@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;
}
解説
Web Start アプリケーションの場合、javax.jnlp.SingleInstanceService に、SingleInstanceListener を追加することで、新しい次のインスタンスの起動やその時の引数を取得することが簡単に出来ます。解説
Web Start
アプリケーションの場合、javax.jnlp.SingleInstanceService
にSingleInstanceListener
を追加することで、新しい次のインスタンスの起動やその時の引数取得などが可能になります。
ただし、Java 1.6.0_03*1 では、うまく動作しないようです。
- - コンパイルに、javaws.jar が必要なので、以下のようなクラスパスを設定します。
- コンパイルに
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>
- Java How To ...: JAVA_HOME vs java.home
参考リンク
- SingleInstanceService (JNLP API Reference 1.5)
- Bug ID: 6631056 SingleInstanceService does not work on JRE 1.6.0_03
- Java Web Start SingleInstanceService - appframework(JSR-296)
- ServerSocketを使ってアプリケーションの複数起動を禁止
コメント
参考リンク
- 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を使ってアプリケーションの複数起動を禁止