Carte as a Windows Service

There are some use cases to run Carte as a Windows Service:

  • When Carte instances are running using a command window, anyone by mistake could close the instance and Carte will go down.
  • The Carte.bat command window is tied to the user session that called the batch file and needs to be kept logged in.
  • With a Windows Service you can start the Carte service at machine startup and also configure it to restart after a crash.

After you completed the below instructions, you are able to get Carte running as a Windows service like this:

Installation Instructions

  1. Download YAJSW (Yet Another Java Service Wrapper) from Sourceforge: http://sourceforge.net/projects/yajsw/files/ (these instructions were written and tested against YAJSW version 12.16)
  2. Unzip the file into a suitable folder, e.g. C:\Pentaho\CarteService.
    Note: This should not be created below any other Pentaho Kettle folder since it is independent of the Pentaho Kettle Version and makes it easy to upgrade to future Kettle versions (see also chapter "Upgrade Instructions").
  3. When you unzipped YAJSW, you have e.g. a folder C:\Pentaho\CarteService\yajsw-stable-12.16. We recommend to rename this folder to C:\Pentaho\CarteService\default. The reason for this is the possibility of having multiple configurations on one machine, see chapter "Multiple Instances of Carte on one Machine". Another reason is that you do not need to change any references to this folder in case you upgrade to a later YAJSW version.
    Note: We will reference the YAJSW directory in the following instructions as <CarteServiceFolder>.
  4. Download the prepared wrapper.conf configuration file (attachment to this Page).
  5. Copy the downloaded wrapper.conf to <CarteServiceFolder>\conf\wrapper.conf (replace the existing one).
  6. Edit the wrapper.conf with a text editor and change the following entries manually (you can search for your convenience for the markers ###InstallerOrModify### within the file):

Parameter

Sample

Description / Notes

wrapper.working.dir

C:\\\\pentaho\\\\design-tools\\\\data-integration\\\\

The working directory of Carte. Please mind to change back slashes to forward slashes or double back slashes in the file path!
Note: If you defined OS environment variables you may access these directly within the configuration and use for this parameter. Windows environment variables are converted to lower case. Therefore even if you use e.g. PATH on your computer you have to
call ${path}  in the configuration file.

wrapper.app.account


The user account the Carte service will run. When nothing is given here, it starts as the Local System account. Please check with your system administrator about the right user settings. Please mind to remove the leading '#' in case you enter a property here.

wrapper.app.password


Password for the given account. Please mind to remove the leading '#' in case you enter a property here.

wrapper.java.app.jar

launcher\\\\launcher.jar

You need to replace the version of this jar file.

wrapper.java.command

${PENTAHO_JAVA_HOME}\\\\bin\\\\java.exe

The Path to your java.exe. Please mind to change back slashes to forward slashes or double back slashes in the file path!
Note: When you used the installer, a PENTAHO_JAVA_HOME system environment variable has been set. This variable can be used in this context but needs to be given in lower case.

wrapper.app.parameter.3

127.0.0.1

The Carte listening IP Address (or dynamic configuration file), see Carte User Documentation for more details.
Note: In the case of a Dynamic cluster configuration, please replace wrapper.app.parameter.3 with the location of the cluster configuration file (e.g. wrapper.app.parameter.3 = C:
Pentaho
Kettle
slave_dyn_8083.xml) and remove wrapper.app.parameter.4.

wrapper.app.parameter.4

8081

The Carte listening port, see Carte User Documentation for more details.

wrapper.java.additional.1

-Dorg.mortbay.util.URI.charset=UTF-8

URL Encoding.

wrapper.java.additional.2-Xmx4gThis may vary depending on your needed memory.
wrapper.java.additional.3-Xms1gThis may vary depending on your needed memory.
wrapper.java.additional.4-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2Support for HTTPs TLS
wrapper.java.additional.5-DKETTLE_HOME=/some/pathThis PATH is used to read the kettle home. If not defined, it will user the %USER_HOME% and will create or use existing .kettle folder. This folder is where kettle.properties file, shared.xml and other settings files are used by PDI.
wrapper.java.additional.6-XX:+AggressiveOptsUsed to have a better GC memory management. However, we are currently recommending the use of -XX:+UseG1GC
wrapper.java.additional.7-XX:+ExitOnOutOfMemoryErrorIn case of an Out Of Memory, we recommend the CARTE to exit. If used in combination with Windows Services auto-restart in case of failure, will make the service to be back in few minutes.

Test your Configuration

  1. Execute <CarteServiceFolder>\bat\runConsole.bat
  2. When everything is configured correct, Carte starts up as usual.
  3. Check if you can login to Carte from your Browser on your local machine, e.g. http://localhost:8081
  4. When the test went successfully, you can stop Carte with selecting "Stop" in the new yajsw system tray or with Ctrl-C in the console window.

Install Carte as a Service

  1. Execute <CarteServiceFolder>\bat\installService.bat (Attention: You should run this as Administrator depending on your operating system and security restrictions. Otherwise some unusual behavior could arise later on, e.g. no log files are produced.)
  2. Go the your Windows Services and you should see the installed service (Pentaho DI Carte).
  3. You are able to change all settings (e.g. Startup type, Log on credentials)
  4. Start you service as outlined in the chapter "Start and Stop the Carte Service" and check your installation.

Start and Stop the Carte Service

Additional to the user interface in the Windows Services, it is possible to start and stop the service by the commands startService.bat or stopServce.bat (in the <CarteServiceFolder>\bat folder)
or by the general Windows Service start and stop commands, e.g.
 net start pentaho_carte
 net stop pentaho_carte
Notes: You need Administrator privileges, eventually replace pentaho_carte by the setting in parameter wrapper.ntservice.name when this service name was changed

Logging and Monitoring

Logging goes by default to the file <CarteServiceFolder>\log\wrapper.log.
You may change this setting by the parameter wrapper.logfile to a different location/file.
Note: Please remember to clean up this log file depending on your needs.

It is also possible to get the console output via the YAJSW system tray. That is for displaying a status icon and menu on the desktop. To start the system tray, you need to run <CarteServiceFolder>\bat\systemTrayIconW.bat
You may create a link to start the try icon from the startup folder, so it gets started automatically on user logon by defining a link to the systemTrayIconW.bat

Further information can be found in the chapter "System Tray Support" of the YAJSW documentation (http://yajsw.sourceforge.net/#mozTocId451759)

Uninstall

If you want to uninstall the service, you can run <CarteServiceFolder>\bat\uninstallService.bat (with Administrator privileges)
or the Windows own command: sc delete pentaho_carte
Notes: You need Administrator privileges, eventually replace pentaho_carte by the setting in parameter wrapper.ntservice.name when this was changed

In case you get the error The specified service has been marked for deletion, it normally helps to simply restart Windows.

Multiple Instances of Carte on one Machine

If you need more Carte instances on one machine, you should have separate folders of the <CarteServiceDirectory> and change the following properties in each wrapper.conf file to be unique (samples given):
wrapper.ntservice.name=pentaho_carte_8081
wrapper.ntservice.displayname=Pentaho DI Carte Port 8081
wrapper.app.parameter.4=8081

Additionally, you need to set

wrapper.tray = false

Otherwise the startup throws an exception of multiple bindings of IP addresses. (This may be solved with a different configuration, but was not further investigated at the time of this writing.)

You may consider changing the CPU affinity of the process for each instance with the option wrapper.affinity

Advanced Options and Trouble Shooting

We gave minimal and easy install instructions here to simplify the initial setup. If you need more background, want to tweak different options, optimize settings, run into issues with YAJSW, please refer to the extensive YAJSW documentation over here: http://yajsw.sourceforge.net/ especiallyhttp://yajsw.sourceforge.net/YAJSW%20Configuration%20Parameters.html

Pentaho Kettle Upgrade Instructions

When you upgrade to a later Pentaho Kettle release, please make sure to check or change the reference wrapper.working.dir to your Kettle folder within the wrapper.conf file <CarteServiceDirectory>/conf and eventually the wrapper.java.command.

YAJSW Upgrade Instructions

When you upgrade to a later YAJSW release, please make sure to safe and replace the wrapper.conf file located in <CarteServiceDirectory>/conf and eventually the log files within <CarteServiceDirectory>/log.