用javaservice将java程序发布为windows服务上网查了一下怎么才能让java应用变成nt服务,也就是要自动运行没有界面,网上用的比较多的方法大致有三个
1.开源项目javaservice(http://javaservice.objectweb.org/)
2.开源项目java service wrapper(http://sourceforge.net/projects/wrapper/)
3.利用jbuilder或其他工具将java类打包成exe文件,然后用微软提供的开发包中的文件将exe发布成服务
我首先排除了3,因为3实在是太麻烦,而且限制比较多
1和2我都实验了一下,说来惭愧,java service wrapper虽然得到了很多牛人的认可,但是我按照文档上的配置方法怎么都不行,总是提示找不到我要执行的main方法
无奈只好用javaservice了,不过这个用起来真的很容易,也很方便
我是这么做的,首先当然是写程序,代码我就不往上贴了,我写了两个类,其中一个包含main方法,我利用jdbc连接oracle数据,通过timer和timertask,以一定的时间间隔访问数据库,提取特定标记的数据,将这些数据写到一个文本文件中.将两个类写完后生成两个.class文件,分别是a.class和b.class其中a中包含main方法
因为用到了oracle的jdbc驱动所以要把oracle的driver包一起打包
命令如下:
jar cvf test.jar a.class b.class oracle
其中oracle是从oracle的lib文件夹下classess12.jar内提取出来的oracle文件夹
打包成功后生成test.jar
从http://forge.objectweb.org/project/download.php?group_id=137&file_id=6015下载
JavaService-2.0.10.zip ,解压后得到javaservice和其他一些批处理文件,那些批处理都是例子,比如发布jboss的和发布tomcat的
将javaservice复制到test.jar的同一目录下新建一个文本文件另存为.bat,当然你也可以修改例子用的bat文件
文件一(安装服务)
JavaService -install testservice C:\jdk1.4\jre\bin\server\jvm.dll -Djava.class.path=E:\test\test.jar -Xms64M -Xmx128M -start a -err err.log -current e:\test
具体的含义就不解释了,大家可以去看javaservice的文档,这里需要说明的是start后面是带静态main方法的类,文档写的很清楚
文件二(卸载服务)
javaservice -uninstall testservice
执行文件一即可将其发布为windows的服务
执行文件二可卸载
安装成功后,服务的状态是停止,启动类型为自动
启动一下就ok了