网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.JDBC 概述(一).
.从.class文件中寻找类名.
.《Java编程思想》(第二版)第07章.
.全面了解jar问题.
.学编程的人不能不看的好文章(3).
.从Hibernate2到3移植的两点初体验.
.如何在Java中消除实现继承和面向.
.native2ascii命令的一种用法!.
.Java的网络编程:用Java实现Web服.
.Java网络编程之URI、URL研究专题.
.使用jdom的XPath来快速定位xml节.
.没有Rails Java程序员如何使用Ru.
.使用Web服务和Ja.NET来实现互用性.
.Effective Java读书笔记之五.
.轻轻松松作兼职(java).
.Java多线程编程详解.
.EasyDBO中Java注解配置映射的原理.
.java线程简介(同步详细信息).
.关于Java中文问题的几条分析原则.
.JAVA数据流的应用.

将Java程序变成Windows系统服务

发表日期:2008-1-5


  近买了一台机器做个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";

上一篇:深入浅出Java模式设计之模板方法模式 人气:681
下一篇:利用Java技术开发Web网络课件浅议 人气:688
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