首页 安全基础 网络安全 安全协议 病毒分析 防火墙 OS安全 无线安全 Web安全 PKI与PMI 入侵检测 经典案例
安全审计 设备安全 安全管理 安全标准 法律法规 隔离网闸 DB安全 XML安全 开源项目 资源下载 安全论坛 备份恢复
 当前位置:首页>>WEB安全>>java安全>>正文
如何使java Application只有一个实例运行
文章出处:www.yestar2000.com 作者:ggyy   发布时间:2004-09-08   点击:0
 

如果要使一个java Application只能运行一个实例。大多数会考虑使用JNDI技术来在命名空间中邦定特定的对象来做到该功能。

在windows下c开发的时候,这样的事情是很容易的,只需要创建一个信号量就可以了。

本文就是通过java的JNI技术来利用windows的信号内核对象的,从而非常容易的能控制一个java运行实例的数量的。

至于JNI技术就不多说了。

1。首先编写如下的java代码:/**方便起见,将所有的代码放在一个目录下

public class singleApp{

public native boolean findExsit();///native method

static
{
System.loadLibrary("singleApp");///load the native library
}

public static void main(String []args)
{
boolean res=new singleApp().findExsit();

if(res)
{
System.out.println("find an instance");
System.exit(0);
}
else
{
System.out.println("this is no one exsit!");
}
while(true)
{

}
}

}

使用javac 编译得到类文件。

2.得到C的头文件

使用javah工具得到如下的头文件:singleApp .h

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class singleApp */

#ifndef _Included_singleApp
#define _Included_singleApp
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: singleApp
* Method: findExsit
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL Java_singleApp_findExsit
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif


3.编辑c源文件:singleApp .cpp

#include <jni.h>
#include <windows.h>
#include <stdio.h>
#include <singleApp.h>



JNIEXPORT jboolean JNICALL Java_singleApp_findExsit
(JNIEnv *, jobject){
CreateSemaphore(NULL, 1, 1, "singleApp"); //创建信号量
if (GetLastError() == ERROR_ALREADY_EXISTS)//如果该信号量存在
return 1;
else ///如果不存在
return 0;

}

然后使用C++编译器编译得到dll文件

我是使用的borland公司的c++命令行工具编译的。注意的java载入库的时候是使用的singleApp名字,所以我们的dll名字也要是一样的名字,就是singleApp.dll.

还要注意的该dll要放在java的类载入器能找到的地方,比如classpath指定的地方。

4.运行java程序

java singleApp

然后再开一个console窗口,运行该java程序,第2次运行的时候自动退出虚拟机的。

简单吧!




 

 

作者:
[返回顶部↑]  [推荐好友] [查看评论]  
用户名: 新注册) 密码: 匿名评论 [查看评论]  发表评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 
↑文章搜索
  关键字:  
  范  围:  
  开始搜索  
※相关文章※
 

◎JavaTM安全体系结构
◎ 企业内部网中使用
◎JavaTM安全体系结构
◎ 利用 Web 对象通
◎JavaTM安全体系结构
◎再探JSP的安全性——Write

 
※热点文章※
  ·再探JSP的安全性——Write
·JavaTM安全体系结构
· 利用 Web 对象通
·JavaTM安全体系结构
· 企业内部网中使用
·JavaTM安全体系结构
· 如何保护Java程序
 

关于我们 | 征搞启示 | 版权信息 | 联系我们 | 友情链接

版权所有:中国信息安全组织 © 2003-2005 Power by DedeCms