WSO2 Carbon and any Carbon-based product can be run as a Windows Linux service as described in the following sections:
Table of Contents |
---|
Prerequisites
Install JDK
...
and set up the JAVA_HOME
environment variable. For more information, see Installation Prerequisites.
...
Setting up the YAJSW wrapper configuration file
The configuration file used for wrapping Java Applications by YAJSW is wrapper.conf
, which is located in the <YAJSW_HOME>/conf
directory and in the <PRODUCT_HOME>bin/yajsw
directory of many WSO2 products. Following is the minimal wrapper.conf
configuration for running a WSO2 product as a Windows service. Open your wrapper.conf
file, set its properties as follows, and save it in <YAJSW_HOME>/conf
.
Info |
---|
If you want to set additional properties from an external registry at runtime, store sensitive information like usernames and passwords for connecting to the registry in a properties file and secure it with secure vault. |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
#********************************************************************
# working directory
#********************************************************************
wrapper.working.dir=${carbon_home}\\
# Java Main class.
# YAJSW: default is "org.rzo.yajsw.app.WrapperJVMMain"
# DO NOT SET THIS PROPERTY UNLESS YOU HAVE YOUR OWN IMPLEMENTATION
# wrapper.java.mainclass=
#********************************************************************
# tmp folder
# yajsw creates temporary files named in_.. out_.. err_.. jna..
# per default these are placed in jna.tmpdir.
# jna.tmpdir is set in setenv batch file to <yajsw>/tmp
#********************************************************************
wrapper.tmp.path = ${jna_tmpdir}
#********************************************************************
# Application main class or native executable
# One of the following properties MUST be defined
#********************************************************************
# Java Application main class
wrapper.java.app.mainclass=org.wso2.carbon.bootstrap.Bootstrap
# Log Level for console output. (See docs for log levels)
wrapper.console.loglevel=INFO
# Log file to use for wrapper output logging.
wrapper.logfile=${wrapper_home}\/log\/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 by size. May abbreviate with the 'k' (kB) or
# 'm' (mB) suffix. For example: 10m = 10 megabytes.
# If wrapper.logfile does not contain the string ROLLNUM it will be automatically added as suffix of the file name
wrapper.logfile.maxsize=10m
# 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=10
# Title to use when running as a console
wrapper.console.title="WSO2 Carbon"
#********************************************************************
# Wrapper Windows Service and Posix Daemon Properties
#********************************************************************
# Name of the service
wrapper.ntservice.name="WSO2CARBON"
# Display name of the service
wrapper.ntservice.displayname="WSO2 Carbon"
# Description of the service
wrapper.ntservice.description="Carbon Kernel"
#********************************************************************
# Wrapper System Tray Properties
#********************************************************************
# enable system tray
wrapper.tray = true
# TCP/IP port. If none is defined multicast discovery is used to find the port
# Set the port in case multicast is not possible.
wrapper.tray.port = 15002
#********************************************************************
# Exit Code Properties
# Restart on non zero exit code
#********************************************************************
wrapper.on_exit.0=SHUTDOWN
wrapper.on_exit.default=RESTART
#********************************************************************
# Trigger actions on console output
#********************************************************************
# On Exception show message in system tray
wrapper.filter.trigger.0=Exception
wrapper.filter.script.0=scripts\/trayMessage.gv
wrapper.filter.script.0.args=Exception
#********************************************************************
# genConfig: further Properties generated by genConfig
#********************************************************************
placeHolderSoGenPropsComeHere=
wrapper.java.command = ${java_home}\\bin\\java
wrapper.java.classpath.1 = ${java_home}\\lib\\tools.jar
wrapper.java.classpath.2 = ${carbon_home}\\bin\\*.jar
wrapper.app.parameter.1 = org.wso2.carbon.bootstrap.Bootstrap
wrapper.app.parameter.2 = RUN
wrapper.java.additional.1 = -Xbootclasspath\/a:${carbon_home}\\lib\\xboot\\*.jar
wrapper.java.additional.2 = -Xms256m
wrapper.java.additional.3 = -Xmx1024m
wrapper.java.additional.4 = -XX:MaxPermSize=256m
wrapper.java.additional.5 = -XX:+HeapDumpOnOutOfMemoryError
wrapper.java.additional.6 = -XX:HeapDumpPath=${carbon_home}\\repository\\logs\\heap-dump.hprof
wrapper.java.additional.7 = -Dcom.sun.management.jmxremote
wrapper.java.additional.8 = -Djava.endorsed.dirs=${carbon_home}\\lib\\endorsed;${java_home}\\jre\\lib\\endorsed
wrapper.java.additional.9 = -Dcarbon.registry.root=\/
wrapper.java.additional.10 = -Dcarbon.home=${carbon_home}
wrapper.java.additional.11 = -Dwso2.server.standalone=true
wrapper.java.additional.12 = -Djava.command=${java_home}\\bin\\java
wrapper.java.additional.13 = -Djava.io.tmpdir=${carbon_home}\\tmp
wrapper.java.additional.14 = -Dcatalina.base=${carbon_home}\\lib\\tomcat
wrapper.java.additional.15 = -Djava.util.logging.config.file=${carbon_home}\\repository\\conf\\log4j.properties
wrapper.java.additional.16 = -Dcarbon.config.dir.path=${carbon_home}\\repository\\conf
wrapper.java.additional.17 = -Dcarbon.logs.path=${carbon_home}\\repository\\logs
wrapper.java.additional.18 = -Dcomponents.repo=${carbon_home}\\repository\\components\\plugins
wrapper.java.additional.19 = -Dconf.location=${carbon_home}\\repository\\conf
wrapper.java.additional.20 = -Dcom.atomikos.icatch.file=${carbon_home}\\lib\\transactions.properties
wrapper.java.additional.21 = -Dcom.atomikos.icatch.hide_init_file_path=true
wrapper.java.additional.22 = -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true
wrapper.java.additional.23 = -Dcom.sun.jndi.ldap.connect.pool.authentication=simple
wrapper.java.additional.24 = -Dcom.sun.jndi.ldap.connect.pool.timeout=3000
wrapper.java.additional.25 = -Dorg.terracotta.quartz.skipUpdateCheck=true |
Setting up CARBON_HOME
Extract the Carbon-based product that you want to run as a Windows service, and then set the Windows environment variable CARBON_HOME to the extracted product directory location. For example, if you want to run ESB 4.5.0 as a Windows service, you would set CARBON_HOME to the extracted wso2esb-4.5.0
directory.
Running the product in console mode
You will now verify that YAJSW is configured correctly for running the Carbon-based product as a Windows service.
Open a Windows command prompt and go to the directory
<YAJSW_HOME>/bat
. For example:Code Block cd C:\Documents and Settings\yajsw_home\bat
Start the wrapper in console mode using the following command:
Code Block runConsole.bat
For example:
If the configurations are set properly for YAJSW, you will see console output similar to the following and can now access the WSO2 management console from your web browser via https://localhost:9443/carbon.
Working with the WSO2CARBON service
To install the Carbon-based product as a Windows service, execute the following command in the <YAJSW_HOME>/bat
directory:
Code Block |
---|
installService.bat |
The console will display a message confirming that the WSO2CARBON service was installed.
To start the service, execute the following command in the same console window:
Code Block |
---|
startService.bat |
The console will display a message confirming that the WSO2CARBON service was started.
To stop the service, execute the following command in the same console window:
Code Block |
---|
stopService.bat |
The console will display a message confirming that the WSO2CARBON service has stopped.
To uninstall the service, execute the following command in the same console window:
Code Block |
---|
uninstallService.bat |
The console will display a message confirming that the WSO2CARBON service was removed.
Setting up CARBON_HOME
Extract the WSO2 product that you want to run as a Linux service and set the environment variable CARBON_HOME
to the extracted product directory location.
Running the product as a Linux service
To run the product as a service, create a startup script and add it to the boot sequence. The basic structure of the startup script has three parts (i.e., start, stop and restart) as follows:
Code Block #!/bin/bash case “$1″ in start) echo “Starting Service” ;; stop) echo “Stopping Service” ;; restart) echo “Restarting Service” ;; *) echo $”Usage: $0 {start|stop|restart}” exit 1 esac
For example, given below is a startup script written for WSO2 Application Server 5.2.0:
Code Block language java #! /bin/sh export JAVA_HOME="/usr/lib/jvm/jdk1.7.0_07" startcmd='/opt/WSO2/wso2as-5.2.0/bin/wso2server.sh start > /dev/null &' restartcmd='/opt/WSO2/wso2as-5.2.0/bin/wso2server.sh restart > /dev/null &' stopcmd='/opt/WSO2/wso2as-5.2.0/bin/wso2server.sh stop > /dev/null &' case "$1" in start) echo "Starting WSO2 Application Server ..." su -c "${startcmd}" user1 ;; restart) echo "Re-starting WSO2 Application Server ..." su -c "${restartcmd}" user1 ;; stop) echo "Stopping WSO2 Application Server ..." su -c "${stopcmd}" user1 ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac
In the above script, the server is started as a user by the name user1 rather than the root user. For example,
su -c "${startcmd}" user1
Add the script to
/etc/init.d/
directory.
Info If you want to keep the scripts in a location other than
/etc/init.d/
folder, you can add a symbolic link to the script in/etc/init.d/
and keep the actual script in a separate location. Say your script name is appserver and it is in/opt/WSO2/
folder, then the commands for adding a link to/etc/init.d/
is as follows:Make executable:
sudo chmod a+x /opt/WSO2/appserver
- Add a link to
/etc/inin.d/
:sudo ln -snf /opt/WSO2/appserver/etc/init.d/appserver
Install the startup script to respective runlevels using the command
update-rc.d
. For example, give the following command for the sample script shown in step1:
Code Block sudo update-rc.d appserver defaults
Thedefaults
option in the above command makes the service to start in runlevels 2,3,4 and 5 and to stop in runlevels 0,1 and 6.A runlevel is a mode of operation in Linux (or any Unix-style operating system). There are several runlevels in a Linux server and each of these runlevels is represented by a single digit integer. Each runlevel designates a different system configuration and allows access to a different combination of processes.
- You can now st art, stop and restart the server using
service <service name>
{start|stop|restart}
command. You will be prompted for the password of the user (or root) who was used to start the service.