📄 tmng.java
字号:
package com.richeninfo.license;
import java.io.*;
import java.util.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: </p>
* @author xiaolie
* @version 1.0
*/
public class TMng implements Runnable, Serializable{
private long installTime;
private long passTime;
private boolean terminated = false;
private String pubKey;
private String name;
//private static TMng mng;
private static Hashtable mngTable;
private TMng(String name) {
installTime = System.currentTimeMillis();
this.name = name;
pubKey = createPublicKey();
}
public String getPubKey() {
return pubKey;
}
private String createPublicKey() {
Random random = new Random(System.currentTimeMillis());
StringBuffer sb = new StringBuffer(16);
for (int i = 0; i < 16; i++) {
int k = random.nextInt();
k = Math.abs(k);
byte b = (byte)(k % 25 + 65);
char c = (char)b;
sb.append(c);
}
return sb.toString();
}
public String toString() {
return "InstallTime:" + installTime + " passTime:" + passTime + " pubKey=" + pubKey;
}
public static TMng getTMng(String name) throws Exception{
TMng mng = null;
if (mngTable == null) {
try {
FileInputStream istream = new FileInputStream(LicenseKeyPair.properties.getProperty("java.home") + "/" + "LICENSE.en");
try {
ObjectInputStream p = new ObjectInputStream(istream);
mngTable = (Hashtable)p.readObject();
} finally {
istream.close();
}
} catch (InvalidClassException ie) {
File f= new File(LicenseKeyPair.properties.getProperty("java.home") + "/" + "LICENSE.en");
if (f.exists()) {
f.delete();
}
mngTable = new Hashtable();
mng = new TMng(name);
mngTable.put(name, mng);
} catch (FileNotFoundException e) {
mngTable = new Hashtable();
mng = new TMng(name);
mngTable.put(name, mng);
}
}
if (mngTable.containsKey(name)) {
mng = (TMng)mngTable.get(name);
} else {
mng = new TMng(name);
mngTable.put(name, mng);
}
if (System.currentTimeMillis() < mng.installTime) {
mng.installTime = System.currentTimeMillis();
}
if ((System.currentTimeMillis() - mng.installTime) > mng.passTime) {
mng.passTime = System.currentTimeMillis() - mng.installTime;
}
try {
mng.persist();
} catch (Exception e) {
System.err.println(e.toString());
throw e;
}
Thread th = new Thread(mng);
th.setDaemon(true);
th.start();
return mng;
}
public void persist() throws Exception{
String d = LicenseKeyPair.properties.getProperty("java.home") + "/" + "LICENSE.en";
FileOutputStream ostream = new FileOutputStream(d, false);
ObjectOutputStream p = new ObjectOutputStream(ostream);
p.writeObject(mngTable);
p.flush();
ostream.close();
}
public void run() {
while (!terminated) {
try {
Thread.currentThread().sleep(600000);
} catch (Exception e) {
}
passTime += 600000;
try {
persist();
} catch (Exception e) {
e.printStackTrace(System.out);
}
}
}
public long getPassTime() {
if ((System.currentTimeMillis() - installTime) > passTime) {
passTime = System.currentTimeMillis() - installTime;
try {
persist();
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
return passTime;
}
void bd() throws Exception {
passTime = 0;
persist();
}
public static void main(String[] args) throws Exception {
if (args.length == 0) {
System.out.println("Usage: java com.richeninfo.license.TMng productName");
return;
}
//TMng mng = TMng.getTMng("SGrid");
TMng mng = TMng.getTMng(args[0]);
System.out.println(mng.toString());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -