3. Installation

This document describes how to install and configure ServiceMix 3.x for both Unix and Windows' platforms.
Here you will find information about what are pre requisite software, where to download Geronimo from and how to customize the installation to use custom ports other than the defaults.

This article contains the following sections:

Pre-Installation Requirements

Hardware:

  • 31 MB of free disk space for the ServiceMix 3.0.x binary distribution.
  • 8 MB of free disk space for the ServiceMix 3.0.x source or developer's distributions respectively around 25 MB for SVN checkout. The Maven build requires roughly 250 MB disk space and for the dependencies Maven downloads during building further 200 MB are required. As a lot of small files are produced, the exact space demands depend greatly on your cluster utilisation ratio.

Operating Systems:

  • Windows: Windows XP SP2, Windows 2000.
  • Unix: Ubuntu Linux, Powerdog Linux, MacOS, AIX, HP-UX, Solaris, any Unix platform that supports Java.

Environment:

  • Java Developer Kit (JDK) 1.5.x or greater (http://java.sun.com/).
  • The JAVA_HOME environment variable must be set to the directory where the JDK is installed, e.g., c:\Program Files\jdk.1.5.0_06. To accomplish that, press Windows key and Break key together, switch to "Advanced" tab and click on "Environment Variables". Here, check for the variable and, if necessary, add it.
  • Apache Maven 2.0.4 (http://maven.apache.org/download.html).
JDK 1.4

While the core JBI container can be used with JDK 1.4 without any problems, the build system requires JDK 5 and some components are dependant on JDK 5 features.

Installation Procedure for Windows

This section of the Getting Started guide explains how to install binary and source distributions of ServiceMix on a Windows system.

Handy Hint

In case you have to install ServiceMix into a very deep path or a path containing illegal characters for Java paths, e.g. !, % etc., you may add a bat file to start -> startup that executes

subst S: "C:\your very % problematic path!\SM"

so your ServiceMix root directory is S: — which works for sure and is short to type.

Windows Binary Installation

This procedure explains how to download and install the binary distribution on a Windows system.

  1. From a browser, navigate to http://incubator.apache.org/servicemix/download.html.
  2. Click the "ServiceMix 3.0.x Release" link under the "Latest Releases" section. This brings up a new page.
  3. Under the "Download Here" section, select the desired distribution (you may have to scroll down to see the "Download Here" section).
    For a binary distribution, the filename will be similar to: apache-servicemix-3.0.x.zip.
  4. Extract the files from the ZIP file into a directory of your choice. Please remember the restrictions concerning illegal characters in Java paths, e.g. !, % etc.
  5. Proceed to the Starting ServiceMix section of this document.
  6. Following start-up, go to the Testing the Installation section of this document.

Windows Source Installation

This procedure explains how to download and install the source distribution on a Windows system. NOTE: ServiceMix can be run on a Java 1.4.x system, however, Java 5 is required to compile/build ServiceMix.

  1. From a browser, navigate to http://incubator.apache.org/servicemix/download.html
  2. Click the "ServiceMix 3.0.x Release" link under the "Latest Releases" section. This brings up another page.
  3. Under the "Download Here" section, select the desired distribution (if necessary, scroll down to see the "Download Here" section).
    For a source distribution, the filename will be similar to: apache-servicemix-3.0.x-src.zip.
  4. Extract ServiceMix from the ZIP file into a directory of your choice. Please remember the restrictions concerning illegal characters in Java paths, e.g. !, % etc.
  5. Build ServiceMix using Maven 2.0.4 or greater and Java 5.
    The recommended method of building ServiceMix is the following:
    cd [servicemix_install_dir]

    where [servicemix_install_dir] is the directory in which ServiceMix was installed.

    mvn -Dprofile=step1
    mvn -Dprofile=step2

    Both steps take around 10 to 15 minutes.

  6. Unzip the distribution using your favorite zip tool. The windows distribution is available at
    [servicemix_install_dir]\apache-servicemix\target\apache-servicemix-3.0-incubating.zip
  7. Proceed to the Starting ServiceMix section of this document.
  8. Following start-up, go to the Testing the Installation section of this document.

Warning: If you are building Servicemix 3.x under Windows using Cygwin there is a path name length limitation. If the length is exceeded you may see build errors. To fix this, move the ServiceMix source directory higher in the file system tree, e.g., /cygdrive/c/d/sm.

Windows Developers' Release

This procedure explains how to download and install the latest developers' snapshot. NOTE: ServiceMix can be run on a Java 1.4.x system, however, Java 5 is required to compile/build ServiceMix.

  1. From a browser, navigate to www.servicemix.org.
  2. Click the Download link in the navigation pane (the left pane).
  3. Click the "Current development SNAPSHOT release" link.
  4. Select the version of ServiceMix to download (if necessary, scroll down to see the ServiceMix snapshots).
  5. Extract the files from the ZIP file into a directory of your choice. Please remember the restrictions concerning illegal characters in Java paths, e.g. !, % etc.
  6. If a binary snapshot was downloaded proceed to the Starting ServiceMix section of this document.
    If a source snapshot was downloaded perform step 5 (building) and step 6 (unzipping) of the Windows Source Installation procedure and proceed to the Starting ServiceMix section of this document.
  7. Following start-up, proceed to the Testing the Installation section.

Installation Procedure For Unix

Unix Binary Installation

This procedure explains how to download and install the binary distribution on a Unix system.

  1. Download the ServiceMix gzip file to the Unix machine, either using a browser or using a tool, i.e., wget, scp, ftp, etc.
    If the Unix machine has a browser:

a. Navigate to www.servicemix.org.
b. Click the "Download" link in the navigation pane (the left pane).
c. Click the "ServiceMix 3.x Release" link under the "Latest Releases" section. This brings up a new page.
d. Under the "Download Here" section, select the desired distribution (if necessary,
scroll down to see the "Download Here" section). For a binary Unix distribution, the filename
will be similar to: apache-servicemix-x.x.x.tar.gz.

OR

If the Unix machine does NOT have a browser, tools such as wget, scp, or ftp can be used to download the ServiceMix distribution.
It is beyond the scope of this document to explain the use of those tools. For convenience an example is provided below using
a Windows machine (that has a browser) and a Unix machine with "wget" installed on it.
NOTE: There are several alternative ways to perform this type of installation.

a. Obtain the link to the ServiceMix distribution file. On the Windows machine with a browser, navigate to www.servicemix.org.
b. Click the "Download" link in the left navigation pane.
c. Click the "ServiceMix 3.x Release" link under the "Latest Releases" section. This brings up a new page.
d. Under the "Download Here" section, roll-over the desired distribution (if necessary, scroll
down to see the "Download Here" section). For a binary Unix distribution the filename will be
similar to: servicemix-x.x.x.tar.gz.
e. Right-click on the distribution name and "Copy Shortcut."
f. On the Unix machine, change to the directory in which ServiceMix will be installed, e.g., /usr/local.
f. Download the ServiceMix distribution to the Unix machine using the "wget" tool. For example, type "wget" followed by the saved shortcut:

wget http://people.apache.org/repo/m2-incubating-repository/org/apache/servicemix/apache-servicemix/3.0-incubating/apache-servicemix-3.0-incubating-src.tar.gz
  1. Extract the files from the gzip file into a directory of your choice. For example:
    gunzip apache-servicemix-x.x.x.tar.gz
    tar xvf apache-servicemix-x.x.x.tar

    Please remember the restrictions concerning illegal characters in Java paths, e.g. !, % etc.

  2. Proceed to the Starting ServiceMix section of this document.
  3. Following start-up, go to the Testing the Installation section.

Unix Source Installation

This procedure explains how to download and install the source distribution on a Unix system. This procedure assumes the Unix machine has a browser. Please see the previous Unix Binary Installation section for ideas on how to install ServiceMix without a browser. NOTE: ServiceMix can be run on a Java 1.4.x system, however, Java 5 is required to compile/build ServiceMix.

  1. From a browser, navigate to www.servicemix.org.
  2. Click the "Download" link in the navigation pane (the left pane).
  3. Click the "ServiceMix 3.x Release" link under the "Latest Releases" section. This brings up a new page.
  4. Under the "Download Here" section, select the desired distribution (if necessary, scroll down to see the "Download Here" section).
    For a source distribution, the filename will be similar to: servicemix-x.x-src.tar.gz.
  5. Extract the files from the ZIP file into a directory of your choice. For example:
    gunzip apache-servicemix.x.x-src.tar.gz
    tar xvf apache-servicemix.x.x-src.tar

    Please remember the restrictions concerning illegal characters in Java paths, e.g. !, % etc.

  6. Build ServiceMix using Maven 2.0.4 or greater and Java 5:
    The preferred method of building ServiceMix is the following:
    cd [servicemix_install_dir]
     where [servicemix_install_dir] is the directory in which ServiceMix was installed.
    mvn -Dprofile=step1
    mvn -Dprofile=step2

    Both steps take around 10 to 15 minutes.

  7. Uncompress the distribution that has just been created
    cd [servicemix_install_dir]/apache-servicemix/target
    gunzip apache-servicemix-3.0-incubating.tar.gz
    tar xvf apache-servicemix-3.0-incubating.tar
  8. Proceed to the Starting ServiceMix section of this document.
  9. Following start-up, go to the Testing the Installation section.

Unix Developers' Release

This procedure explains how to download and install the latest developers' snapshot. NOTE: ServiceMix can be run on a Java 1.4.x system, however, Java 5 is required to compile/build ServiceMix.

  1. From a browser, navigate to www.servicemix.org.
  2. Click the Download link in the navigation pane (the left pane).
  3. Click the "Current development SNAPSHOT release" link.
  4. Select the version of ServiceMix to download (you may have to scroll down to see the ServiceMix snapshots). The filename will be similar to: servicemix-x.x.x-tar.gz or servicemix-x.x.x-src.tar.gz.
  5. Extract the files from the gzip file into a directory of your choice. For example:
    For a binary developer's snapshot:
     gunzip apache-servicemix-x.x-x.tar.gz
     tar xvf apache-servicemix-x.x.x.tar
    
    For a source developer's snapshot:
     gunzip apache-servicemix-x.x.x-src.tar.gz
     tar xvf apache-servicemix-x.x.x-src.tar

    Please remember the restrictions concerning illegal characters in Java paths, e.g. !, % etc.

  6. For a binary snapshot, proceed to the Starting ServiceMix section of this document.
    If a source snapshot was downloaded perform steps 6 - 8 (building, uncompressing, starting) of the Unix Source Installation procedure.
  7. Proceed to the Testing the Installation section.

Starting ServiceMix

On Windows

From a console window, change to the installation directory and run ServiceMix. For the binary distribution, go to

cd [servicemix_install_dir]

and for the source distribution go to the target directory, for example:

cd [servicemix_install_dir]\apache-servicemix\target\apache-servicemix-3.0-incubating-SNAPSHOT

where servicemix_install_dir is the directory in which ServiceMix was installed, e.g., c:\Program Files\servicemix-3.x.

Then type:

bin\servicemix

Note: Working directories get created relative to the current directory. For the working directories to be created in the proper place, ServiceMix must be launched from its home/installation directory.

On Unix

From a command shell, change to the installation directory and run ServiceMix. For the binary distribution, go to

cd [servicemix_install_dir]

and for the source distribution go to the target directory, for example:

cd [servicemix_install_dir]/apache-servicemix/target/apache-servicemix-3.0-incubating

where servicemix_install_dir is the directory in which ServiceMix was installed, e.g., /usr/local/servicemix-3.x.

Then type:

bin/servicemix

OR

nohup bin/servicemix > /tmp/smlog  2>&1 &

Note: /tmp/smlog may be changed to another file name.

Note: Working directories get created relative to the current directory. For the working directories to be created in the proper place, ServiceMix must be launched from its home/installation directory.

Warning

Do NOT close the console or shell in which ServiceMix was started, as that will terminate ServiceMix (unless ServiceMix was started with nohup).

Troubleshooting for Unix

If the servicemix start-up script is not executable, change its permisssions. The servicemix script is located in the bin directory. For example:

chmod 755 bin/servicemix

Troubleshooting

Path name

In case you get a

Exception in thread "main" java.lang.IllegalArgumentException

you may have some illegal characters in the path, e.g. !, % etc.

Missing libraries

Starting ServiceMix with old examples, CIMERO-generated xml configuration files or custom code may cause errors due to missing libraries. Usually, the missing class is displayed at the very end of the output. Here, some examples are shown and explained.

Caused by: java.lang.NoClassDefFoundError: org/quartz/JobExecutionException
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:242)
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:160)
    at org.springframework.beans.factory.support.BeanDefinitionReaderUtils.createBeanDefinition(BeanDefinitionReaderUtils.java:95)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseBeanDefinitionElement(BeanDefinitionParserDelegate.java:452)
    ... 53 more

