Documentation Home
Broadleaf Concepts Key Aspects & Configuration App Server Configuration Tomcat
This version of the framework is no longer supported. View the latest documentation.

Tomcat

This is extremely similar to the current configuration in Jetty. In site/pom.xml you will see the following plugin defined for Jetty:

<plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>
    <version>6.1.22</version>
    <configuration>
        <webAppSourceDirectory>${webappDirectory}</webAppSourceDirectory>
        <contextPath>/mycompany</contextPath>
        <stopPort>9966</stopPort>
        <stopKey>foo</stopKey>
        <connectors>
            <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                <port>8080</port>
                <maxIdleTime>60000</maxIdleTime>
            </connector>
        </connectors>
    </configuration>
</plugin>

You can either replace this plugin or just add an additional plugin below:

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <!-- for Tomcat 7, change to tomcat7-maven-plugin -->
    <artifactId>tomcat6-maven-plugin</artifactId>
    <version>2.0-beta-1</version>
    <configuration>
        <path>/mycompany</path>
        <warSourceDirectory>${webappDirectory}</warSourceDirectory>
        <port>8080</port>
    </configuration>
</plugin>

You can then optionally modify build.xml to add a new ant task for this:

<target name="tomcat-demo" depends="start-db">
    <delete dir="war/WEB-INF/lib"/>
    <artifact:mvn mavenHome="${maven.home}" fork="true" jvmargs="-DbroadleafCoreDirectory=${broadleafCoreDirectory} -DbroadleafWorkspaceDirectory=${broadleafWorkspaceDirectory} -XX:MaxPermSize=256M -Xmx512M">
        <arg value="compile"/>
        <arg value="war:exploded"/>
        <arg value="tomcat6:run-war"/>
    </artifact:mvn>
</target>

For admin, the configuration is similar but you would change the port to 8081. For more information on this plugin, check out the plugin documentation.

Character Encoding

We will make a few configuration changes to enable UTF-8 character encoding in Tomcat.

Configure your Resources in context.xml to include connectionProperties. The format of the string will need to be in the propertyName=property; format. Here is a sample resource using MySql and UTF-8 encoding:

<Resource name="jdbc/web" auth="Container" type="javax.sql.DataSource"
               maxActive="30" maxIdle="60" maxWait="10000"
               username="username" password="password" driverClassName="com.mysql.jdbc.Driver"
               connectionProperties="useUnicode=true;characterEncoding=utf8;"
               url="jdbc:mysql://localhost/broadleaf"/>

Alternatively the url can be expanded to include the connection properties:

url="jdbc:mysql://localhost:3306/broadleaf?useUnicode=true&characterEncoding=utf8"

Configure your Connectors in server.xml with URIEncoding="UTF-8" to encode url (GET request) parameters. This ensures that Tomcat handles all incoming GET parameters as UTF-8 encoded. Here is sample Connector tag:

<Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443" 
              URIEncoding="UTF-8"/>

Note : You will need to set up your database to UTF-8 Collation as well.