论坛首页 Java企业应用论坛

用JAVA编写系统服务(Service)

浏览 22258 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-06-21  
不知有没有人将一个JAVA程序作成一个系统服务,当系统启动时自动加载,用户可以控制服务的停止、启动及restar。C语言在实现方面已经有很多成效,而现今还没有一个运作良好的JAVA系统服务呈现在大家面前。大家可以发表一个自己的意见谈一谈。如:TOMCAT中的系统级服务实现有缺点,停止服务时不能即时从内存中清除遗留的进程,快速重启服务时容易出现端口的多次绑定,造成服务加载失败。
   发表时间:2004-06-21  
toney_kissinger 写道
不知有没有人将一个JAVA程序作成一个系统服务,当系统启动时自动加载,用户可以控制服务的停止、启动及restar。C语言在实现方面已经有很多成效,而现今还没有一个运作良好的JAVA系统服务呈现在大家面前。大家可以发表一个自己的意见谈一谈。如:TOMCAT中的系统级服务实现有缺点,停止服务时不能即时从内存中清除遗留的进程,快速重启服务时容易出现端口的多次绑定,造成服务加载失败。


你怎么知道没有?在Unix平台上,要控制Java程序作为系统服务,可以说是轻而易举的事情,写个shell脚本就行。即使是在Windows平台,你也可以使用Jakarta的commons-daemon来把Java程序作为系统服务程序来管理。

说到Windows平台,你以为一定要在管理工具的服务里面出现的才能叫做系统服务吗?在服务里面出现的东西,无非就是在发送

net *** start
net *** stop
net *** restart


这样的命令而已。

我用tomcat的

startup.bat 
shutdown.bat 


有什么本质区别吗?

操作系统启动加载就更加简单,你在注册表里面添加,或者在启动菜单里面添加都可以。

我从来不觉得一定要放在管理工具的服务里面有什么实质意义,相反,我是很反感放到那里去的,如果不放在那里,我自己控制更简单方便,放到那里,反而把事情搞复杂了,将来删除,也往往删除不干净。

如果你一定要实现这样的功能的话,需要用VC来写注册表来实现,如果你熟悉VC,你就应该知道怎么编写。

另外Windows平台的BEA WebLogic 自带了一个这样的把java程序注册为系统服务的工具

http://e-docs.bea.com/wls/docs81/adminguide/winservice.html
0 请登录后投票
   发表时间:2004-07-09  
实际上从用户可操作的角度来说的确有放到服务里的必要,不仅仅是因为好管理,还因为能自动启动(可能你没有在实际应用中遇见过将服务器反覆停止,启动的问题,但在现实中是很多的,也许程序错误,也许掉电,也许用户不小心等等),如果能将抛出的错误转为系统事件更方便管理。
0 请登录后投票
   发表时间:2004-07-11  
Robbin说的不错,windows net service又不是什么高级东西,下面的这个项目也可以支持windows net service。如果是产品,可以放一个管理器图标在状态栏右下角(日期区),比服务强一点。

Java Service Wrapper
0 请登录后投票
   发表时间:2004-07-11  
呵呵;这东西也有些用处;看着好看;
0 请登录后投票
   发表时间:2004-07-17  
凭我对WINDOWS的认识这两者是不一样的,后台程序不光是有一般应用程序的接口,还有一些特殊的接口以供管理,还有一点,后台程序和前台程序的优先程度是可以调整的,如果你用WIN2K SRV系列的产品就可以在高级选项里面设置为前台优化或者后台优化,这是优先分配系统资源的先后次序
0 请登录后投票
   发表时间:2004-07-20  
谢谢大家,我试着应用一下
0 请登录后投票
   发表时间:2004-07-21  
觉得重新删除oracle的时候就是一种困扰,往往不能一次清除干净。需要借助超级兔子之类的工具。
关键是有必要使用服务:windows做一个任务,linux/solaris设置crontab可以实现自动运行。

服务的意义就在于可以自动运行,停止,操作上方便一些而以。
0 请登录后投票
   发表时间:2004-08-21  
告诉你一个好的应用java到windows服务的开源工具,
http://wrapper.tanukisoftware.org
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics