创建简单的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
wgethttp://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){
}
}
}
}
分享到:
相关推荐
Java Service Wrapper使用总结,将java应用发布为可安装的服务
Java Service Wrapper使用说明
去CSDN下载所谓破解出现以下错误:wrapper | Licensed to (null) for (null) wrapper | wrapper | Launching a JVM... jvm 1 | WrapperManager: Initializing... jvm 1 | WrapperJNI Error: Not licensed to use ...
SpringBoot 使用Java Service Wrapper 部署Windows服务
Java Service Wrapper部署说明 Java Service Wrapper是一个开源的软件,能够将Java程序发布到不同平台,并保证其JVM正常运行。 附件是一个实例,有比较详细的说明。更多的可以参考其网站
Java Service Wrapper 可以将Java程序包装成系统服务,这样就可以随着系统的运行而自动运行。Java Service Wrapper分为Professional、Standard、Community三个版本,并支持32位和64位的系统,其中Community版本为...
Java Service Wrapper 3.5.25 标准版破解,Windows 64位
YSJSW(Yet Another Java Service Wrapper) 可以配置java应用为windows服务。
Java Service Wrapper 可以将Java程序包装成系统服务,这样就可以随着系统的运行而自动运行。此文件为32位Community版本免费的社区版本。
Java Service Wrapper可以将java程序做成windows服务,逼格满满
Java Service Wrapper可为应用程序提供以下功能: (1)把应用安装为Windows服务或Linux守护进程; (2)监测JVM运行情况,对于程序原因或内存溢出导致的虚拟机崩溃实现自动重启; (3)记录运行日志;
在项目的开发中,有时候需要将Java应用程序打包成Windows服务,我们就直接可以通过windows的服务来启动和关闭java程序了。 本博文将通过有两种方法实现该功能,手动创建法和Maven自动打包法。
对以上配置的MyApp.bat进行测试,运行MyApp.bat,就像在Console窗口下运行Tomcat一样; 对以上配置的服务进行测试,运行InstallMyApp-NT.bat将把你的应用(此处为App)安装到Win32系统服务中了。...
用于java-service-wrapper的Puppet模块 Java服务包装程序使Java应用程序可以作为Windows服务或UNIX守护程序运行。 这个模块允许人们使用jsw库来守护她的Java服务。基本用法这个例子是基于logstash的 java_service_...
NULL 博文链接:https://xbgd.iteye.com/blog/754948
在开发中老是面对黑乎乎的tomcat窗口总是很烦躁,还担心被关掉,利用Java Service Wrapper将tomcat写入系统服务是件很不错的选择,100%原创
可配置工具,允许像本地NT或Unix服务一样安装和控制Java应用程序。 包括故障纠正软件,可自动重新启动崩溃或冻结的JVM。 当需要24x7全天候使用应用时,至关重要。 专为灵活性而设计。