Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package com.jfinal.ext.kit;
 
 
 import java.io.File;

.

Author(s):
sagyf yang
Version:
1.0 2014-01-04 14:02
Since:
JDK 1.6
public class JVMKit {
    static Logger logger = Logger.getLogger(JVMKit.class);
    static List<FileLockjvmFile = new ArrayList<FileLock>();
    static List<ServerSocketjvmSockets = new ArrayList<ServerSocket>();

    
得到当时进程PID,如果没有得到,返回-1

Returns:
    public static int getPid() {
        String name = ManagementFactory.getRuntimeMXBean().getName();
        int indexOf = name.indexOf(.);
        if (indexOf > 0) {
            return Integer.parseInt(name.substring(0, indexOf));
        } else {
            return -1;
        }
    }

    
锁定一个临时文件,以便实现一台服务器只能启动一个进程

Parameters:
lockName 类名称
    public static void lockFileForOnlyProcess(Class lockName) {
        lockFileForOnlyProcess(lockName.getName());
    }

    
锁定一个临时文件,以便实现一台服务器只能启动一个进程

Parameters:
lockName 临时文件名称,不要带目录名称
    public static void lockFileForOnlyProcess(String lockName) {
        File file = new File(System.getProperty("java.io.tmpdir"), lockName + ".lock");
        try {
            FileOutputStream output = new FileOutputStream(file);
            FileLock fileLock = output.getChannel().tryLock();
            if (fileLock == null) {
                .warn("文件:'" + file + "'已经被lock,进程已经启动,系统将退出");
                System.exit(1);
            }
            PrintStream printStream = new PrintStream(output);
            printStream.println(getPid());
            printStream.flush();
            .add(fileLock);
            .info("成功lock文件:'" + file + "',用以避免程序被多次启动,pid:" + getPid());
        } catch (IOException e) {
            .warn("获得文件lock时异常:'" + file + "',系统退出"e);
            System.exit(2);
        }
    }
New to GrepCode? Check out our FAQ X