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简单选择排序算法及实现

声明:准根文档网所有作品(图片、文字)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系 saizw@outlook.com