当前位置:首页 » 编程语言 » javawindows服务

javawindows服务

发布时间: 2025-03-05 22:39:16

① 如何把一个java程序做成Windows服务

1、下载wrapper-windows-x86-32系列的工具包,解压缩为<wrapper-home>。
2、新建一个目录,例如:C:\MyServerApp,并在其下面创建五个文件夹
分别为:
bin 可执行程序文件夹
conf 配置文件夹
lib wrapper自身的jar包文件夹
logs 日志文件夹包
application 新建一个class用于存放应用程序的class文件, 此包下还新建一个lib 用于存放应用程序所需要的 jar包。
3、将<wrapper-home>\src\bin 中的App.bat.in,InstallApp-NT.bat.in,UninstallApp-NT.bat.in等文件
与<wrapper-home>\bin 下的wrapper.exe复制到bin 目录下,并且将App.bat.in,InstallApp-NT.bat.in,
UninstallApp-NT.bat.in等的后缀.in去掉。
将<wrapper-home>\src\conf 下的wrapper.conf文件和<wrapper-home>\conf 下的wrapper-license复制到conf目录下,wrapper-license文件一定不能少
将<wrapper-home>\lib 下的wrapper.jar,wrappertest.jar和wrapper.dll文件复制到lib目录下
最终的包结构可以是这样子的:
C:\MyServerApp
|-bin
|-App.bat
|-InstallApp-NT.bat
|-UninstallApp-NT.bat
|-wrapper.exe
|-lib
|-wrapper.jar 必须要的
|-wrappertest.jar
|-wrapper.dll
|-conf
|-wrapper.conf
|-wrapper-license
|-logs
|-wrapper.log
|-application
|-lib 应用程序中如果用到了jar包,那么就复制到此文件夹里
|-class 用来存放应用程序(一般应用程序是有包结构的,就把工程里面的bin目录下的.class文件连同包一起拷过来)
4、配置Wrapper工具的wrapper.conf配置文件
配置Java 虚拟机的位置
wrapper.java .command=C:\Program Files\Java \jdk1.6.0_07\bin\java
配置wrapper的主类,如果用他的代理方式,就填org.tanukisoftware.wrapper.WrapperSimpleApp
wrapper.java .mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
工具寻找jar包以及应用程序的路径
wrapper.java .classpath.1=../lib/wrappertest.jar
wrapper.java .classpath.2=../lib/wrapper.jar
wrapper.java .classpath.3=../lib/wrapper.dll
应用程序连同其文件夹一起拷到application文件夹下了,所以路径只需要指定到../application/
wrapper.java .classpath.4=../application/class
应用程序要用到的所有jar包
wrapper.java .classpath.5=../application/lib/*.jar
wrapper.java .library.path.1=../lib
wrapper.java .additional.1=-Dprograme.name=run.bat
要将哪一个应用程序做成服务,就要把他的主函数所在的类名 写在这里
wrapper.app.parameter.1=com.luke.service.server.TcpServer
wrapper.console.format=PM
wrapper.console.loglevel=INFO
指定日志记录的地方
wrapper.logfile=../logs/wrapper.log
wrapper.logfile.format=LPTM
wrapper.logfile.loglevel=INFO
wrapper.logfile.maxsize=0
wrapper.logfile.maxfiles=0
wrapper.syslog.loglevel=NONE
wrapper.console.title=Wrapper Application
wrapper.ntservice.name=@wrapper @
wrapper.ntservice.displayname=@WrapperApplication @
wrapper.ntservice.description=@WrapperDescription @
wrapper.ntservice.dependency.1=
wrapper.ntservice.starttype=AUTO_START
wrapper.ntservice.interactive=false
5、运行cmd
cd c:\MyServerApp\bin
App.bat测试不会将把你的应用(此处为server)安装到Win32系统服务中
InstallApp.bat安装 后才将把你的应用(此处为server)安装到Win32系统服务中

② 濡备綍娉ㄥ唽java绋嫔簭涓簑indows链嶅姟

杩欓噷浠嬬粛涓嫔备綍鍒╃敤javaService 杞浠舵妸java 绋嫔簭娉ㄥ唽涓簑indows 链嶅姟銆

涓銆 鍒╃敤javaService 娉ㄥ唽java 绋嫔簭涓簑indows 链嶅姟

[1] 涓嬭浇javaService

璁块梾缃戝潃http://javaservice.objectweb.org/ 涓嬭浇windows 鐗堟湰镄刯avaService 鏂囦欢锛屾垜涓嬭浇镄勬槸JavaService-2.0.10.rar 锛岀洰鍓嶆渶鏂扮殑鐗堟湰灏辨槸钬2.0.10 钬濄

[2] 瀹夎卝avaService

瑙e帇鎴戜滑涓嬭浇涓嬫潵镄刯avaServices 鍒颁竴涓鐩褰曪纴鎴戞槸瑙e帇鍒扮洰褰曗淒:/software/JavaService-2.0.10 钬濅笅锛堣В铡嫔埌浠讳綍鐩褰曢兘鍙浠ワ纴链濂藉埆瑙e帇鍒颁腑鏂囩洰褰曪纴鐪佺殑鍑虹幇闂棰 锛

[3] 缂栧啓瀹氭椂鍏虫満浠g爜锛岃佺浜岀珷镄勫畾镞跺叧链轰唬镰

1) 鍏蜂綋浠g爜鍙傚姞绗浜岀珷锛岀被镄勫悕瀛椾负锛

com.test.timer.TimerShutDownWindows

2) 鎶婄紪鍐椤悗镄刯ava 鏂囦欢瀵煎嚭涓篶lass 镄勫舰寮忥纴鎶婂煎嚭镄勭被鏀惧埌鐩褰曗淒:/software/JavaService-2.0.10/classes/com/test/timer 钬濅笅銆备篃灏辨槸鎶婂煎嚭镄刢om 鍖呮斁鍒

钬淒:/software/JavaService-2.0.10/classes钬 鐩褰曚笅銆

[4] 娉ㄥ唽java 绋嫔簭涓簑indows 链嶅姟

杩涘叆钬淒:/software/JavaService-2.0.10 钬灭洰褰曪纴镓ц屽备笅锻戒护锛

JavaService.exe -install MyShutDownService "%JAVA_HOME%"/jre/bin/server/jvm.dll -Djava.class.path="%JAVA_HOME%"/lib/tools.jar;D:/software/JavaService-2.0.10/classes -start com.test.timer.TimerShutDownWindows

鍏朵腑钬-install 钬滃悗闱㈢殑鍙傛暟涓烘湇锷$殑钖岖О锛屸-start 钬濆弬鏁板悗杈规槸瑕佸惎锷ㄧ殑绫诲悕锛屸淒java.class.path 钬濆悗闱㈠弬鏁颁腑镄

钬淒:/software/JavaService-2.0.10/classe 钬濆湴鍧鏄鎴戠殑钬淭imerShutDownWindows 钬濈被瀛樻斁镄勮矾寰勶纴瀹为檯搴旂敤涓淇鏀逛负镊宸辩殑classPath 鍗冲彲銆

杩欓噷闇瑕佹敞镒忓嚑镣癸细

1) 钬%JAVA_HOME% 钬漥dk 鐩褰曪纴濡傛灉娌℃湁閰岖疆jdk 鐩褰曪纴鍒欐浛鎹涓箦dk 镄勫疄闄呯粷瀵瑰湴鍧銆

2) -Djava.class.path 鏄蹇呴’镄勶纴锲犱负链嶅姟钖锷ㄧ殑镞跺欐棤娉曡块梾绯荤粺镄凛LASSPATH 鍙橀噺锛屾墍浠ュ繀椤诲湪杩欓噷澹版槑锛涘傛灉jar 姣旇缉澶氾纴涓洪伩鍏嶅啓镄勫懡浠よ繃闀匡纴鎴戜滑鍙浠ヤ娇鐢ㄢ-Djava.ext.dirs=jars 镓鍦ㄧ洰褰曗濆弬鏁般

3) 链嶅姟娣诲姞涔嫔悗锛屽彲浠ュ湪锻戒护琛屼腑鏁插叆钬渟ervices.msc 钬濆懡浠ゆ潵镆ョ湅镓链夋湇锷★纴骞跺彲浠ュ规湇锷$殑钖锷ㄧ被鍨嬶纸镊锷ㄥ惎锷ㄨ缮鏄镓嫔姩钖锷ㄧ瓑锛夎繘琛屼慨鏀广

[5] 娴嬭瘯

1) 钖锷ㄦ湇锷

褰撴垜浠娉ㄥ唽瀹屾湇锷″悗锛屾垜浠鍙浠ラ氲繃锻戒护钬渘et start MyShutDownService 钬濇潵钖锷ㄨユ湇锷★纴链嶅姟钖锷ㄥ悗浼氩湪D 鐩樻牴鐩褰旷敓鎴恗y_shutdown.log 镞ュ织鏂囦欢銆

2) 鍏抽棴链嶅姟

濡傛灉鎴戜滑瑕佸叧闂链嶅姟锛屽彲浠ラ氲繃锻戒护钬渘et stop MyShutDownService 钬濇潵鍏抽棴璇ユ湇锷°

3) 鍒犻櫎链嶅姟

褰撴垜浠𨱍冲垹闄よユ湇锷℃椂锛屽彲浠ヤ娇鐢ㄥ懡浠も渟c delete MyShutDownService 钬濇潵鍒犻櫎璇ユ湇锷°

浜屻 瀹氭椂鍏虫満浠g爜

packagecom.test.timer;
importjava.io.File;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjava.util.Date;
{
/*妫娴嬫槸钖﹂渶瑕佸叧链虹殑镞堕棿闂撮殧*/
privatestaticlongm_nDetectInterval=5000;
/*璁板綍涓婃℃娴嬬殑镞堕棿锛屼互姣绉掍负鍗曚綅*/
privatestaticlongm_lLastMilliSeconds=0;
/*鍙浠ヤ娇鐢ㄧ数鑴戠殑链灏忓皬镞*/
privatestaticintm_nUsePCMinHour=17;
/*鍙浠ヤ娇鐢ㄧ数鑴戠殑链澶у皬镞*/
privatestaticintm_nUseComputerMaxHour=23;
/*濡傛灉鍒嗛挓瓒呰繃杩欎釜镞堕棿锛屽垯鍏虫満璁$畻链*/
privatestaticintm_nMinutes=25;
/*璁板綍镞ュ织镄勬枃浠剁殑淇濆瓨浣岖疆*/
privatestaticStringm_sLogFile="D:"+File.separator
+"my_shutdown.log";
/*璁板綍褰揿墠绯荤粺鏄钖﹀凡缁忓惎锷ㄨ嚜锷ㄥ叧闂绋嫔簭*/
=false;
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//1.鍗旷嫭寮钖涓涓绾跨▼铡绘娴
ThreadaThread=newThread(newTimerDetector());
aThread.start();
}
/**
*瀹氢箟鍐呴儴绫
*
*@authorAdministrator
*
*/
{
/*
*(non-Javadoc)
*
*@seejava.lang.Runnable#run()
*/
publicvoidrun(){
//1.銮峰彇镞ュ织鏂囦欢
PrintWriterout=null;
SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
try{
out=newPrintWriter(newFileWriter(m_sLogFile,true),true);
}catch(IOExceptione1){
out=null;
e1.printStackTrace();
}
//2.璁板綍链嶅姟钖锷ㄦ椂闂
appendLog(out,"链嶅姟钖锷ㄦ椂闂达细"+df.format(newDate()));
while(true){
//1.鍒ゆ柇褰揿墠绯荤粺镞堕棿鏄钖﹁淇鏀硅繃
booleanbShoudShutDownPC=validateShoudShutDownPC(out);
if(bShoudShutDownPC){
//楠岃瘉娌¢氲繃锛屽己鍒跺叧链
exectueShutDown(out);
}else{
bHasShutDownPC=false;
}
//2.褰揿墠绾跨▼浼戠湢涓
try{
Thread.sleep(m_nDetectInterval);
}catch(InterruptedExceptione){
appendLog(out,e.getMessage());
}
}
}
/**
*楠岃瘉褰揿墠镞堕棿鏄钖︽槸闇瑕佸叧链虹殑镞堕棿
*
*@return
*/
(PrintWriter_out){
//1.鍒ゆ柇鏄钖︿慨鏀逛简绯荤粺镞堕棿
booleanbHasModifySystemTime=detectModifySytemTime(_out);
appendLog(_out,"bHasModifySystemTime锛"+bHasModifySystemTime);
if(bHasModifySystemTime){
returnbHasModifySystemTime;
}
//2.娌℃湁淇鏀圭郴缁熸椂闂达纴鍒椤垽鏂褰揿墠镞堕棿鏄钖﹁秴杩囦简鎸囧畾镄勬椂闂
booleanbShoudSleep=nowIsSleepTime();
appendLog(_out,"bShoudSleep锛"+bShoudSleep);
if(bShoudSleep){
returnbShoudSleep;
}
returnfalse;
}
/**
*鍒ゆ柇褰揿墠镞堕棿鏄钖﹀簲璇ヤ紤鎭镄勬椂闂
*
*@return
*/
privatebooleannowIsSleepTime(){
//1.銮峰彇褰揿墠灏忔椂鍜屽垎阍
CalendaraCalendar=Calendar.getInstance();
intnHour=aCalendar.get(Calendar.HOUR_OF_DAY);
intnMinute=aCalendar.get(Calendar.MINUTE);
//2.鍒ゆ柇褰揿墠灏忔椂鏄钖﹀湪鍙浠ヤ娇鐢≒C镄勬椂闂村唴,链澶у皬镞朵负23
if(nHour<m_nUsePCMinHour){
returntrue;
}
//23镣归渶瑕佸崟镫鍒ゆ柇锛岃秴杩23镣30灏卞簲璇ヤ紤鎭
if((nHour>=m_nUseComputerMaxHour)&&(nMinute>=m_nMinutes)){
returntrue;
}
//3.闱炰紤鎭镞堕棿
returnfalse;
}
/**
*鍒ゆ柇鏄钖︽湁浜轰慨鏀逛简绯荤粺镞堕棿锛屽傛灉链変汉淇鏀逛简绯荤粺镞堕棿杩斿洖true锛<BR>
*钖﹀垯杩斿洖false
*
*@return
*/
(PrintWriter_out){
//1.绗涓娆℃娴嬬郴缁熸椂闂
if(m_lLastMilliSeconds==0){
m_lLastMilliSeconds=System.currentTimeMillis();
returnfalse;
}
//2.妫娴嬩袱娆℃椂闂寸殑宸鍊
longlInteral=System.currentTimeMillis()-m_lLastMilliSeconds;
lInteral=Math.abs(lInteral);
//3.鍒ゆ柇涓ゆ$殑镞堕棿闂撮殧,涓ゆ$粨鏋滀笉涓瀹氩畬鍏ㄧ瓑浜m_nDetectInterval锛屽厑璁歌宸涓1鍒嗛挓
longlMaxInterval=m_nDetectInterval+60*1000;
appendLog(_out,"lInteral锛::"+lInteral);
appendLog(_out,"lMaxInterval锛::"+lMaxInterval);
if(lInteral>lMaxInterval){
//链変汉淇鏀逛简绯荤粺镞堕棿锛屽己鍒跺叧链
returntrue;
}
//4.鍙链夋病浜轰慨鏀规椂闂存墠璁板綍涓婃℃娴嬫椂闂
m_lLastMilliSeconds=System.currentTimeMillis();
returnfalse;
}
/**
*鍦ㄦ寚瀹氱殑娴佷腑鍐椤叆镞ュ织淇℃伅
*
*@param_outWriter
*@param_sAppendContent
*/
privatevoidappendLog(PrintWriter_outWriter,String_sAppendContent){
if(_outWriter==null){
return;
}
_outWriter.println(_sAppendContent);
}
/**
*镓ц屽叧链哄懡浠
*/
privatevoidexectueShutDown(PrintWriter_out){
if(bHasShutDownPC){
SimpleDateFormatdf=newSimpleDateFormat(
"yyyy-MM-ddHH:mm:ss");
appendLog(_out,"绯荤粺鍗冲皢鍏抽棴,褰揿墠镞堕棿锛"+df.format(newDate()));
return;
}
appendLog(_out,"链変汉淇鏀逛简绯荤粺镞堕棿锛岀郴缁熷己鍒跺叧链猴紒");
//鍏虫満
try{
Runtime.getRuntime().exec(
"shutdown-s-t120-c/"寰堟櫄浜嗭纴璇ョ浔瑙変简,2鍒嗛挓钖庡叧闂璁$畻链恒/"");
}catch(IOExceptione){
appendLog(_out,e.getMessage());
}
bHasShutDownPC=true;
}
}
}
热点内容
豆瓣服务器为什么经常卡死 发布:2025-03-06 08:47:32 浏览:808
安卓基岩版我的世界如何启用连锁 发布:2025-03-06 08:46:20 浏览:459
街电充电宝的安卓口是干什么用的 发布:2025-03-06 08:43:36 浏览:554
c语言或的符号怎么打 发布:2025-03-06 08:38:27 浏览:434
beepc怎么安装服务器 发布:2025-03-06 08:36:13 浏览:159
mysql数据库日志 发布:2025-03-06 08:34:42 浏览:494
c语言属于高级语言吗 发布:2025-03-06 08:34:40 浏览:274
zte服务器管理口地址 发布:2025-03-06 08:32:31 浏览:752
10m带宽上传速度 发布:2025-03-06 08:23:49 浏览:623
我家电脑配置可以玩什么网游 发布:2025-03-06 08:21:56 浏览:181