Size: 6686
Comment:
|
Size: 6716
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 44: | Line 44: |
pom.xml | '''pom.xml''' |
Line 98: | Line 98: |
src/main/resources/simplelogger.properties | '''src/main/resources/simplelogger.properties''' |
Line 106: | Line 106: |
src/main/java/org/allowed/bitarus/JavaServiceApp.java | '''src/main/java/org/allowed/bitarus/JavaServiceApp.java''' |
Line 136: | Line 136: |
/etc/init.d/jsa , change APP and WRAPPER | '''/etc/init.d/jsa''' , change APP and WRAPPER |
Line 146: | Line 146: |
/tmp/jsa structure | '''/tmp/jsa''' structure |
Line 155: | Line 155: |
/tmp/jsa/wrapper.conf | '''/tmp/jsa/wrapper.conf''' |
Line 198: | Line 198: |
JavaServiceWrapper
The Java Service Wrapper enables a Java Application to be run as a Windows Service or UNIX Daemon. It also monitors the health of your Application and JVM. http://wrapper.tanukisoftware.com/doc/english/product-overview.html
Community Editions:
wget http://wrapper.tanukisoftware.com/download/3.5.25/wrapper-linux-x86-32-3.5.25.tar.gz , 32 bit
wget http://wrapper.tanukisoftware.com/download/3.5.25/wrapper-linux-x86-64-3.5.25.tar.gz , 64 bit
Integrate with other apps
http://wrapper.tanukisoftware.com/doc/english/integrate.html
http://wrapper.tanukisoftware.com/doc/english/integrate-simple-nix.html
Sample Maven App to integrate
Maven project structure
. |-- pom.xml |-- src | `-- main | |-- java | | `-- org | | `-- allowed | | `-- bitarus | | `-- JavaServiceApp.java | `-- resources | `-- simplelogger.properties `-- target |-- archive-tmp |-- classes | |-- org | | `-- allowed | | `-- bitarus | | `-- JavaServiceApp.class | `-- simplelogger.properties |-- javaServiceApp-0.0.1-jar-with-dependencies.jar |-- javaServiceApp-0.0.1.jar |-- maven-archiver | `-- pom.properties `-- surefire 15 directories, 8 files
pom.xml
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
3 http://maven.apache.org/maven-v4_0_0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5 <groupId>org.allowed.bitarus</groupId>
6 <artifactId>javaServiceApp</artifactId>
7 <packaging>jar</packaging>
8 <version>0.0.1</version>
9 <name>javaServiceApp</name>
10 <url>http://maven.apache.org</url>
11 <build>
12 <plugins>
13 <plugin>
14 <artifactId>maven-assembly-plugin</artifactId>
15 <version>2.4</version>
16 <configuration>
17 <descriptorRefs>
18 <descriptorRef>jar-with-dependencies</descriptorRef>
19 </descriptorRefs>
20 <archive>
21 <manifest>
22 <mainClass>org.allowed.bitarus.JavaServiceApp</mainClass>
23 </manifest>
24 </archive>
25 </configuration>
26 <executions>
27 <execution>
28 <id>make-assembly</id>
29 <phase>package</phase>
30 <goals>
31 <goal>single</goal>
32 </goals>
33 </execution>
34 </executions>
35 </plugin>
36 </plugins>
37 </build>
38 <dependencies>
39 <dependency>
40 <groupId>org.slf4j</groupId>
41 <artifactId>slf4j-api</artifactId>
42 <version>1.7.7</version>
43 </dependency>
44 <dependency>
45 <groupId>org.slf4j</groupId>
46 <artifactId>slf4j-simple</artifactId>
47 <version>1.7.7</version>
48 </dependency>
49 </dependencies>
50 </project>
src/main/resources/simplelogger.properties
org.slf4j.simpleLogger.logFile=/tmp/JavaServiceApp.log org.slf4j.simpleLogger.defaultLogLevel=debug org.slf4j.simpleLogger.showDateTime=true org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss:SSS Z
src/main/java/org/allowed/bitarus/JavaServiceApp.java
1 package org.allowed.bitarus;
2
3 public class JavaServiceApp{
4 public static void main(String [] args){
5 org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(JavaServiceApp.class);
6
7 while(true){
8 try{
9 log.debug("Test JavaServiceApp");
10 Thread.sleep(10000);
11 }
12 catch(Exception ex){
13 log.error( ex.getMessage() );
14 }
15 }
16 }
17 }
Integration with JavaServiceWrapper
- cp target/javaServiceApp-0.0.1-jar-with-dependencies.jar /tmp/jsa/
- cp /tmp/wrapper-linux-x86-32-3.5.25/lib/wrapper.jar /tmp/jsa
- cp /tmp/wrapper-linux-x86-32-3.5.25/src/conf/wrapper.conf.in /tmp/jsa/wrapper.conf
- cp /tmp/wrapper-linux-x86-32-3.5.25/src/bin/sh.script.in /etc/init.d/jsa
- chmod 755 /etc/init.d/jsa
- cp /tmp/wrapper-linux-x86-32-3.5.25/bin/wrapper /usr/bin/wrapper
- cp /tmp/wrapper-linux-x86-32-3.5.25/lib/libwrapper.so /usr/lib/libwrapper.so
/etc/init.d/jsa , change APP and WRAPPER
# Application APP_NAME="JavaServiceApp" APP_LONG_NAME="Java Service App" # Wrapper WRAPPER_CMD="/usr/bin/wrapper" WRAPPER_CONF="/tmp/jsa/wrapper.conf"
/tmp/jsa structure
. |-- javaServiceApp-0.0.1-jar-with-dependencies.jar |-- wrapper.conf |-- wrapper.jar `-- wrapper.log
/tmp/jsa/wrapper.conf
#encoding=UTF-8 wrapper.lang.folder=/tmp/jsa/lang wrapper.java.command=/opt/java/bin/java set.JAVA_HOME=/opt/java wrapper.java.command=%JAVA_HOME%/bin/java wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp wrapper.java.classpath.1=/tmp/jsa/wrapper.jar wrapper.java.classpath.2=/tmp/jsa/javaServiceApp-0.0.1-jar-with-dependencies.jar wrapper.java.library.path.1=/usr/lib wrapper.java.additional.auto_bits=TRUE wrapper.java.additional.1= wrapper.app.parameter.1=org.allowed.bitarus.JavaServiceApp wrapper.console.format=PM wrapper.console.loglevel=INFO wrapper.logfile=/tmp/jsa/wrapper.log wrapper.logfile.format=LPTM wrapper.logfile.loglevel=INFO wrapper.logfile.maxsize=0 wrapper.logfile.maxfiles=0 wrapper.syslog.loglevel=NONE wrapper.ignore_sequence_gaps=TRUE wrapper.pidfile.strict=TRUE wrapper.console.title=@app.long.name@ wrapper.check.deadlock=TRUE wrapper.check.deadlock.interval=60 wrapper.check.deadlock.action=RESTART wrapper.check.deadlock.output=FULL wrapper.filter.trigger.1000=[Loaded java.lang.OutOfMemoryError wrapper.filter.action.1000=NONE wrapper.filter.trigger.1001=java.lang.OutOfMemoryError wrapper.filter.action.1001=RESTART wrapper.filter.message.1001=The JVM has run out of memory. wrapper.event.jvm_restart.email.body=The JVM was restarted.\n\nPlease check on its status.\n wrapper.name=@app.name@ wrapper.displayname=@app.long.name@ wrapper.description=@app.description@ wrapper.ntservice.dependency.1= wrapper.ntservice.starttype=AUTO_START wrapper.ntservice.interactive=false
Start service, /etc/init.d/jsa start
Stop service, /etc/init.d/jsa stop