Repository: karaf
Updated Branches:
  refs/heads/master b23cbafa4 -> 82cee21fd


[KARAF-4703] Document system scripts (present in bin/contrib)


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/5b8806d5
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/5b8806d5
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/5b8806d5

Branch: refs/heads/master
Commit: 5b8806d5e8807553a4686656346edd682d39bcf4
Parents: b23cbaf
Author: lburgazzoli <lburgazz...@gmail.com>
Authored: Fri Sep 9 17:26:58 2016 +0200
Committer: Jean-Baptiste Onofré <jbono...@apache.org>
Committed: Thu Sep 15 12:55:52 2016 +0200

----------------------------------------------------------------------
 manual/src/main/asciidoc/index.adoc             |   4 +-
 .../asciidoc/user-guide/os-integration.adoc     | 505 +++++++++++++++++++
 .../src/main/asciidoc/user-guide/wrapper.adoc   | 409 ---------------
 3 files changed, 507 insertions(+), 411 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/5b8806d5/manual/src/main/asciidoc/index.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/index.adoc 
b/manual/src/main/asciidoc/index.adoc
index 4e37947..9348243 100644
--- a/manual/src/main/asciidoc/index.adoc
+++ b/manual/src/main/asciidoc/index.adoc
@@ -36,7 +36,7 @@ include::user-guide/directory-structure.adoc[]
 
 include::user-guide/start-stop.adoc[]
 
-include::user-guide/wrapper.adoc[]
+include::user-guide/os-integration.adoc[]
 
 include::user-guide/console.adoc[]
 
@@ -128,4 +128,4 @@ include::developer-guide/debugging.adoc[]
 
 include::developer-guide/writing-tests.adoc[]
 
-include::developer-guide/github-contributions.adoc[]
\ No newline at end of file
+include::developer-guide/github-contributions.adoc[]

