Java wrapper service 使用

创建简单的Java程序

执行下面的命令,创建Maven工程wrapper-test.

mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.freebird.app -DartifactId=wrapper-test

然后按照提示进行操作(Maven官方文档有点老旧,和最新的情况脱节):
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 171:
Choose org.apache.maven.archetypes:maven-archetype-quickstart version:
1: 1.0-alpha-1
2: 1.0-alpha-2
3: 1.0-alpha-3
4: 1.0-alpha-4
5: 1.0
6: 1.1
Choose a number: 6:
[INFO] Using property: groupId = com.freebird.app
[INFO] Using property: artifactId = wrapper-test
Define value for property 'version': 1.0-SNAPSHOT: :
[INFO] Using property: package = com.freebird.app
Confirm properties configuration:
groupId: com.freebird.app
artifactId: wrapper-test
version: 1.0-SNAPSHOT
package: com.freebird.app
  Y: : y

好了,工程创建好了。代码也很简单:

package com.freebird.app;

/**
 * Hello world!
 *
 */
public class App {
    public static void main( String[] args ) {
        System.out.println( "Hello World!" );
    }
}

执行mvn clean package 打成一个jar文件:wrapper-test-1.0-SNAPSHOT.jar

下载

sudo -s
cd /usr
wget http://wrapper.tanukisoftware.com/download/3.5.14/wrapper-linux-x86-64-3.5.14.tar.gz
tar zxvf wrapper-linux-x86-64-3.5.14.tar.gz

安装

在~/.bashrc文件尾部中增加下面两句:
export WRAPPER_HOME=/usr/wrapper-linux-x86-64-3.5.14
export PATH=$WRAPPER_HOME/bin:$PATH
然后执行:
source ~/.bashrc

配置

http://wrapper.tanukisoftware.com/doc/english/launch-nix.html
http://mojo.codehaus.org/appassembler/appassembler-maven-plugin/usage_jsw.html

bin目录

在wrapper-test目录下创建bin目录,然后复制一些脚本文件到该目录下:
cd ./bin
cp ${WRAPPER_HOME}/bin/wrapper ./
cp ${WRAPPER_HOME}/src/bin/sh.script.in ./myapp
编辑myapp脚本文件,修改名称:
# Application
APP_NAME="@app.name@"
APP_LONG_NAME="@app.long.name@"

==》

# Application
APP_NAME="myapp"
APP_LONG_NAME="My application"

注意,myapp脚本里面默认配置需要一个兄弟目录conf目录,里面需要一个wrapper.conf文件。
WRAPPER_CONF="../conf/wrapper.conf"

conf目录

在wrapper-test目录下创建conf目录,然后复制配置文件到该目录下:
cd ./conf
cp ${WRAPPER_HOME}/src/conf/wrapper.conf.in ./wrapper.conf

注意,这时候默认使用的是Integration Method 1(WrapperSimpleApp)
看看这里就知道:http://wrapper.tanukisoftware.com/doc/english/integrate.html
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
但是我需要的服务是能够接受外部停止和启动命令,所以决定使用第二种方式。因此上面被我修改成:
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperStartStopApp

然后
将@app.name@替换成myapp
将@app.long.name@替换成My application
将@app.description@替换成My first wrapper application

并且将启动类设置为App
# Application parameters. Add parameters as needed starting from 1
wrapper.app.parameter.1=com.freebird.app.App
wrapper.app.parameter.2=1
wrapper.app.parameter.3=start

wrapper.app.parameter.4=com.freebird.app.App
wrapper.app.parameter.5=TRUE
wrapper.app.parameter.6=1
wrapper.app.parameter.7=stop

这些参数的设定文档参考:http://wrapper.tanukisoftware.com/doc/english/integrate-start-stop-win.html#parameter
基本上分成两组,我已经用空行分开,一组用于设置启动类和启动参数,另一组用于设置关闭类和关闭参数。

logs目录

创建另一个兄弟目录logs.

lib目录

创建兄弟目录lib,然后复制一些wrapper service的库文件进来。
cd lib
cp ${WRAPPER_HOME}/lib/libwrapper.so ./
cp ${WRAPPER_HOME}/lib/wrapper.jar ./

同时将wrapper-test-1.0-SNAPSHOT.jar文件也放到lib目录下。然后修改一下wrapper.conf文件:

# Java Classpath (include wrapper.jar) Add class path elements as
# needed starting from 1
wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=../lib/wrapper-test-1.0-SNAPSHOT.jar

控制台运行

回到bin目录下,执行命令:./myapp console
打印出两行hello,world.运行成功。
第一次hello,world是接受了start参数,启动程序。第二次是接受了stop参数,关闭程序。触发第二次main函数被调用的原因是第一次main函数运行后自动结束,然后被WrapperManager监听到,因此发起了第二次调用。
如果将main修改一下,就只会出现一次hello,world.


package com.freebird.app;


/**
 * Hello world!
 *
 */
public class App {
    public static void main( String[] args ) {
        System.out.println(args.length);
        System.out.println(args[0]);
        System.out.println( "Hello World!" );
        while(true){
            try{
                Thread.sleep(1000);
            }catch(Throwable ex){

            }
        }

    }
}






  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值