---
title: Examples
layout: website-normal
toc: ../guide_toc.json
categories: [use, guide, defining-applications]
---

** TODO: this examples page is deprecated;
code is out-of-date, and better examples are described on the web site.
need to figure out if this page should be kept at all
(indeed if the "guide" is even still relevant)**


### Integrating with a Maven project

If you have a Maven-based project, integrate this XML fragment with your pom.xml:

<!-- TODO this should import from the downloads page -->

{% highlight xml %}
<dependencies>
	<dependency>
		<groupId>io.brooklyn</groupId>
		<artifactId>brooklyn-all</artifactId>
		<version>1.2.0-SNAPSHOT</version>  <!-- BROOKLYN_VERSION -->
	</dependency>
</dependencies>
 
<repository>
    <id>cloudsoft-releases</id>
    <url>http://developers.cloudsoftcorp.com/download/maven2/</url>
</repository>
<repository>
    <id>libs-snapshot-local</id>
    <url>http://ccweb.cloudsoftcorp.com/maven/libs-snapshot-local/</url>
    <snapshots>
        <enabled>true</enabled>
        <updatePolicy>never</updatePolicy>
        <checksumPolicy>fail</checksumPolicy>
    </snapshots>
</repository>
{% endhighlight %}


### Starting a Tomcat Server

The code below starts a Tomcat server on the local machine.

The ``main`` method defines the application, and passes it to the ``BrooklynLauncher`` to be managed. 
It is then started in a localhost location (other locations are shown in the next section).

The Tomcat's configuration indicates that the given WAR should be deployed to the Tomcat server when it is started.

{% highlight java %}
{% read example_files/tomcat_simple.java %}
{% endhighlight %}

The ``wars`` config is also supported (with config keys ``ROOT_WAR`` and ``NAMED_WARS`` the long-hand syntax);
they accept EARs and other common archives, and can be described as files or as URLs (as Strings), 
with URLs supporting an optional ``classpath://org/acme/resources/xxx.war`` syntax.


### Starting Tomcat in Amazon EC2

To start a tomcat node or cluster in Amazon EC2, the application is identical to that for localhost. 
The only difference is the location supplied.

The Brooklyn CLI can be used to launch the application in your choice of location, such as:

{% highlight bash %}
brooklyn launch --app TomcatServerApp --location localhost
brooklyn launch --app TomcatServerApp --location aws-ec2:eu-west-1
{% endhighlight %}

 
### Starting a Tomcat Cluster with Nginx

The code below starts a Tomcat cluster along with an Nginx instance, where each Tomcat server in the cluster is registered with the Nginx instance.

{% highlight java %}
{% read example_files/tomcat_nginx.java %}
{% endhighlight %}

This creates a cluster that of Tomcat servers, along with an Nginx instance. The ``NginxController`` instance
is notified whenever a member of the cluster joins or leaves; the entity is configured to look at the ``HTTP_PORT``
attribute of that instance so that the Nginx configuration can be updated with the ip:port of the cluster member.

<!---
TODO things may need tidying (paragraphs, and/or eliminating any extra setConfig calls, though looks like these have gone)
-->


Starting a Multi-location Tomcat Fabric
---------------------------------------

<!---
TODO this example should use several cloud providers, including Openshift, and use GeoDNS, 
and maybe a data store and/or messaging service; it is the last "most advanced" example
-->

<!---
FIXME Discuss above comment with Aled/Alex as it is contentious
-->

The ``ControlledDynamicWebAppCluster`` entity used above can also be used with a DynamicFabric to start
a web-cluster in each location.

{% highlight java %}
{% read example_files/tomcat_multi-location.java %}
{% endhighlight %}


Examples Source
---------------

Source code for (more up-to-date!) examples is available for download from GitHub. To retrieve the source, execute the following command:

    git clone git@github.com:apache/brooklyn-library.git
    cd brooklyn-library/examples

You can also [browse the code](https://github.com/apache/brooklyn-library/tree/examples) on the web.
