java服务_【JavaService】使用Java编写部署windows服务

如果你玩windows系统,你对服务这个东西并不会陌生,服务可以帮我们做很多事情,在不影响用户正常工作的情况下,可以完成很多我们需要的需求。

众所周知,微软的visio studio内置的Service类可以编写windows服务,对于一个Java开发人员来说,想要编写一个windows服务部署到服务器里面,

还要在自己的开发环境装一个visio studio,那太麻烦了。

那么问题来了,我想用java编写一个windows服务,这个想法可行吗?答案是肯定的,可行!

开源的JavaService帮我们解决了这一个问题,使用java也可以编写一个windows服务部署到windows里面。

闲话不多说,来看看如何利用JavaService实现Java编写部署windows服务。

首先需要用到的一些开发工具:

JDK

Eclipse

JavaService

这里我安装的JDK是1.6版本的,

Eclipse用于编写一个JAVA工程,

JavaService可在官网下载,下载地址:http://javaservice.objectweb.org,下载之前官方需要确认你的一些个人信息,提交后可以进入资源下载页面,我这里下载的是2.0.10版本。解压后有很多文件,我们只需要用到其中的JavaService.exe。

7abe8075815bebb671ba6e723c5cf19e.png

做饭炒一个菜,我们需要准备一些菜品原料,以上我们的菜都买好了,接下来看看主要准备工作和主要步骤。

首先安装JDK,默认安装到C盘就可以了。

然后配置java环境变量,这里就不细说了,上一个链接给予大家参考,环境变量要配置正确,这个很重要。

接着编写一个Java工程

这里我贴出我的代码示例出来,是工作的一个需求,大致看一些主要代码即可,我下面会提到的。

这里是工程结构:

ef0eda49abc679e63b106d8f080b630d.png

代码:

package com.ecservice;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.InetAddress;

import java.net.NetworkInterface;

import java.net.SocketException;

import java.net.UnknownHostException;

import java.text.SimpleDateFormat;

import java.util.Date;

public class ECService {

private static Thread thread = null;

private static Service service = null;

/**

* 退出服务方法(该方法必须有参数 String [] args)

*

* @param args

*/

public static void StopService(String[] args) {

System.out.println(service.getLocalTime()+"停止服务");

service.setRunFlag(false);

}

/**

* 启动服务方法(该方法必须有参数 String [] args)

*

* @param args

*/

public static void StartService(String[] args) {

// 产生服务线程

service = new Service();

thread = new Thread(service);

System.out.println("\r\n"+service.getLocalTime()+"-----------启动服务-----------");

try {

// 将服务线程设定为用户线程,以避免StartService方法结束后线程退出

thread.setDaemon(false);

if (!thread.isDaemon()) {

System.out.println(service.getLocalTime()+"成功设定线程为用户线程!");

}

// 启动服务线程

thread.start();

} catch (SecurityException se) {

System.out.println(service.getLocalTime()+"线程类型设定失败!");

}

}

public static void main(String[] args) {

new Service().run();

//      ECService.StartService(null);

}

}

class Service implements Runnable {

private boolean runFlag = true;

/**

* 设定服务线程运行标志值

*

* @param runFlag

*/

public synchronized void setRunFlag(boolean runFlag) {

this.runFlag = runFlag;

}

/**

* 取得服务线程运行标志值

*

* @param void

*/

@SuppressWarnings("unused")

private synchronized boolean getRunFlag() {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值