Startup issue at java application running as windows service using thanuki service wrapper

1.4k views Asked by At

I've written a swing application, I want to make it as one of my windows service.For this I used

tanukisoftware service wrapper. I found it from bellow areas,TanukiServiceWrapper and workingProcess

I followed configurations in application.conf file.this is my conf file..

#encoding=UTF-8
# Configuration files must begin with a line specifying the encoding
#  of the the file.

#********************************************************************
# Wrapper License Properties (Ignored by Community Edition)
#********************************************************************
# Professional and Standard Editions of the Wrapper require a valid
#  License Key to start.  Licenses can be purchased or a trial license
#  requested on the following pages:
# http://wrapper.tanukisoftware.com/purchase
# http://wrapper.tanukisoftware.com/trial

# Include file problems can be debugged by removing the first '#'
#  from the following line:

#include.debug

# The Wrapper will look for either of the following optional files for a
#  valid License Key.  License Key properties can optionally be included
#  directly in this configuration file.
#include ../conf/wrapper-license.conf


#include ../conf/wrapper-license-%WRAPPER_HOST_NAME%.conf

# The following property will output information about which License Key(s)
#  are being found, and can aid in resolving any licensing problems.
#wrapper.license.debug=TRUE

#********************************************************************
# Wrapper Localization
#********************************************************************
# Specify the locale which the Wrapper should use.  By default the system
#  locale is used.
#wrapper.lang=en_US # en_US or ja_JP

# Specify the location of the Wrapper's language resources.  If these are
#  missing, the Wrapper will default to the en_US locale.
wrapper.lang.folder=../lang

#********************************************************************
# Wrapper Java Properties
#********************************************************************
# Java Application
#  Locate the java binary on the system PATH:

#wrapper.java.command=C:\Program Files\Java\jdk1.7.0_09\bin\java
wrapper.java.command=java
wrapper.working.dir =C:\replicator_wrapper\bin
#  Specify a specific java binary:
#set.JAVA_HOME=/java/path
#wrapper.java.command=%JAVA_HOME%/bin/java

# Tell the Wrapper to log the full generated Java command line.
#wrapper.java.command.loglevel=INFO

# Java Main class.  This class must implement the WrapperListener interface
#  or guarantee that the WrapperManager class is initialized.  Helper
#  classes are provided to do this for you.  See the Integration section
#  of the documentation for details.


wrapper.java.mainclass=com.abc.replicator.client.Processor

# 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/classes


wrapper.java.classpath.3=../lib/replicator.jar


