I am attempting to run integration tests on an embedded tomcat instance in a multi-module maven project. I am using the tomcat7-maven-plugin configured as follows:
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <server>my-tomcat</server> <path>/svc</path> <url>http://localhost:8080/manager/text</url> </configuration> <dependencies> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0</version> <scope>runtime</scope> </dependency> <dependency> <groupId>com.cenqua.clover</groupId> <artifactId>clover</artifactId> <version>3.2.0</version> <scope>runtime</scope> </dependency> </dependencies> <executions> <execution> <id>start-tomcat</id> <phase>pre-integration-test</phase> <goals> <goal>run-war-only</goal> </goals> <configuration> <fork>true</fork> </configuration> </execution> <execution> <id>stop-tomcat</id> <phase>post-integration-test</phase> <goals> <goal>shutdown</goal> </goals> </execution> </executions> </plugin>
But it appears that the server does not shutdown. It will either fail on the next clean or if I set my context's antiResourceLocking to true I can see that the next time run-war-only is called I get a binding error due to the port already being in use by the previous orphaned tomcat process. Everything runs fine outside of bamboo. What do I have to configure to make this work as it should? I am using bamboo version 5.2.2 build 4010. Thanks.
I too saw the same issue. The only way around this I found was to start tomcat on different ports. My problem was specifically related to clover since clover ended up running the tests twice and the second time the bind on the default port 8080 failed. I worked around this by using a plugin to allocate random ports: http://mojo.codehaus.org/build-helper-maven-plugin/reserve-network-port-mojo.htmland using those ports in the tomcat maven plugin.
When in doubt script it. If you can shut it down from the command line you can put it in a script to stop it that way. Wouldn't matter if you did it at the end of the build or as your first task in the next build.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks for your reply Gretchen. The problem here is that it is an embedded instance, and I don't think a command line function will work. The shutdown method here is so far the only way I know of to shut down the embedded tomcat server. Is there another way? I haven't found anything.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.