MoinMoin Logo
  • Comments
  • Immutable Page
  • Menu
    • Navigation
    • RecentChanges
    • FindPage
    • Local Site Map
    • Help
    • HelpContents
    • HelpOnMoinWikiSyntax
    • Display
    • Attachments
    • Info
    • Raw Text
    • Print View
    • Edit
    • Load
    • Save
  • Login

Navigation

  • Start
  • Sitemap
Revision 5 as of 2014-10-18 23:01:25
  • Java
  • JavaServiceWrapper

JavaServiceWrapper

http://wrapper.tanukisoftware.com/doc/english/product-overview.html 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.

Community Edition http://wrapper.tanukisoftware.com/download/3.5.25/wrapper-linux-x86-32-3.5.25.tar.gz

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

.
|-- 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

  • MoinMoin Powered
  • Python Powered
  • GPL licensed
  • Valid HTML 4.01