高分求解!请问类似tomcat服务器的启动关闭是怎样实现?

xiao_yuer 2002-09-25 01:50:35
请问类似tomcat服务器的启动关闭是怎样实现?
具体需求:
启动一个程序后(java xxx),就让它在一直运行(Unix下是作为后台程序运行)。
然后可以通过(java xxx -stop)就把刚才启动的进程给关掉(考虑有两种方法,一个是让刚才那个程序的循环条件不再为真,程序正常退出;一种是强制kill掉刚才的进程,估计需要调用本地方法吧,不知道tomcat到底是怎么实现)。
附上tomcat3的启动退出命令:
启动:
java -Dtomcat.home="%TOMCAT_HOME%" org.apache.tomcat.startup.Tomcat
退出:
java -Dtomcat.home="%TOMCAT_HOME%" org.apache.tomcat.startup.Tomcat -stop
都是运行同一个类,只是运行参数不同就能达到启动关闭的效果。

我尝试过定一个static的boolean类型的类变量作为循环的条件,如果运行这个程序时,没有加参数我就进入循环;若接着加上stop参数运行该类,我就把这个类变量设为false,希望这样就能使前面那个类的循环条件不再成立而执行完成退出。但结果却发现,虽然是类变量,但是新开的dos窗口中运行的程序对类变量所作的修改根本不能作用到另外一个窗口正在运行的类,感觉有俩个窗口,就有俩套jvm在作用一样,因此采用static的变量来做开关好像也不行。


哪位高手能给点提示到底怎样实现,或是有原码贴出都不尽感激。。。。。。

...全文
293 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bhr 2002-09-26
  • 打赏
  • 举报
回复
找本比较厚的java的书,都会介绍socket编程的。
signboy 2002-09-26
  • 打赏
  • 举报
回复
http://jakarta.apache.org/
xiao_yuer 2002-09-25
  • 打赏
  • 举报
回复
哦,楼上的各位说的有道理。
不过还有没有其他的办法啊?
因为以前没有做过这方面的项目,有没有简单的例子能说明一下两个进程怎样通过socket通信的啊?
或者怎样监听特定的端口啊?
xiaoqiushui 2002-09-25
  • 打赏
  • 举报
回复
同意上面两位的观点,启动的时候会侦听特定端口,终止的时候启动的
是另外的虚拟机,两个虚拟机之间不能通信(目前是这样的),如果要
通信,必须通过Socket。我目前做的一个项目就是这样实现的,一个是
应用程序启动的虚拟机,另一个是tomcat中的Servlet,利用Socket实现
的事件通知,似乎jms的实现部分也包含了这种思想。
远太狼 2002-09-25
  • 打赏
  • 举报
回复
一般的做法都是服务器自己有一个远程管理服务,占用一个端口,接收受信IP的控制命令,实现远程监控(进程、流量、关闭等)。
netkid 2002-09-25
  • 打赏
  • 举报
回复
好像是监听特定端口,收到特定消息后(比如SHUTDOWN)则执行关闭操作
xiao_yuer 2002-09-25
  • 打赏
  • 举报
回复
jetercn(heter):
怎样连上去,我没有找到啊。
最好给我说说通过Jbuilder连的具体步骤。
jetercn 2002-09-25
  • 打赏
  • 举报
回复
你可以找到tomcat的source code看看
可以从他们的cvs server上check out

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