分享
 
 
 

Tomcat后台服务程序应用分析(High)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

后台服务程序应用分析

一、背景介绍:

后台服务程序加载,主要应用service.exe程序,将程序加载到WINNT的启动服务中。

启动服务加载形式,在TOMCAT和JRUN已经有应用,下面以TOMCAT为例子,简单介绍一下实现原理及过程:

service.exe:原名是javaService.exe,现在为了说明需要,将其改名为:service.exe。

该想法模拟大多数JAVA应用程序在WINDOWS系统中创建开机启动服务。(当然其它语言编译的程序同样也可以加载,现以TOMCAT服务器为例来作说明,TOMCAT作为一个开源软件,方便借鉴其设计思想)

1,copy service.exe到所要启动的JAVA应用程序目录中;

2,建立一个.bat文件,文件内容用格式如下:

service.exe -install "mediaService" C:\jdk1.3.0_02\jre\bin\classic\jvm.dll -Djava.class.path=C:\app\authsvr\media\auth.jar -Dcatalina.home=C:\app\authsvr\media\ -start C:\app\authsvr\media\auth.jar -params star -stop C:\app\authsvr\media\auth.jar -params stop -out C:\app\authsvr\media\stdout.log -err C:\app\authsvr\media\stderr.log

C:\jdk1.3.0_02\bin\java.exe -jar -Duser.dir="C:\Program Files\Apache Tomcat 4.0" "C:\Program Files\Apache Tomcat 4.0\bin\bootstrap.jar" start

C:\jdk1.3.0_02\bin\java.exe -jar -Duser.dir="C:\Program Files\Apache Tomcat 4.0" "C:\Program Files\Apache Tomcat 4.0\bin\bootstrap.jar" stop

//后面的是TOMCAT的例子,tomcat.exe是类似于service.exe的程序,采用C编写一个共享小程序,在很多地方可以下载或者复制。

//改为tomcat.exe or service.exe只是为了使用的时候,更容易理解其功能。

//在命令提示符下,可以service.exe /? 可以查到其相应可用参数。

@ tomcat.exe -install Tomcat

@ {JDK_HOME}\jre\bin\{hotspot|server|classic}\jvm.dll

@ -Djava.class.path={TOMCAT_HOME}\bin\bootstrap.jar;{TOMCAT_HOME}\bin\servlet.jar;{JDK_HOME}\lib\tools.jar

@ -Dcatalina.home={TOMCAT_HOME}

@ -start org.apache.catalina.startup.BootstrapService

@ -params start

@ -stop org.apache.catalina.startup.BootstrapService

@ -params stop

@ -out {TOMCAT_HOME}\logs\stdout.log

@ -err {TOMCAT_HOME}\logs\stderr.log

3,参数说明:

To install a service:

-install service_name jvm_library (jvm_option)*

-start start_class [-method start_method] [-params (start_parameter)+]

[-stop start_class [-method stop_method] [-params (stop_parameter)+]]

[-out out_log_file] [-err err_log_file]

[-current current_dir]

[-path extra_path]

4,分析tomcat自动加载服务模式

@ {JDK_HOME}\jre\bin\{hotspot|server|classic}\jvm.dll //jre,jvm

@ -Djava.class.path={TOMCAT_HOME}\bin\bootstrap.jar;{TOMCAT_HOME}\bin\servlet.jar;{JDK_HOME}\lib\tools.jar //*.jar

@ -Dcatalina.home={TOMCAT_HOME} //path

start:

C:\jdk1.3.0_02\bin\java.exe -jar -Duser.dir="C:\Program Files\Apache Tomcat 4.0" "C:\Program Files\Apache Tomcat 4.0\bin\bootstrap.jar" start

相应加载语句为:

@ -start org.apache.catalina.startup.BootstrapService

@ -params start

stop:

C:\jdk1.3.0_02\bin\java.exe -jar -Duser.dir="C:\Program Files\Apache Tomcat 4.0" "C:\Program Files\Apache Tomcat 4.0\bin\bootstrap.jar" stop

相应加载语句为:

@ -stop org.apache.catalina.startup.BootstrapService

@ -params stop

下面是指定捕捉相应的标准事件和错误事件的输出到相应的记录文件当中:

@ -out {TOMCAT_HOME}\logs\stdout.log

@ -err {TOMCAT_HOME}\logs\stderr.log

5,接下来的任务就是要将认证启动的线程,做成类似 org.apache.catalina.startup.BootstrapService.java 相应的能接受startor stop 相应参数的类,或者是提供等同功能的其它方法。

BootstrapService.java等相关文件于该文件一起附于压缩包内。

二、实现步骤:

1,tomcat启动实现,主要是应用Daemon接口,所以同样建立com.lulu.app.daemon.Daemon接口

package com.lulu.app.daemon;

// Referenced classes of package com.lulu.app.daemon:

// DaemonContext

public interface Daemon

{

public abstract void init(DaemonContext daemoncontext)

throws Exception;

public abstract void start()

throws Exception;

public abstract void stop()

throws Exception;

public abstract void destroy();

}

2,然后在启动程序BootstrapService.java中实现daemon接口(implements Daemon)

以program应用为例,需要将pgmAutoUpdate.java进行改造,实现daemon接口,

// -------------------------------------------------------- Service Methods

/**

* Load the App Service.

*/

public void init(DaemonContext context) throws Exception

{

String arguments[] = null;

/* Read the arguments from the Daemon context */

if (context!=null)

{

arguments = context.getArguments();

if (arguments!=null)

{

for (int i = 0; i < arguments.length; i++)

{

if (arguments[i].equals("-debug"))

{

debug = 1;

}

}

}

}

if(!boolNoReadKey)

{

rk = new readKey();

rk.start();

}

log("Create App APP server");

}

/**

* Start the App Service.

*/

public void start() throws Exception

{

System.out.println("test start is ok:");

// for(int i=0;;i++)

for(;;)

{

try

{

if (!stopFlag)

{

// System.out.println("test times:"+i);

pgmUpdate = new PgmUpdate();

pgmUpdate.start();

pgmUpdate.join();

}

else

System.exit(1);

}

catch(Exception ex)

{

System.out.println(ex.getMessage());

}

try

{

Thread.sleep(1000);

}

catch(InterruptedException ex)

{

System.out.println(ex.getMessage());

}

}

}

/**

* Stop the App Service.

*/

public void stop() throws Exception

{

System.out.println("test stop is ok:");

stopFlag = true;

}

/**

* Destroy the App Service.

*/

public void destroy()

{

// FIXME

}

3,将编译好的进行打包,

打包命令:

rem @echo off

rem 产生jar文件

jar cvfm ../bin/service.jar MANIFEST.MF -C ../classes .

rem jar文件打包结束

其中MANIFEST.MF文件内容如下:

Manifest-Version: 1.0

Created-By: sun jar

Main-Class: com.lulu.app.program.BootstrapService

Class-Path:

Specification-Title: APP Service

Specification-Version: 1.0

Created-By:

4,运用service.exe,加载到NT的服务启动中。

service.bat内容如下:

service.exe -install appService C:\jdk1.3.1_03\jre\bin\hotspot\jvm.dll -Xmx512m -Xms128m -Djava.class.path=D:\app\Application\program\bin\program.jar;\lib\tools.jar

-start com.lulu.app.program.BootstrapService -params start C:\jdk1.3.1_03

-stop com.lulu.app.program.BootstrapService -params stop

-out D:\biwm\app\Application\program\logs\stdout.log

-err D:\biwm\app\Application\program\logs\stderr.log

参数格式及用法,参考前面背景介绍。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有