wrapper.java.classpath.4=../lib/appJars/*

# Java Library Path (location of Wrapper.DLL or libwrapper.so)
wrapper.java.library.path.1=../lib/*

# Java Bits.  On applicable platforms, tells the JVM to run in 32 or 64-bit mode.
wrapper.java.additional.auto_bits=TRUE

# Java Additional Parameters
wrapper.java.additional.1=

# Initial Java Heap Size (in MB)
#wrapper.java.initmemory=3

# Maximum Java Heap Size (in MB)
#wrapper.java.maxmemory=64

# Application parameters.  Add parameters as needed starting from 1

wrapper.app.parameter.1=com.imedx.replicator.client.Processor

#********************************************************************
# Wrapper Logging Properties
#********************************************************************
# Enables Debug output from the Wrapper.
# wrapper.debug=TRUE

# Format of output for the console.  (See docs for formats)
wrapper.console.format=PM

# Log Level for console output.  (See docs for log levels)
wrapper.console.loglevel=INFO

# Log file to use for wrapper output logging.
wrapper.logfile=../logs/wrapper.log

# Format of output for the log file.  (See docs for formats)
wrapper.logfile.format=LPTM

# Log Level for log file output.  (See docs for log levels)
wrapper.logfile.loglevel=INFO

# Maximum size that the log file will be allowed to grow to before
#  the log is rolled. Size is specified in bytes.  The default value
#  of 0, disables log rolling.  May abbreviate with the 'k' (kb) or
#  'm' (mb) suffix.  For example: 10m = 10 megabytes.
wrapper.logfile.maxsize=0

# Maximum number of rolled log files which will be allowed before old
#  files are deleted.  The default value of 0 implies no limit.
wrapper.logfile.maxfiles=0

# Log Level for sys/event log output.  (See docs for log levels)
wrapper.syslog.loglevel=NONE

#********************************************************************
# Wrapper General Properties
#********************************************************************
# Allow for the use of non-contiguous numbered properties
wrapper.ignore_sequence_gaps=TRUE

# Do not start if the pid file already exists.
wrapper.pidfile.strict=TRUE

# Title to use when running as a console


wrapper.console.title=Replicator
#********************************************************************
# Wrapper JVM Checks
#********************************************************************
# Detect DeadLocked Threads in the JVM. (Requires Standard Edition)
wrapper.check.deadlock=TRUE

wrapper.check.deadlock.interval=60
wrapper.check.deadlock.action=RESTART
wrapper.check.deadlock.output=FULL

# Out Of Memory detection.
#  Ignore -verbose:class output to avoid false positives.
wrapper.filter.trigger.1000=[Loaded java.lang.OutOfMemoryError
wrapper.filter.action.1000=NONE
# (Simple match)
wrapper.filter.trigger.1001=java.lang.OutOfMemoryError
# (Only match text in stack traces if -XX:+PrintClassHistogram is being used.)
#wrapper.filter.trigger.1001=Exception in thread "*" java.lang.OutOfMemoryError
#wrapper.filter.allow_wildcards.1001=TRUE
wrapper.filter.action.1001=RESTART
wrapper.filter.message.1001=The JVM has run out of memory.

#********************************************************************
# Wrapper Email Notifications. (Requires Professional Edition)
#********************************************************************
# Common Event Email settings.
#wrapper.event.default.email.debug=TRUE
#wrapper.event.default.email.smtp.host=<SMTP_Host>
#wrapper.event.default.email.smtp.port=25
#wrapper.event.default.email.subject=[%WRAPPER_HOSTNAME%:%WRAPPER_NAME%:%WRAPPER_EVENT_NAME%] Event Notification
#wrapper.event.default.email.sender=<Sender email>
#wrapper.event.default.email.recipient=<Recipient email>

# Configure the log attached to event emails.
#wrapper.event.default.email.attach_log=TRUE
#wrapper.event.default.email.maillog.lines=50
#wrapper.event.default.email.maillog.format=LPTM
#wrapper.event.default.email.maillog.loglevel=INFO

# Enable specific event emails.
#wrapper.event.wrapper_start.email=TRUE
#wrapper.event.jvm_prelaunch.email=TRUE
#wrapper.event.jvm_start.email=TRUE
#wrapper.event.jvm_started.email=TRUE
#wrapper.event.jvm_deadlock.email=TRUE
#wrapper.event.jvm_stop.email=TRUE
#wrapper.event.jvm_stopped.email=TRUE
#wrapper.event.jvm_restart.email=TRUE
#wrapper.event.jvm_failed_invocation.email=TRUE
#wrapper.event.jvm_max_failed_invocations.email=TRUE
#wrapper.event.jvm_kill.email=TRUE
#wrapper.event.jvm_killed.email=TRUE
#wrapper.event.jvm_unexpected_exit.email=TRUE
#wrapper.event.wrapper_stop.email=TRUE

# Specify custom mail content
wrapper.event.jvm_restart.email.body=The JVM was restarted.\n\nPlease check on its status.\n

#********************************************************************
# Wrapper Windows NT/2000/XP Service Properties
#********************************************************************
# WARNING - Do not modify any of these properties when an application
#  using this configuration file has been installed as a service.
#  Please uninstall the service before modifying this section.  The
#  service can then be reinstalled.

# Name of the service

wrapper.name=replicator
# Display name of the service

wrapper.displayname=Replicator

# Description of the service

wrapper.description=Replicator

# Service dependencies.  Add dependencies as needed starting from 1
wrapper.ntservice.dependency.1=

# Mode in which the service is installed.  AUTO_START, DELAY_START or DEMAND_START
wrapper.ntservice.starttype=AUTO_START

# Allow the service to interact with the desktop.
wrapper.ntservice.interactive=true


wrapper.logfile=../logs/wrapper.log


wrapper.console.title=Replicator


wrapper.name=replicator


wrapper.displayname=Replicator Application


wrapper.description=Replicator App


wrapper.ntservice.starttype=AUTO_START


wrapper.single_invocation=FALSE
wrapper.share.1.type=ANY
wrapper.registry.java_home=C:\Program Files\Java\jdk1.7.0_09
wrapper.ntservice.process_priority=NORMAL
wrapper.ntservice.console=TRUE
wrapper.ntservice.generate_console=TRUE
wrapper.ntservice.hide_console=FALSE
wrapper.ntservice.starttype=DEMAND_START
wrapper.ntservice.pausable=FALSE
wrapper.ntservice.account=NT AUTHORITY\LocalService
wrapper.ntservice.recovery.1.failure=RESTART

After the completion of all configuration before installing my app to service ,I tested weather the app is running or not by executing the replicator. no issues founded in command-prompt. see the attachmentconsole_image. and the conf folder having wrapper.conf and wrapper-license.conf, bin folder having AppReplicator.bat,InstallReplicator-NT.bat,replicator.bat,replicator.jar,wrapper.exe,UnInstallReplicator-NT.bat and start,stop etc bat files. I placed all the files in proper locations. But when I install my application as a service ,it getting installed but when I try to launch it prompting up an error message error

please correct me if I'm doing any wrong or else drive me in other approaches

thanks in advance,

Arun

2

There are 2 answers

0
bb67 On

If your service has an UI part, you must use the JavaExe free tool to create an interactive service.

0
Arun Kumar Mudraboyina On

finally I achieved my goal. I used open source apache commons procrun instead of thanuki wrapper. After many number of failed attempts I succeeded. My java application now acting as a windows service. download the sample from here and do the appropriate changes to make your app as a service. there is a pdf document which is showing the instructions.Extract the sample from here procrun_sample_implementation

rename the existed .exe files with your app name and modify the script. after the completion of entire set up, in the console at the folder where your app.exe files existed, run the script which is modified according to your application need.now the service is going to be installed.

I abstracted all this stuff from here.. create windows service

thanks to Mr.ARIF for maintaining such an useful blog.

if you want to delete the installed service just run this.. C:\windows\system32>sc delete your_service_name