六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

將Java程序變成Windows系統服務

[摘要]近買了一臺機器做個source服務器和異地的幾個朋友一起做點東西玩玩。但是由于用的是電信的ADSL,所以地址是動態的,每天機器自動重起的時候就會變化。于是我就用3322的域名綁定,但是3322提供的windows更新dns的客戶端運行時不是作為系統服務運行的,所以沒有用戶登錄時它是沒有運行的,所以...
近買了一臺機器做個source服務器和異地的幾個朋友一起做點東西玩玩。但是由于用的是電信的ADSL,所以地址是動態的,每天機器自動重起的時候就會變化。于是我就用3322的域名綁定,但是3322提供的windows更新dns的客戶端運行時不是作為系統服務運行的,所以沒有用戶登錄時它是沒有運行的,所以還是沒有解決問題。后來下了一個Windows Resource Kit Tools(這個工具windows server默認是沒有的,需要到微軟的網站上下載,具體地址我沒有記住,google一下肯定能找到),里面有一些工具可以把普通的win32程序變成系統服務。

  instsrv: 這個工具是把win32程序變成系統服務,但是并不是所有程序都適合做系統服務的,如CN99的客戶端,注冊成系統服務后就是無法啟動的。

  基本用法:instsrv [服務名] [應用程序絕對路徑]

  srvany: 這個工具就是用來解決上面的工具中的問題,你注冊的時候把它當作你要的服務,在用它來啟動你的應用程序。

  instsrv [服務名] [srvany的絕對路徑]

  注冊成功后,到服務管理器中把剛才注冊的服務打開,在啟動參數中填上你的應用程序絕對路徑,啟動服務就可以了。

  這種方式可以解決更新域名地址的問題了。

  但是心里不爽,作為一個程序員如此受制于人總是不爽的,其實CN99的動態域名更新協議很簡單,編個簡單的程序就實現的。無奈只會Java,對于C或C++程序員來說,做一個系統服務實在是小Case啊,后悔當初沒有好好學C和C++。但是難道就沒有辦法把Java程序變成windows系統服務嗎?在Java的世界里基本上是沒有不可能的事,ObjectWeb Forge上有個項目叫JavaService就是用來把Java程序注冊成系統服務的。于是下來看了一下:

  一試--失敗

  二試--不成功

  三試--...

  ...
  ...

  放棄!

  老子自己做了,其實有了上面的instsrv和srvany其實就差一個可執行文件了。于是我用JBuilder把我的jar包做成了一個假的exe文件。

  我的DNS更新程序如下:

package org.mstar.dns;

import java.util.TimerTask;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.HttpException;
import java.io.IOException;
import java.util.*;
import org.apache.commons.logging.*;
import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import java.text.SimpleDateFormat;

public class Refresher {
 private static Log LOG = LogFactory.getLog(Refresher.class);
 public Refresher() {
  Timer timer = new Timer();
  timer.schedule(new RefreshTask(), 0, 60000);
 }

 class RefreshTask extends TimerTask {
  static final String URL ="http://members.3322.org/dyndns/update?system=dyndns&hostname=zjumty.3322.org";

  public void run() {
   HttpClient client = new HttpClient();
   client.getParams().setAuthenticationPreemptive(true);
   Credentials defaultcreds = new UsernamePasswordCredentials("username", "password");
   //此處我要保密
   client.getState().setCredentials(new AuthScope("members.3322.org",
     80, AuthScope.ANY_REALM), defaultcreds);
   GetMethod method = new GetMethod(URL);
   try {
    int statusCode = client.executeMethod(method);
    if (statusCode != HttpStatus.SC_OK) {
     LOG.error("Method failed: " + method.getStatusLine());
    }
    Date date = Calendar.getInstance().getTime();
    SimpleDateFormat fmt = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    byte[] responseBody = method.getResponseBody();
    LOG.info(fmt.format(date) + " -- " + new String(responseBody));
   } catch (HttpException e) {
    LOG.error("Fatal protocol violation: " + e.getMessage());
    e.printStackTrace();
   } catch (IOException e) {
    LOG.error("Fatal transport error: " + e.getMessage());
    e.printStackTrace();
   } finally {
    method.releaseConnection();
   }
  }
 }

 public static void main(String[] args) {
  Refresher refresher = new Refresher();
 }
}

  其實就是用Jakarta的HttpClient來請求一個URL就可以了。

  于是我現在有了我的Refresher.exe。當然你的系統上一定要有JVM才能運行(廢話)。為了運行方便我是把運行時的jar包,如logger.jar,httpclient.jar等打在我的jar包里了。

  接下來就是把它搞成系統服務了。

  第一步:instsrv Refrehser C:\Program Files\Windows Resource Kits\Tools\srvany.exe

  第二步:regedit打開注冊表

  第三步:進入HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Refrehser

  第四步:右鍵-新建-項 填入 Parameters

  第五步:打開Parameters,右鍵-新建-字符串值 Application

  第六步:雙擊Application 填入 c:\refresher.exe

  弟七步:啟動Refresher服務。

  一切都OK了。

  在Parameters里還可以添加很多鍵值:

  AppDirectory 工作目錄

  AppParameters 你的應用程序的參數。(我可以把我上面程序做成可以接受參數的,就更通用了)

  AppEnvironment 運行環境變量。

  值現在作為Java程序員的你也可以為自己系統添加一些動能了,趕快去做吧!



主站蜘蛛池模板: 日韩在线视频免费 | 亚洲专区在线播放 | 夜色1网站| 小草影院在线观看 | 天堂亚洲 | 亚洲激情视频在线播放 | 日韩在线精品视频 | 最近中文字幕无免费视频 | 日本系列第一页 | 在线看欧美日韩中文字幕 | 亚洲欧美综合 | 一级做a毛片免费视频 | 天天狠天天插 | 欧美在线一二三区 | 亚洲一区二区影视 | 日韩私人影院 | 在线观看国产一区亚洲bd | 亚欧乱色精品免费观看 | 午夜99| 天天干天天射天天插 | 一级女性全黄久久生活片免费 | 人人搞人人爱 | 亚洲人与牲动交xxxxbbbb | 一区一精品| 亚洲美女爱爱 | 亚洲第一页中文字幕 | 一级做性色a爰片久久毛片免费 | 五月开心六月伊人色婷婷 | 日日干夜夜草 | 天堂影院在线观看 | 日韩中文有码高清 | 亚洲成 人a影院青久在线观看 | 青青青久草 | 亚洲九九色| 性刺激欧美三级在线观看 | 欧美视频在线第一页 | 亚洲欧美系列 | 青草草在线观看免费视频 | 天天狠天天透天干天天怕处 | 特黄女一级毛片 | 青青久精品观看视频最新 |