Running Seam 2.0 on Tomcat(EJB3) using Maven and Cargo
12 October 2007
Java | cargo | maven | seam | tomcat |
In this article I review a simple Seam 2.0.0.CR2 app that deploys to Tomcat 6.0.13 with JBoss Embedded Beta2.
It's great to see Seam move to Maven because tracking and installing all those dependencies in a local repository was a pain in the ass! This project is moving fast, and if you wanted to keep up with the latest version, it was a lot of work. So now that my life is easier, I thought I would make the Seam+EJB+Tomcat user's life a little easier also.
The following is included in this sample app:
- Trinidad 1.0.2
- JBoss RichFaces
- JAAS
- Drools
- JBPM
- And everything else that seam and Embedded/EJB3 provides out of box.
All you need to have is Maven 2.0.x installed. The rest is cake. During the installation Cargo will download a zip file from the JBoss Maven repository. This is the Tomcat 6.0.13 distro with Embedded already installed and setup. Nothing else has been added to it.
Directions
- Checkout the project and getting started directions Here
*Note - I used a stub for the datasource in TOMCAT_HOME/lib/deploy. Don't forget that this deploy directory is supposed to be the same as JBoss AS deploy directory.
I used a few cool things in the maven pom setup:
- It seems you can trick cargo into using the latest version of tomcat. The documentation says Tomcat5x is only supported for the container, but I didn't have any problems using 6.0.x with the Tomcat5x containerId
- The
cargo.container.urlcan be local, there is an example in the web/pom.xml (at the bottom)...So once you have this downloaded in you target dir, I would copy it somewhere outside of target and change thecargo.container.urlto point to it. It will save time from downloading and bandwidth. It would be cool to add it as a dependency and then unzip from your local maven repo, but I haven't tried it yet. - Like I mentioned earlier, if you want to disable auto start of the Tomcat server you should disable this section of the cargo plugin in web/pom.xml
<executions> <execution> <id>start</id> <phase>install</phase> <goals> <goal>start</goal> </goals> </execution> <execution> <id>deploy-app</id> <phase>install</phase> <goals> <goal>deployer-deploy</goal> </goals> </execution> </executions>
- I have another version of this sample app that uses profiles to build either an EAR for JBoss or a WAR for Tomcat+Embedded. Michael Yuan recently touched on this subject about the EAR+Seam maven impl and did a great job breaking it down. I will try to post the sample app that lets you build a war for Tomcat or an EAR for JBoss all based on the maven profile i.e...
mvn install -Ptomcatormvn install -PjbossThis is the power of Maven2 and there is soo much more you can do with it.
btw, I haven't blogged since I've become an employee for JBoss, a division of Red Hat. I'm working on the JBoss Portal Team and I must say that the company is awesome, my team is awesome, and everyone I have met and talked to have been, you guessed it, AWESOME!