Preloader image

This example shows how to deploy two different applications if the need for it shows. That sometimes happens if we need communication between two different web applications. In our example we will deploy two applications web resources and test their content.

Run the application:

mvn clean test

This command runs the test where we have specified the two deployments we want to test. The test deploys two applications on which we test their content that we defined as web resource in our createDep1() and createDep2()` method.

@Deployment annotation

If we want to have two different applications running in the same test it’s as simple as adding two different @Deployment annotated methods to our test class.

@Deployment(name = "war1", testable = false)
@TargetsContainer("tomee-1")
public static WebArchive createDep1() {
    return ShrinkWrap.create(WebArchive.class, "application1.war")
            .addAsWebResource(new StringAsset("Hello from TomEE 1"), "index.html");
}

@Deployment(name = "war2", testable = false)
@TargetsContainer("tomee-2")
public static WebArchive createDep2() {
    return ShrinkWrap.create(WebArchive.class, "application2.war")
            .addAsWebResource(new StringAsset("Hello from TomEE 2"), "index.html");
}

Define Deployment context

For each test method we have to define on which Deployment context the tests should be run. For that we use the @OperateOnDeployment("war2") annotation on our test method.

@Test
@OperateOnDeployment("war2")
public void testRunningInDep2(@ArquillianResource final URL url) throws IOException {
    final String content = IO.slurp(url);
    assertEquals("Hello from TomEE 2", content);
}