java程序注册为服务 java注册系统实用
人的记忆力会随着岁月的流逝而衰退,写作可以弥补记忆的不足,将曾经的人生经历和感悟记录下来,也便于保存一份美好的回忆。写范文的时候需要注意什么呢?有哪些格式需要注意呢?下面是小编帮大家整理的优质范文,仅供参考,大家一起来看看吧。
java程序注册为服务 java注册系统篇一
本文实例讲述了java如何注册成windows服务程序及一个简单的java定时关机程序代码,分享给大家供大家参考。具体方法如下:
最近想找个软件来控制电脑的关机时间,在网上找了几个,都是可视化界面的可以设置具体的关机时间的软件。由于我想编写的关机程序是运行在别人机器上,只能让该机器在晚上17 点到23 点25 分才上网,到了23 点25 分就可以自动关机。为了让别人感觉不到这个软件的“存在”(免得使用者自己关闭定时关机软件),所以我想把关机软件注册为服务的方式,运行在后台。这里介绍下如何利用javaservice 软件把java 程序注册为windows 服务。
:
① 下载javaservice
访问网址http:/// 下载windows 版本的javaservice 文件, ,目前最新的版本就是“2.0.10 ”。
② 安装javaservice
解压我们下载下来的javaservices 到一个目录,我是解压到目录“d:/software/javaservice-2.0.10 ”下(解压到任何目录都可以,最好别解压到中文目录,省的出现问题 )
③ 编写定时关机代码
1) 类的名字为:
hutdownwindows
2) 把编写后的java 文件导出为class 的形式,把导出的类放到目录“d:/software/javaservice-2.0.10/classes/com/test/timer ”下。也就是把导出的com 包放到
“d:/software/javaservice-2.0.10/classes” 目录下。
④ 注册java 程序为windows 服务
进入“d:/software/javaservice-2.0.10 “目录,执行如下命令:
复制代码 代码如下: -install myshutdownservice "%java_home%"/jre/bin/server/ -="%java_home%"/lib/;d:/software/javaservice-2.0.10/classes -start hutdownwindows
其中“-install “后面的参数为服务的名称,“-start ”参数后边是要启动的类名,“ ”后面参数中的
“d:/software/javaservice-2.0.10/classe ”地址是我的`“timershutdownwindows ”类存放的路径,实际应用中修改为自己的classpath 即可。
1) “%java_home% ”jdk 目录,如果没有配置jdk 目录,则替换为jdk 的实际绝对地址。
2) - 是必须的,因为服务启动的时候无法访问系统的classpath 变量,所以必须在这里声明;如果jar 比较多,为避免写的命令过长,我们可以使用“-=jars 所在目录”参数。
3) 服务添加之后,可以在命令行中敲入“ ”命令来查看所有服务,并可以对服务的启动类型(自动启动还是手动启动等)进行修改。
⑤ 测试
1) 启动服务
当我们注册完服务后,我们可以通过命令“net start myshutdownservice ”来启动该服务,服务启动后会在d 日志文件。
2) 关闭服务
如果我们要关闭服务,可以通过命令“net stop myshutdownservice ”来关闭该服务。
3) 删除服务
当我们想删除该服务时,可以使用命令“sc myshutdownservice ”来删除该服务。
复制代码 代码如下:
package ;
import ;
import writer;
import ption;
import riter;
import dateformat;
import ar;
import ;
public class timershutdownwindows {
/* 检测是否需要关机的时间间隔 */
private static long m_ndetectinterval = 5000;
/* 记录上次检测的时间,以毫秒为单位 */
private static long m_llastmilliseconds = 0;
/* 可以使用电脑的最小小时 */
private static int m_nusepcminhour = 17;
/* 可以使用电脑的最大小时 */
private static int m_nusecomputermaxhour = 23;
/* 如果分钟超过这个时间,则关机计算机 */
private static int m_nminutes = 25;
/* 记录日志的文件的保存位置 */
private static string m_slogfile = "d:" + tor
+ "";
/* 记录当前系统是否已经启动自动关闭程序 */
private static boolean bhasshutdownpc = false;
/**
* @param args
*/
public static void main(string[] args) {
// 1. 单独开启一个线程去检测
thread athread = new thread(new timerdetector());
();
}
/**
* 定义内部类
*
* @author administrator
*
*/
static class timerdetector implements runnable {
/*
* (non-javadoc)
*
* @see le#run()
*/
public void run() {
// 1. 获取日志文件
printwriter out = null;
simpledateformat df = new simpledateformat("yyyy-mm-dd hh:mm:ss");
try {
out = new printwriter(new filewriter(m_slogfile, true), true);
} catch (ioexception e1) {
out = null;
tacktrace();
}
// 2. 记录服务启动时间
appendlog(out, " 服务启动时间:" + (new date()));
while (true) {
// 1. 判断当前系统时间是否被修改过
boolean bshoudshutdownpc = validateshoudshutdownpc(out);
if (bshoudshutdownpc) {
// 验证没通过,强制关机
exectueshutdown(out);
} else {
bhasshutdownpc = false;
}
// 2. 当前线程休眠下
try {
(m_ndetectinterval);
} catch (interruptedexception e) {
appendlog(out, sage());
}
}
}
/**
* 验证当前时间是否是需要关机的时间
*
* @return
*/
private boolean validateshoudshutdownpc(printwriter _out) {
// 1. 判断是否修改了系统时间
boolean bhasmodifysystemtime = detectmodifysytemtime(_out);
appendlog(_out, "bhasmodifysystemtime :" + bhasmodifysystemtime);
if (bhasmodifysystemtime) {
return bhasmodifysystemtime;
}
// 2. 没有修改系统时间,则判断当前时间是否超过了指定的时间
boolean bshoudsleep = nowissleeptime();
appendlog(_out, "bshoudsleep :" + bshoudsleep);
if (bshoudsleep) {
return bshoudsleep;
}
return false;
}
/**
* 判断当前时间是否应该休息的时间
*
* @return
*/
private boolean nowissleeptime() {
// 1. 获取当前小时和分钟
calendar acalendar = tance();
int nhour = (_of_day);
int nminute = ();
// 2. 判断当前小时是否在可以使用pc 的时间内, 最大小时为23
if (nhour < m_nusepcminhour) {
return true;
}
// 23 点需要单独判断,超过23 点30 就应该休息
if ((nhour >= m_nusecomputermaxhour) && (nminute >= m_nminutes)) {
return true;
}
// 3. 非休息时间
return false;
}
/**
* 判断是否有人修改了系统时间,如果有人修改了系统时间返回true ,
* 否则返回false
*
* @return
*/
private boolean detectmodifysytemtime(printwriter _out) {
// 1. 第一次检测系统时间
if (m_llastmilliseconds == 0) {
m_llastmilliseconds = ttimemillis();
return false;
}
// 2. 检测两次时间的差值
long linteral = ttimemillis() - m_llastmilliseconds;
linteral = (linteral);
// 3. 判断两次的时间间隔, 两次结果不一定完全等于 m_ndetectinterval ,允许误差为1 分钟
long lmaxinterval = m_ndetectinterval + 60 * 1000;
appendlog(_out, "linteral :::" + linteral);
appendlog(_out, "lmaxinterval :::" + lmaxinterval);
if (linteral > lmaxinterval) {
// 有人修改了系统时间,强制关机
return true;
}
// 4. 只有没人修改时间才记录上次检测时间
m_llastmilliseconds = ttimemillis();
return false;
}
/**
* 在指定的流中写入日志信息
*
* @param _outwriter
* @param _sappendcontent
*/
private void appendlog(printwriter _outwriter, string _sappendcontent) {
if (_outwriter == null) {
return;
}
n(_sappendcontent);
}
/**
* 执行关机命令
*/
private void exectueshutdown(printwriter _out) {
if (bhasshutdownpc) {
simpledateformat df = new simpledateformat(
"yyyy-mm-dd hh:mm:ss");
appendlog(_out, " 系统即将关闭, 当前时间:" + (new date()));
return;
}
appendlog(_out, " 有人修改了系统时间,系统强制关机!");
// 关机
try {
time().exec(
"shutdown -s -t 120 -c /" 很晚了,该睡觉了,2 分钟后关闭计算机。/"");
} catch (ioexception e) {
appendlog(_out, sage());
}
bhasshutdownpc = true;
}
}
}
希望本文所述对大家的java程序设计有所帮助。
s("content_relate");【java注册成windows服务程序及简单java定时关机的程序代码】相关文章:
1.如何编写java程序2.java程序运行方法3.java系统程序的运行4.java程序设计示例教程5.java程序重新配置教程6.java程序设计里的线程7.windows下java敏捷开发环境搭建步骤8.java简单选择排序算法及实现
- 唐诗三百首
- 古诗三百首
- 宋词精选
- 元曲精选
- 古诗十九首
- 小学古诗
- 小学生必背古诗80首
- 小学生必背古诗70首
- 写景的古诗
- 咏物诗
- 描写春天的古诗
- 描写夏天的古诗
- 描写秋天的古诗
- 描写冬天的古诗
- 描写雨的古诗
- 描写雪的古诗
- 描写风的古诗
- 描写花的古诗
- 描写梅花的古诗
- 描写荷花的古诗
- 描写柳树的古诗
- 描写月亮的古诗
- 描写山的古诗
- 描写水的古诗
- 描写长江的古诗
- 描写黄河的古诗
- 描写儿童的古诗
- 山水诗
- 田园诗
- 边塞诗
- 含有地名的古诗
- 节日古诗
- 春节古诗
- 元宵节古诗
- 清明节古诗
- 端午节古诗
- 七夕古诗
- 中秋节古诗
- 重阳节古诗
- 古代抒情诗
- 伤怀的古诗
- 咏史怀古诗
- 爱国古诗
- 送别诗
- 离别诗
- 思乡诗
- 思念的诗
- 爱情古诗
- 励志古诗
- 哲理诗
- 闺怨诗
- 赞美老师的古诗
- 赞美母亲的古诗
- 关于友情的古诗
- 关于战争的古诗
- 忧国忧民的古诗
- 婉约诗词
- 豪放诗词
- 人生必背古诗
- 论语
- 诗经
- 孙子兵法
- 三十六计
- 史记
- 周易
- 山海经
- 资治通鉴
- 黄帝内经
- 了凡四训
- 梦溪笔谈
- 千字文
- 世说新语
- 左传
- 大学
- 中庸
- 尚书
- 礼记
- 周礼
- 仪礼
- 庄子
- 鬼谷子
- 老子
- 孟子
- 墨子
- 荀子
- 韩非子
- 列子
- 淮南子
- 管子
- 尉缭子
- 吴子
- 伤寒论
- 天工开物
- 素书
- 汉书
- 文心雕龙
- 吕氏春秋
- 孝经
- 孔子家语
- 颜氏家训
- 孙膑兵法
- 搜神记
- 笑林广记
- 楚辞
- 乐府诗集
- 论衡
- 百战奇略
- 战国策
- 三国志注
- 将苑
- 六韬三略
- 反经
- 公孙龙子
- 司马法
- 逸周书
- 黄帝四经
- 清官贪官传
- 睡虎地秦墓竹简
- 贞观政要
- 金刚经
- 佛说四十二章经
- 水经注
- 农桑辑要
- 文昌孝经
- 六祖坛经
- 地藏经
- 徐霞客游记
- 弟子规
- 增广贤文
- 幼学琼林
- 冰鉴
- 容斋随笔
- 智囊
- 围炉夜话
- 商君书
- 魏书
- 周书
- 三字经
- 子夏易传
- 笠翁对韵
- 公羊传
- 尔雅
- 三国志
- 后汉书
- 明史
- 晋书
- 宋史
- 新唐书
- 旧唐书
- 隋书
- 元史
- 宋书
- 北齐书
- 新五代史
- 陈书
- 金史
- 南齐书
- 梁书
- 旧五代史
- 辽史
- 北史
- 南史
- 续资治通鉴
- 明季北略
- 浮生六记
- 高士传
- 大唐西域记
- 传习录
- 小窗幽记
- 国语
- 说苑
- 本草纲目
- 神农本草经
- 难经
- 千金方
- 奇经八脉考
- 濒湖脉学
- 棋经十三篇
- 古画品录
- 茶经
- 百家姓
- 智囊(选录)
- 罗织经
- 朱子家训
- 陶庵梦忆
- 红楼梦
- 三国演义
- 聊斋志异
- 西游记
- 水浒传
- 儒林外史
- 封神演义
- 太平广记
- 警世通言
- 镜花缘
- 醒世恒言
- 剪灯新话
- 隋唐演义
- 初刻拍案惊奇
- 老残游记
- 博物志
- 孽海花
- 三侠五义
- 穆天子传
- 二刻拍案惊奇
- 喻世明言
- 说唐全传
- 老残游记续集
- 三刻拍案惊奇
- 四十二章经
- 心经
- 法华经
- 华严经
- 楞伽经
- 无量寿经
- 圆觉经
- 易传
- 抱朴子
- 阴符经
- 黄庭经
- 文子
- 太玄经
- 悟真篇
- 声律启蒙
- 随园诗话
上一篇:java主线程与子线程通用
下一篇:大发【棋牌】9770推广二维码