1

我写了一个swing应用程序,我想把它作为我的windows服务之一。为此我使用了

tanuki 软件服务包装器。我从以下区域找到它,TanukiServiceWrapperworkingProcess

我遵循了 application.conf 文件中的配置。这是我的 conf 文件..

#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

在将我的应用程序安装到服务之前完成所有配置后,我通过执行复制器测试了应用程序是否正在运行。在命令提示符中没有发现问题。见附件控制台图像。conf 文件夹有 wrapper.conf 和 wrapper-license.conf,bin 文件夹有 AppReplicator.bat、InstallReplicator-NT.bat、replicator.bat、replicator.jar、wrapper.exe、UnInstallReplicator-NT.bat 和启动、停止等bat 文件。我将所有文件放在适当的位置。但是当我将我的应用程序作为服务安装时,它会被安装,但是当我尝试启动它时会提示一条错误消息错误

如果我做错了什么,请纠正我,或者以其他方式驱使我

提前致谢,

阿伦

4

2 回答 2

0

如果您的服务有 UI 部分,您必须使用 JavaExe 免费工具来创建交互式服务。

于 2014-11-11T14:26:36.517 回答
0

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

于 2014-11-25T08:22:14.587 回答