Obviously (bold typed text), a class inside the quartz package cannot be found. A quick search for "quartz" in the Maven repository reveals [user_home]\.m2\repository\quartz\quartz\1.5.2\quartz-1.5.2.jar (or newer version) which has to be copied to [ServiceMix_home]\lib\quartz-1.5.2.jar - the error shall be resolved now. Of course, adding the directory containing the jar to the classpath is another possibility.

Very similar is

...
Caused by: java.lang.ClassNotFoundException: org.apache.servicemix.components.file.FileWriter
...

indicating that the whole servicemix-common package cannot be found. In the Maven repository, servicemix-components-3.0-incubating.jar (or newer version) can be found and copied to ServiceMix' lib directory. Note: As this is a ServiceMix' sub-project, the jar is available at [ServiceMix_home]\components as well.

Slightly trickier is 

...
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Unrecognized xbean namespace mapping: http://servicemix.apache.org/eip/1.0
...

A short www search leads to Unrecognized xbean namespace mapping. With this information, one can infer that [user_home]\.m2\repository\org\apache\servicemix\servicemix-eip\3.0-incubating\servicemix-eip-3.0-incubating.jar (or newer version) has to be copied to [ServiceMix_home]\lib\servicemix-eip-3.0-incubating.jar so ServiceMix can find the classes.

Testing the Installation

If ServiceMix is up and running without problems, the Window's console window or the Unix command shell will display something similar to the following log line:

INFO - JBIContainer.init(421) | ServiceMix JBI Container ([http://servicemix.org/]) name: defaultJBI running version: 3.0-incubating

ServiceMix's default port is 1099. From another window run netstat and search for port 1099.

From a Windows console, type:

netstat -an | find "1099"

OR

From a Unix command shell, type:

netstat -an | grep 1099

Stopping ServiceMix

For both Windows and Unix installations, terminate ServiceMix by typing "CTRL-C" in the command shell or console in which it is running.

If ServiceMix was started in the background on Unix, the process can be killed, with the following:

ps -ef | grep servicemix
kill [PID]
 where [PID] is the process id of the servicemix process.

Configuring ServiceMix

After the installation, ServiceMix is running with a basic configuration, but no components. For details on configuring options, please see refer to the Configuration section.

top