Tomcat Integration
The following guide explains how to deploy ServiceMix on the Apache Tomcat application server.
Pre-Installation Requirements
The recommended software environment is:
- Java Developer Kit (JDK) 1.4.x or greater to run ServiceMix and 1.5.x or greater to build ServiceMix.
- The JAVA_HOME environment variable must be set to the directory where the JDK is installed, e.g.
c:\Program Files\Java\jdk1.5.xx
. - Maven 1.0.2 or greater (required when installing source or developers' releases).
- Apache Tomcat version 5.5
The following is the platform which was used to produce this document:
- Windows XP
- Tomcat 5.5
- Java 5
Deploying ServiceMix on Tomcat
Execute the following steps to deploy ServiceMix on Apache Tomcat. Note: this procedure will work on Unix platforms as well as the Windows platform, with the appropriate substitutions, such as using the backslash instead of the forward slash.
- Apache Tomcat must be downloaded and installed. For instructions please see the Tomcat web site.
- By default Tomcat uses port 8080. Please note if your installation has Tomcat on another port, such as port 80.
- Download and build the ServiceMix source code. Please see the Getting Started guide for instructions.
Note: ServiceMix must be BUILT as well as downloaded. - Create the WAR file:
where
cd [servicemix_install_dir]\tooling\servicemix-web maven war
servicemix_install_dir
is the directory in which ServiceMix was downloaded and installed. - To deploy the WAR file,
servicemix-web.war
, copy it to the Tomcatwebapps
directory. For example, on a Windows system:wherecd [servicemix_install_dir]\tooling\servicemix-web\target copy servicemix-web.war [tomcat_install_dir]\webapps
tomcat_install_dir
is the directory in which Tomcat was installed. - Stop and start Tomcat to deploy the ServiceMix WAR file.
- If there are errors indicating missing classes when Tomcat starts, perform the followng steps:
- Stop Tomcat.
- Install additional jar files in the deployed ServiceMix directory. The missing jar files are:
commons-collections-3.1.jar
andcommons-pool-1.2.jar
. These can be obtained by using a search engine and searching for them. Or they can found in your Maven repository, which is usually located inyour_home_dir\.maven\repository
. Specifically,your_home_dir\.maven\repository\commons-collections\jars
andyour_home_dir\.maven\repository\commons-pool\jars
.copy commons-collections-3.1.jar [tomcat_install_dir]\webapps\servicemix-web\WEB-INF\lib copy commons-pool-1.2.jar [tomcat_install_dir]\webapps\servicemix-web\WEB-INF\lib
- Start Tomcat.
The Tomcat console output should show ServiceMix starting:Note: The console output is also logged inINFO: Deploying web application archive servicemix-web.war Nov 1, 2005 11:03:54 AM org.springframework.web.context.ContextLoader initWebApplicationContext INFO: Root WebApplicationContext: initialization started Nov 1, 2005 11:03:54 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml] Nov 1, 2005 11:03:55 AM org.springframework.core.CollectionFactory <clinit> INFO: JDK 1.4+ collections available Nov 1, 2005 11:03:55 AM org.springframework.core.CollectionFactory <clinit> INFO: Commons Collections 3.x available Nov 1, 2005 11:03:55 AM org.springframework.context.support.AbstractRefreshableApplicationContext refreshBeanFactory INFO: Bean factory for application context [Root WebApplicationContext]: org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [jencks,broker,transactionManager,jmsFactory,jbi]; root of BeanFactory hierarchy Nov 1, 2005 11:03:55 AM org.springframework.context.support.AbstractApplicationContext refresh INFO: 5 beans defined in application context [Root WebApplicationContext] Nov 1, 2005 11:03:55 AM org.springframework.context.support.AbstractApplicationContext initMessageSource INFO: Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@1049d3] Nov 1, 2005 11:03:55 AM org.springframework.context.support.AbstractApplicationContext initApplicationEventMulticaster INFO: Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@14a7a12] Nov 1, 2005 11:03:55 AM org.springframework.ui.context.support.UiApplicationContextUtils initThemeSource INFO: No ThemeSource found for [Root WebApplicationContext]: using ResourceBundleThemeSource Nov 1, 2005 11:03:55 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons INFO: Pre-instantiating singletons in factory [org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [jencks,broker,transactionManager,jmsFactory,jbi]; root of BeanFactory hierarchy] Nov 1, 2005 11:03:55 AM org.springframework.beans.factory.support.AbstractBeanFactory getBean INFO: Creating shared instance of singleton bean 'jencks' Nov 1, 2005 11:03:56 AM org.springframework.beans.factory.support.AbstractBeanFactory getBean INFO: Creating shared instance of singleton bean 'broker' ...
tomcat_home_dir\logs\catalina.xxxx-xx-xx.log
.
Testing the ServiceMix Deployment on Tomcat
To ensure that ServiceMix is running on Tomcat do any of the following:
- Review the Tomcat console output or the Tomcat log files (see above) and look for servicemix-web starting without any errors.
- 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
- Run the ServiceMix JMX Console. To do this enter the following URL in a web browser: http://localhost:8080/servicemix-web. Optionally, look at the following in the console:
- Click on "Catalina".
- Click on "Unknown".
- Click on the "JMXServlet WebModule" to get monitoring information about the JMX Servlet itself:
- Run the example program:
- From a browser, enter the following URL: http://localhost:8080/servicemix-web/examples. Note: if Tomcat is using a different port, such as port 80, substitute the correct port number for 8080 in the URL.
- Click on the "perform a GET" link. If an HTTP 404 error occurs, go to the next step. If there is no error you will see:
- If there was an HTTP 404 error, the
index.html
file needs to be modified. Theindex.html
file is located in thetomcat_install_dir\webapps\servicemix-web\examples
directory. After editing the file, return to step 1.Change this line: <li><a href="/jbi/exampleUri?x=123&name=James&location=London">perform a GET</a> into the HTTP binding</li> to <li><a href="/servicemix-web/jbi/exampleUri?x=123&name=James&location=London">perform a GET</a> into the HTTP binding</li>
- Use the ServiceMix JMX Console to see monitoring information on the httpBinding example just run.
- From a browser, enter the following URL: http://localhost:8080/servicemix-web. Note: If Tomcat is not running on port 8080, substitute the correct port number for 8080.
- Click on "org.servicemix."
- Click on "org.servi
- From a browser, enter the following URL: http://localhost:8080/servicemix-web/examples. Note: if Tomcat is using a different port, such as port 80, substitute the correct port number for 8080 in the URL.