http://git-wip-us.apache.org/repos/asf/karaf/blob/5b8806d5/manual/src/main/asciidoc/user-guide/os-integration.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/user-guide/os-integration.adoc 
b/manual/src/main/asciidoc/user-guide/os-integration.adoc
new file mode 100644
index 0000000..823c302
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/os-integration.adoc
@@ -0,0 +1,505 @@
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+=== Integration in the operating system
+
+In the previous chapter, we saw the different scripts and commands to start, 
stop, restart Apache Karaf.
+
+Instead of using these commands and scripts, you can integrate Apache Karaf 
directly in your operating system service control using:
+
+* <<Service Wrapper>>
+* <<Service Script Templates>>
+
+The above methods allow you to directly integrate Apache Karaf:
+
+* like a native Windows Service
+* like a Unix daemon process
+
+===== Service Wrapper
+
+The "Service Wrapper" correctly handles "user's log outs" under Windows, 
service dependencies, and the ability to run services which interact with the 
desktop.
+
+It also includes advanced fault detection software which monitors an 
application.
+The "Service Wrapper" is able to detect crashes, freezes, out of memory and 
other exception events, then automatically react by restarting Apache Karaf 
with a minimum of delay.
+It guarantees the maximum possible uptime of Apache Karaf.
+
+====== Supported platforms
+
+* Windows 8, 7, 2008 R2, 2003, Vista (32 and 64 bits architecture)
+* Linux RedHat Enterprise Linux, Debian, CentOS, Fedora, Ubuntu (32 and 64 
bits architecture)
+* FreeBSD 9.x, 8.x
+* AIX 5.x, 6.x, 7.x (Power architecture)
+* Solaris 8, 9, 10 (x86/Sparc, 32 and 64 bits architecture)
+* HP-UX 10.x, 11.x (32 and 64 bits architecture)
+* SGI Irix
+* MacOS X
+
+====== Installation
+
+Apache Karaf Service Wrapper is an optional feature. You have to install the 
"Service Wrapper" installer first.
+
+In the console:
+
+----
+karaf@root()> feature:install service-wrapper
+----
+
+Now, you have the `wrapper:install` command, to "register" Apache Karaf as 
service/daemon on your system:
+
+----
+karaf@root()> wrapper:install --help
+DESCRIPTION
+        wrapper:install
+
+        Install the container as a system service in the OS.
+
+SYNTAX
+        wrapper:install [options]
+
+OPTIONS
+        -d, --display
+                The display name of the service.
+                (defaults to karaf)
+        --help
+                Display this help message
+        -s, --start-type
+                Mode in which the service is installed. AUTO_START or 
DEMAND_START (Default: AUTO_START)
+                (defaults to AUTO_START)
+        -n, --name
+                The service name that will be used when installing the 
service. (Default: karaf)
+                (defaults to karaf)
+        -D, --description
+                The description of the service.
+                (defaults to )
+----
+
+The `wrapper:install` command detects the running Operating Service and 
provide the service/daemon ready to be integrated in your system.
+
+For instance, on a Ubuntu/Debian Linux system:
+
+----
+karaf@root()> wrapper:install
+Creating file: /opt/apache-karaf-4.0.0/bin/karaf-wrapper
+Creating file: /opt/apache-karaf-4.0.0/bin/karaf-service
+Creating file: /opt/apache-karaf-4.0.0/etc/karaf-wrapper.conf
+Creating missing directory: /opt/apache-karaf-4.0.0/lib/wrapper
+Creating file: /opt/apache-karaf-4.0.0/lib/wrapper/libwrapper.so
+Creating file: /opt/apache-karaf-4.0.0/lib/wrapper/karaf-wrapper.jar
+Creating file: /opt/apache-karaf-4.0.0/lib/wrapper/karaf-wrapper-main.jar
+
+Setup complete.  You may wish to tweak the JVM properties in the wrapper 
configuration file:
+        /opt/apache-karaf-4.0.0/etc/karaf-wrapper.conf
+before installing and starting the service.
+
+
+Ubuntu/Debian Linux system detected:
+  To install the service:
+    $ ln -s /opt/apache-karaf-4.0.0/bin/karaf-service /etc/init.d/
+
+  To start the service when the machine is rebooted:
+    $ update-rc.d karaf-service defaults
+
+  To disable starting the service when the machine is rebooted:
+    $ update-rc.d -f karaf-service remove
+
+  To start the service:
+    $ /etc/init.d/karaf-service start
+
+  To stop the service:
+    $ /etc/init.d/karaf-service stop
+
+  To uninstall the service :
+    $ rm /etc/init.d/karaf-service
+
+----
+
+[NOTE]
+====
+You can install the wrapper without starting Karaf using bin/shell 
wrapper:install command.
+====
+
+You can note that `wrapper:install` command detected the running operating 
system ("Ubuntu/Debian Linux system detected").
+
+You have a complete explanation and list of system commands to perform to 
integrate Apache Karaf in your systemV:
+
+----
+ln -s /opt/apache-karaf-4.0.0/bin/karaf-service /etc/init.d/
+update-rc.d karaf-service defaults
+----
+
+Karaf also supports systemd service, so you can use systemctl instead of 
SystemV based service:
+
+----
+systemctl enable /opt/apache-karaf-4.0.2/bin/karaf.service
+----
+
+This will enable Karaf at system boot.
+
+===== Uninstall
+
+The `wrapper:install` provides the system commands to perform to uninstall the 
service/daemon).
+
+For instance, on Ubuntu/Debian, to uninstall the Apache Karaf service, you 
have to remove the `karaf-service` script from the runlevel scripts:
+
+----
+rm /etc/init.d/karaf-service
+----
+
+If you preferred the systemd service instead of systemV:
+
+----
+systemctl disable karaf
+----
+
+You can remove the "Wrapper Service" installer after that:
+
+----
+karaf@root()> feature:uninstall service-wrapper
+----
+
+===== Note for MacOS users
+
+On MacOS you can install the service for an user or for the system.
+
+If you want to add `bin/org.apache.karaf.KARAF` as user service move this file 
into `~/Library/LaunchAgents/`:
+
+----
+mv bin/org.apache.karaf.KARAF.plist ~/Library/LaunchAgents/
+----
+
+If you want to add org.apache.karaf.KARAF as system service move this into 
/Library/LaunchDaemons:
+
+----
+sudo mv bin/org.apache.karaf.KARAF.plist /Library/LaunchDaemons/
+----
+
+Change owner and rights:
+
+----
+sudo chown root:wheel /Library/LaunchDaemons/org.apache.karaf.KARAF.plist
+sudo chmod u=rw,g=r,o=r /Library/LaunchDaemons/org.apache.karaf.KARAF.plist
+----
+
+You can test your service:
+
+----
+launchctl load ~/Library/LaunchAgents/org.apache.karaf.KARAF.plist
+launchctl start org.apache.karaf.KARAF
+launchctl stop org.apache.karaf.KARAF
+----
+
+Finally, after restart your session or system you can use launchctl command to 
start and stop your service.
+
+If you want to remove the service call:
+
+----
+launchctl remove org.apache.karaf.KARAF
+----
+
+===== Configuration
+
+When using scripts in the Apache Karaf `bin` folder, you can using 
`bin/setenv` Unix script (`bin\setenv.bat` on Windows) as described in the 
[Start, stop, restart, connect|start-stop] section of the documentation.
+
+[NOTE]
+====
+The `bin/setenv` Unix script (`bin\setenv.bat` on Windows) is not used by the 
Apache Karaf Service Wrapper.
+====
+
+To configure Apache Karaf started by the Service Wrapper, you have to tune the 
`etc/karaf-wrapper.conf` file. If you provided the `name` option to the 
`wrapper:install` command, the file is `etc/karaf-yourname.conf`.
+
+In this file, you can configure the different environment variables used by 
Apache Karaf. The Service Wrapper installer automatically populate these 
variables for you during the installation (using `wrapper:install` command).
+For instance:
+
+* `set.default.JAVA_HOME` is the `JAVA_HOME` used to start Apache Karaf 
(populated during Service Wrapper installation).
+* `set.default.KARAF_HOME` is the location of your Apache Karaf installation 
(populated during Service Wrapper installation).
+* `set.default.KARAF_BASE` is the location of your Apache Karaf installation 
(populated during Service Wrapper installation).
+* `set.default.KARAF_DATA` is the location of the Apache Karaf data folder 
(populated during Service Wrapper installation).
+* `set.default.KARAF_ETC` is the location of the Apache Karaf etc folder 
(populated during Service Wrapper installation).
+* `wrapper.java.additional` is used to pass additional arguments to the Java 
command, indexed by the argument number. The next index to use is 11.
+* `wrapper.java.initmemory` is the initial JVM memory size (the `-Xms`). It's 
not set by default (JVM default).
+* `wrapper.java.maxmemory` is the maximum JVM memory size (the `-Xmx`). It's 
set to 512M by default.
+* `wrapper.logfile` is the location of the Service Wrapper log file. It's set 
to `%KARAF_DATA%/log/wrapper.log` by default.
+* `wrapper.logfile.loglevel` is the Service Wrapper log level. It's set to 
`INFO` by default.
+* `wrapper.logfile.maxsize` is the Service Wrapper log file maximum size 
(before rotation). It's set to `10m` (10MB) by default.
+* `wrapper.logfile.maxfiles` is the number of Service Wrapper log files 
created (and rotated). It's set to `5` by default.
+* `wrapper.syslog.loglevel` is the integration with Unix syslog daemon. By 
default, it's set to `none` meaning disabled.
+* `wrapper.ntservice.name` is Windows service specific and defines the Windows 
service name. It's set to the `name` option of the `wrapper:install` command, 
or `karaf` by default.
+* `wrapper.ntservice.displayname` is Windows service specific and defines the 
Windows service display name. It's set to the `display` option of the 
`wrapper:install` command, or `karaf` by default.
+* `wrapper.ntservice.description` is Windows service specific and defines the 
Windows service description. It's set to the `description` option of the 
`wrapper:install` command, or empty by default.
+* `wrapper.ntservice.starttype` is Windows service specific and defines if the 
Windows service is started automatically with the service, or just on demand. 
It's set to `AUTO_START` by default, and could be switch to `DEMAND_START`.
+
+This is a example of generated `etc/karaf-wrapper.conf` file:
+
+----
+# ------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ------------------------------------------------------------------------
+
+#********************************************************************
+# Wrapper Properties
+#********************************************************************
+set.default.JAVA_HOME=/opt/jdk/1.7.0_21
+set.default.KARAF_HOME=/opt/apache-karaf-4.0.0
+set.default.KARAF_BASE=/opt/apache-karaf-4.0.0
+set.default.KARAF_DATA=/opt/apache-karaf-4.0.0/data
+set.default.KARAF_ETC=/opt/apache-karaf-4.0.0/etc
+
+# Java Application
+wrapper.working.dir=%KARAF_BASE%
+wrapper.java.command=%JAVA_HOME%/bin/java
+wrapper.java.mainclass=org.apache.karaf.wrapper.internal.Main
+wrapper.java.classpath.1=%KARAF_HOME%/lib/karaf-wrapper.jar
+wrapper.java.classpath.2=%KARAF_HOME%/lib/karaf.jar
+wrapper.java.classpath.3=%KARAF_HOME%/lib/karaf-jaas-boot.jar
+wrapper.java.classpath.4=%KARAF_HOME%/lib/karaf-wrapper-main.jar
+wrapper.java.classpath.5=%KARAF_HOME%/lib/karaf-org.osgi.core.jar
+wrapper.java.library.path.1=%KARAF_HOME%/lib/
+
+# Application Parameters.  Add parameters as needed starting from 1
+#wrapper.app.parameter.1=
+
+# JVM Parameters
+# note that n is the parameter number starting from 1.
+wrapper.java.additional.1=-Dkaraf.home=%KARAF_HOME%
+wrapper.java.additional.2=-Dkaraf.base=%KARAF_BASE%
+wrapper.java.additional.3=-Dkaraf.data=%KARAF_DATA%
+wrapper.java.additional.4=-Dkaraf.etc=%KARAF_ETC%
+wrapper.java.additional.5=-Dcom.sun.management.jmxremote
+wrapper.java.additional.6=-Dkaraf.startLocalConsole=false
+wrapper.java.additional.7=-Dkaraf.startRemoteShell=true
+wrapper.java.additional.8=-Djava.endorsed.dirs=%JAVA_HOME%/jre/lib/endorsed:%JAVA_HOME%/lib/endorsed:%KARAF_HOME%/lib/endorsed
+wrapper.java.additional.9=-Djava.ext.dirs=%JAVA_HOME%/jre/lib/ext:%JAVA_HOME%/lib/ext:%KARAF_HOME%/lib/ext
+
+# Uncomment to enable jmx
+#wrapper.java.additional.n=-Dcom.sun.management.jmxremote.port=1616
+#wrapper.java.additional.n=-Dcom.sun.management.jmxremote.authenticate=false
+#wrapper.java.additional.n=-Dcom.sun.management.jmxremote.ssl=false
+
+# Uncomment to enable YourKit profiling
+#wrapper.java.additional.n=-Xrunyjpagent
+
+# Uncomment to enable remote debugging
+#wrapper.java.additional.n=-Xdebug -Xnoagent -Djava.compiler=NONE
+#wrapper.java.additional.n=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
+
+# Initial Java Heap Size (in MB)
+#wrapper.java.initmemory=3
+
+# Maximum Java Heap Size (in MB)
+wrapper.java.maxmemory=512
+
+
+#********************************************************************
+# Wrapper Logging Properties
+#********************************************************************
+# 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=%KARAF_DATA%/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.  May abbreviate with the 'k' (kb) or
+#  'm' (mb) suffix.  For example: 10m = 10 megabytes.
+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=5
+
+# Log Level for sys/event log output.  (See docs for log levels)
+wrapper.syslog.loglevel=NONE
+
+#********************************************************************
+# Wrapper Windows Properties
+#********************************************************************
+# Title to use when running as a console
+wrapper.console.title=karaf
+
+#********************************************************************
+# 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.ntservice.name=karaf
+
+# Display name of the service
+wrapper.ntservice.displayname=karaf
+
+# Description of the service
+wrapper.ntservice.description=
+
+# Service dependencies.  Add dependencies as needed starting from 1
+wrapper.ntservice.dependency.1=
+
+# Mode in which the service is installed.  AUTO_START or DEMAND_START
+wrapper.ntservice.starttype=AUTO_START
+
+# Allow the service to interact with the desktop.
+wrapper.ntservice.interactive=false
+----
+
+===== Service Script Templates
+
+By using the "Service Script Templates", you can run Apache Karaf with the 
help of operating system specific init scripts.
+
+[NOTE]
+====
+As opposite of Service Wrapper, the templates targeting Unix system do not 
rely on a 3th party binaries
+====
+
+You can find these templates under the bin/contrib directory.
+
+{nbsp} +
+
+====== Unix
+
+The karaf-service.sh utility helps you to customize the templates.
+This utility will automatically identify the operating system and the default 
init system and generates ready to use init scripts.
+
+[NOTE]
+====
+You may still need to customize the generated scripts to adapt them to your 
environment.
+====
+
+The karaf-service.sh can be customized by define an environment variable or by 
passing command line options:
+
+,===
+Command line option, Environment variable, Description
+-k, KARAF_SERVICE_PATH       , Karaf installation path (mandatory)
+-d, KARAF_SERVICE_DATA       , Karaf data path (default to 
${KARAF_SERVICE_PATH}/data)
+-c, KARAF_SERVICE_CONF       , Karaf configuration file (default to 
${KARAF_SERVICE_PATH/etc/${KARAF_SERVICE_NAME}.conf
+-t, KARAF_SERVICE_ETC        , Karaf etc path (default to 
${KARAF_SERVICE_PATH/etc}
+-p, KARAF_SERVICE_PIDFILE    , Karaf pid path (default to 
${KARAF_SERVICE_DATA}/${KARAF_SERVICE_NAME}.pid)
+-n, KARAF_SERVICE_NAME       , Karaf service name (default karaf)
+-e, KARAF_ENV                , Karaf environment variable (can be repeated)
+-u, KARAF_SERVICE_USER       , Karaf user
+-g, KARAF_SERVICE_GROUP      , Karaf group (default ${KARAF_SERVICE_USER)
+-l, KARAF_SERVICE_LOG        , Karaf console log (default to 
${KARAF_SERVICE_DATA}/log/${KARAF_SERVICE_NAME}-console.log)
+-f, KARAF_SERVICE_TEMPLATE   , Template file to use
+-x, KARAF_SERVICE_EXECUTABLE , Karaf executable name (defaul karaf, should 
support daemon and stop commands)
+,===
+
+{nbsp} +
+
+====== Systemd
+
+When karaf-service.sh detect Systemd, it generates two files:
+
+- a systemd unit file to manage the root Apache Karaf container
+- a systemd environment file with variables used by the root Apache Karaf 
container
+- a systemd template unit file to manage Apache Karaf child containers
+
+.Example
+....
+$ ./karaf-service.sh -k /opt/karaf-4 -n karaf-4
+Writing service file "/opt/karaf-4/bin/contrib/karaf-4.service"
+Writing service configuration file ""/opt/karaf-4/etc/karaf-4.conf"
+Writing service file "/opt/karaf-4/bin/contrib/karaf-4@.service"
+
+$ cp /opt/karaf-4/bin/contrib/karaf-4.service /etc/systemd/system
+$ cp /opt/karaf-4/bin/contrib/karaf-4@.service /etc/systemd/system
+
+$ systemctl enable karaf-4.service
+....
+
+{nbsp} +
+
+====== SysV
+
+When karaf-service.sh detect a SysV system, it generates two files:
+
+- an init script to manage the root Apache Karaf container
+- an environment file with variables used by the root Apache Karaf container
+
+.Example
+....
+$ ./karaf-service.sh -k /opt/karaf-4 -n karaf-4
+Writing service file "/opt/karaf-4/bin/contrib/karaf-4"
+Writing service configuration file "/opt/karaf-4/etc/karaf-4.conf"
+
+$ ln -s /opt/karaf-4/bin/contrib/karaf-4 /etc/init.d/
+$ chkconfig karaf-4 on
+....
+
+[NOTE]
+====
+To enable service startup upon boot, please consult your operating system init 
guide
+====
+
+{nbsp} +
+
+====== Solaris SMF
+
+When karaf-service.sh detect a Solaris system, it generates a single file:
+
+.Example
+....
+$ ./karaf-service.sh -k /opt/karaf-4 -n karaf-4 -u lburgazz -g lburgazz
+Writing service file "/opt/karaf-4/bin/contrib/karaf-4.xml"
+
+$ svccfg validate /opt/karaf-4/bin/contrib/karaf-4.xml
+$ svccfg import /opt/karaf-4/bin/contrib/karaf-4.xml
+....
+
+[NOTE]
+====
+The generated SMF descriptor is defined as transient so the start method is 
executed only once
+====
+
+{nbsp} +
+
+====== Windows
+
+Installation of Apache Karaf as windows service is supported through 
https://github.com/kohsuke/winsw[winsw].
+
+Steps:
+
+- Rename karaf-service-win.exe to the service name i.e karaf-4.exe
+- Rename karaf-service-win.xml to match the service name i.e. karaf-4.xml
+- Customize the service descriptor to fit your needs
+- Use the service executable to install/star/stop the service
+
+.Example
+....
+C:\opt\apache-karaf-4\bin\contrib> karaf-4.exe install
+C:\opt\apache-karaf-4\bin\contrib> karaf-4.exe start
+....

http://git-wip-us.apache.org/repos/asf/karaf/blob/5b8806d5/manual/src/main/asciidoc/user-guide/wrapper.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/user-guide/wrapper.adoc 
b/manual/src/main/asciidoc/user-guide/wrapper.adoc
deleted file mode 100644
index 5ab8cf9..0000000
--- a/manual/src/main/asciidoc/user-guide/wrapper.adoc
+++ /dev/null
@@ -1,409 +0,0 @@
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-=== Integration in the operating system: the Service Wrapper
-
-In the previous chapter, we saw the different scripts and commands to start, 
stop, restart Apache Karaf.
-
-Instead of using these commands and scripts, you can integrate Apache Karaf 
directly in your operating system service control.
-
-Apache Karaf provides the "Service Wrapper". The service wrapper allows you to 
directly integrate Apache Karaf:
-
-* like a native Windows Service
-* like a Unix daemon process
-
-The "Service Wrapper" correctly handles "user's log outs" under Windows, 
service dependencies, and the ability to run services which interact with the 
desktop.
-
-It also includes advanced fault detection software which monitors an 
application.
-The "Service Wrapper" is able to detect crashes, freezes, out of memory and 
other exception events, then automatically react by restarting Apache Karaf 
with a minimum of delay.
-It guarantees the maximum possible uptime of Apache Karaf.
-
-==== Supported platforms
-
-* Windows 8, 7, 2008 R2, 2003, Vista (32 and 64 bits architecture)
-* Linux RedHat Enterprise Linux, Debian, CentOS, Fedora, Ubuntu (32 and 64 
bits architecture)
-* FreeBSD 9.x, 8.x
-* AIX 5.x, 6.x, 7.x (Power architecture)
-* Solaris 8, 9, 10 (x86/Sparc, 32 and 64 bits architecture)
-* HP-UX 10.x, 11.x (32 and 64 bits architecture)
-* SGI Irix
-* MacOS X
-
-==== Installation
-
-Apache Karaf Service Wrapper is an optional feature. You have to install the 
"Service Wrapper" installer first.
-
-In the console:
-
-----
-karaf@root()> feature:install service-wrapper
-----
-
-Now, you have the `wrapper:install` command, to "register" Apache Karaf as 
service/daemon on your system:
-
-----
-karaf@root()> wrapper:install --help
-DESCRIPTION
-        wrapper:install
-
-        Install the container as a system service in the OS.
-
-SYNTAX
-        wrapper:install [options]
-
-OPTIONS
-        -d, --display
-                The display name of the service.
-                (defaults to karaf)
-        --help
-                Display this help message
-        -s, --start-type
-                Mode in which the service is installed. AUTO_START or 
DEMAND_START (Default: AUTO_START)
-                (defaults to AUTO_START)
-        -n, --name
-                The service name that will be used when installing the 
service. (Default: karaf)
-                (defaults to karaf)
-        -D, --description
-                The description of the service.
-                (defaults to )
-----
-
-==== Installation
-
-Karaf Wrapper is an optional feature. To install it, simply type:
-
-----
-karaf@root> feature:install wrapper
-----
-
-Once installed, wrapper feature will provide `wrapper:install` new command in 
the Karaf shell:
-
-----
-karaf@root> wrapper:install --help
-DESCRIPTION
-        wrapper:install
-
-        Install the container as a system service in the OS.
-
-SYNTAX
-        wrapper:install [options]
-
-OPTIONS
-        -s, --start-type
-                Mode in which the service is installed. AUTO_START or 
DEMAND_START (Default: AUTO_START)
-                (defaults to AUTO_START)
-        --help
-                Display this help message
-        -n, --name
-                The service name that will be used when installing the 
service. (Default: karaf)
-                (defaults to karaf)
-        -d, --display
-                The display name of the service.
-        -D, --description
-                The description of the service.
-                (defaults to )
-----
-
-The `wrapper:install` command detects the running Operating Service and 
provide the service/daemon ready to be integrated in your system.
-
-For instance, on a Ubuntu/Debian Linux system:
-
-----
-karaf@root()> wrapper:install
-Creating file: /opt/apache-karaf-4.0.0/bin/karaf-wrapper
-Creating file: /opt/apache-karaf-4.0.0/bin/karaf-service
-Creating file: /opt/apache-karaf-4.0.0/etc/karaf-wrapper.conf
-Creating missing directory: /opt/apache-karaf-4.0.0/lib/wrapper
-Creating file: /opt/apache-karaf-4.0.0/lib/wrapper/libwrapper.so
-Creating file: /opt/apache-karaf-4.0.0/lib/wrapper/karaf-wrapper.jar
-Creating file: /opt/apache-karaf-4.0.0/lib/wrapper/karaf-wrapper-main.jar
-
-Setup complete.  You may wish to tweak the JVM properties in the wrapper 
configuration file:
-        /opt/apache-karaf-4.0.0/etc/karaf-wrapper.conf
-before installing and starting the service.
-
-
-Ubuntu/Debian Linux system detected:
-  To install the service:
-    $ ln -s /opt/apache-karaf-4.0.0/bin/karaf-service /etc/init.d/
-
-  To start the service when the machine is rebooted:
-    $ update-rc.d karaf-service defaults
-
-  To disable starting the service when the machine is rebooted:
-    $ update-rc.d -f karaf-service remove
-
-  To start the service:
-    $ /etc/init.d/karaf-service start
-
-  To stop the service:
-    $ /etc/init.d/karaf-service stop
-
-  To uninstall the service :
-    $ rm /etc/init.d/karaf-service
-
-----
-
-[NOTE]
-====
-You can install the wrapper without starting Karaf using bin/shell 
wrapper:install command.
-====
-
-You can note that `wrapper:install` command detected the running operating 
system ("Ubuntu/Debian Linux system detected").
-
-You have a complete explanation and list of system commands to perform to 
integrate Apache Karaf in your systemV:
-
-----
-ln -s /opt/apache-karaf-4.0.0/bin/karaf-service /etc/init.d/
-update-rc.d karaf-service defaults
-----
-
-Karaf also supports systemd service, so you can use systemctl instead of 
SystemV based service:
-
-----
-systemctl enable /opt/apache-karaf-4.0.2/bin/karaf.service
-----
-
-This will enable Karaf at system boot.
-
-==== Uninstall
-
-The `wrapper:install` provides the system commands to perform to uninstall the 
service/daemon).
-
-For instance, on Ubuntu/Debian, to uninstall the Apache Karaf service, you 
have to remove the `karaf-service` script from the runlevel scripts:
-
-----
-rm /etc/init.d/karaf-service
-----
-
-If you preferred the systemd service instead of systemV:
-
-----
-systemctl disable karaf
-----
-
-You can remove the "Wrapper Service" installer after that:
-
-----
-karaf@root()> feature:uninstall service-wrapper
-----
-
-==== Note for MacOS users
-
-On MacOS you can install the service for an user or for the system.
-
-If you want to add `bin/org.apache.karaf.KARAF` as user service move this file 
into `~/Library/LaunchAgents/`:
-
-----
-mv bin/org.apache.karaf.KARAF.plist ~/Library/LaunchAgents/
-----
-
-If you want to add org.apache.karaf.KARAF as system service move this into 
/Library/LaunchDaemons:
-
-----
-sudo mv bin/org.apache.karaf.KARAF.plist /Library/LaunchDaemons/
-----
-
-Change owner and rights:
-
-----
-sudo chown root:wheel /Library/LaunchDaemons/org.apache.karaf.KARAF.plist
-sudo chmod u=rw,g=r,o=r /Library/LaunchDaemons/org.apache.karaf.KARAF.plist
-----
-
-You can test your service:
-
-----
-launchctl load ~/Library/LaunchAgents/org.apache.karaf.KARAF.plist
-launchctl start org.apache.karaf.KARAF
-launchctl stop org.apache.karaf.KARAF
-----
-
-Finally, after restart your session or system you can use launchctl command to 
start and stop your service.
-
-If you want to remove the service call:
-
-----
-launchctl remove org.apache.karaf.KARAF
-----
-
-==== Configuration
-
-When using scripts in the Apache Karaf `bin` folder, you can using 
`bin/setenv` Unix script (`bin\setenv.bat` on Windows) as described in the 
[Start, stop, restart, connect|start-stop] section of the documentation.
-
-[NOTE]
-====
-The `bin/setenv` Unix script (`bin\setenv.bat` on Windows) is not used by the 
Apache Karaf Service Wrapper.
-====
-
-To configure Apache Karaf started by the Service Wrapper, you have to tune the 
`etc/karaf-wrapper.conf` file. If you provided the `name` option to the 
`wrapper:install` command, the file is `etc/karaf-yourname.conf`.
-
-In this file, you can configure the different environment variables used by 
Apache Karaf. The Service Wrapper installer automatically populate these 
variables for you during the installation (using `wrapper:install` command).
-For instance:
-
-* `set.default.JAVA_HOME` is the `JAVA_HOME` used to start Apache Karaf 
(populated during Service Wrapper installation).
-* `set.default.KARAF_HOME` is the location of your Apache Karaf installation 
(populated during Service Wrapper installation).
-* `set.default.KARAF_BASE` is the location of your Apache Karaf installation 
(populated during Service Wrapper installation).
-* `set.default.KARAF_DATA` is the location of the Apache Karaf data folder 
(populated during Service Wrapper installation).
-* `set.default.KARAF_ETC` is the location of the Apache Karaf etc folder 
(populated during Service Wrapper installation).
-* `wrapper.java.additional` is used to pass additional arguments to the Java 
command, indexed by the argument number. The next index to use is 11.
-* `wrapper.java.initmemory` is the initial JVM memory size (the `-Xms`). It's 
not set by default (JVM default).
-* `wrapper.java.maxmemory` is the maximum JVM memory size (the `-Xmx`). It's 
set to 512M by default.
-* `wrapper.logfile` is the location of the Service Wrapper log file. It's set 
to `%KARAF_DATA%/log/wrapper.log` by default.
-* `wrapper.logfile.loglevel` is the Service Wrapper log level. It's set to 
`INFO` by default.
-* `wrapper.logfile.maxsize` is the Service Wrapper log file maximum size 
(before rotation). It's set to `10m` (10MB) by default.
-* `wrapper.logfile.maxfiles` is the number of Service Wrapper log files 
created (and rotated). It's set to `5` by default.
-* `wrapper.syslog.loglevel` is the integration with Unix syslog daemon. By 
default, it's set to `none` meaning disabled.
-* `wrapper.ntservice.name` is Windows service specific and defines the Windows 
service name. It's set to the `name` option of the `wrapper:install` command, 
or `karaf` by default.
-* `wrapper.ntservice.displayname` is Windows service specific and defines the 
Windows service display name. It's set to the `display` option of the 
`wrapper:install` command, or `karaf` by default.
-* `wrapper.ntservice.description` is Windows service specific and defines the 
Windows service description. It's set to the `description` option of the 
`wrapper:install` command, or empty by default.
-* `wrapper.ntservice.starttype` is Windows service specific and defines if the 
Windows service is started automatically with the service, or just on demand. 
It's set to `AUTO_START` by default, and could be switch to `DEMAND_START`.
-
-This is a example of generated `etc/karaf-wrapper.conf` file:
-
-----
-# ------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ------------------------------------------------------------------------
-
-#********************************************************************
-# Wrapper Properties
-#********************************************************************
-set.default.JAVA_HOME=/opt/jdk/1.7.0_21
-set.default.KARAF_HOME=/opt/apache-karaf-4.0.0
-set.default.KARAF_BASE=/opt/apache-karaf-4.0.0
-set.default.KARAF_DATA=/opt/apache-karaf-4.0.0/data
-set.default.KARAF_ETC=/opt/apache-karaf-4.0.0/etc
-
-# Java Application
-wrapper.working.dir=%KARAF_BASE%
-wrapper.java.command=%JAVA_HOME%/bin/java
-wrapper.java.mainclass=org.apache.karaf.wrapper.internal.Main
-wrapper.java.classpath.1=%KARAF_HOME%/lib/karaf-wrapper.jar
-wrapper.java.classpath.2=%KARAF_HOME%/lib/karaf.jar
-wrapper.java.classpath.3=%KARAF_HOME%/lib/karaf-jaas-boot.jar
-wrapper.java.classpath.4=%KARAF_HOME%/lib/karaf-wrapper-main.jar
-wrapper.java.classpath.5=%KARAF_HOME%/lib/karaf-org.osgi.core.jar
-wrapper.java.library.path.1=%KARAF_HOME%/lib/
-
-# Application Parameters.  Add parameters as needed starting from 1
-#wrapper.app.parameter.1=
-
-# JVM Parameters
-# note that n is the parameter number starting from 1.
-wrapper.java.additional.1=-Dkaraf.home=%KARAF_HOME%
-wrapper.java.additional.2=-Dkaraf.base=%KARAF_BASE%
-wrapper.java.additional.3=-Dkaraf.data=%KARAF_DATA%
-wrapper.java.additional.4=-Dkaraf.etc=%KARAF_ETC%
-wrapper.java.additional.5=-Dcom.sun.management.jmxremote
-wrapper.java.additional.6=-Dkaraf.startLocalConsole=false
-wrapper.java.additional.7=-Dkaraf.startRemoteShell=true
-wrapper.java.additional.8=-Djava.endorsed.dirs=%JAVA_HOME%/jre/lib/endorsed:%JAVA_HOME%/lib/endorsed:%KARAF_HOME%/lib/endorsed
-wrapper.java.additional.9=-Djava.ext.dirs=%JAVA_HOME%/jre/lib/ext:%JAVA_HOME%/lib/ext:%KARAF_HOME%/lib/ext
-
-# Uncomment to enable jmx
-#wrapper.java.additional.n=-Dcom.sun.management.jmxremote.port=1616
-#wrapper.java.additional.n=-Dcom.sun.management.jmxremote.authenticate=false
-#wrapper.java.additional.n=-Dcom.sun.management.jmxremote.ssl=false
-
-# Uncomment to enable YourKit profiling
-#wrapper.java.additional.n=-Xrunyjpagent
-
-# Uncomment to enable remote debugging
-#wrapper.java.additional.n=-Xdebug -Xnoagent -Djava.compiler=NONE
-#wrapper.java.additional.n=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
-
-# Initial Java Heap Size (in MB)
-#wrapper.java.initmemory=3
-
-# Maximum Java Heap Size (in MB)
-wrapper.java.maxmemory=512
-
-
-#********************************************************************
-# Wrapper Logging Properties
-#********************************************************************
-# 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=%KARAF_DATA%/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.  May abbreviate with the 'k' (kb) or
-#  'm' (mb) suffix.  For example: 10m = 10 megabytes.
-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=5
-
-# Log Level for sys/event log output.  (See docs for log levels)
-wrapper.syslog.loglevel=NONE
-
-#********************************************************************
-# Wrapper Windows Properties
-#********************************************************************
-# Title to use when running as a console
-wrapper.console.title=karaf
-
-#********************************************************************
-# 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.ntservice.name=karaf
-
-# Display name of the service
-wrapper.ntservice.displayname=karaf
-
-# Description of the service
-wrapper.ntservice.description=
-
-# Service dependencies.  Add dependencies as needed starting from 1
-wrapper.ntservice.dependency.1=
-
-# Mode in which the service is installed.  AUTO_START or DEMAND_START
-wrapper.ntservice.starttype=AUTO_START
-
-# Allow the service to interact with the desktop.
-wrapper.ntservice.interactive=false
-----

Reply via email to