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

Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment

Revision 7 as of 2014-10-18 23:05:35
  • Java
  • JavaServiceWrapper

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

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