= TomEE and Arquillian
:index-group: Arquillian
:jbake-date: 2018-12-05
:jbake-type: page
:jbake-status: published


Check out the link:arquillian-getting-started.html[Getting started] page
if you are not at all familiar with Arquillian.

All the Arquillian Adapters for TomEE support the following
configuration options in the *src/test/resources/arquillian.xml*:

[source,xml]
----
<container qualifier="tomee" default="true">
    <configuration>
        <property name="httpPort">-1</property>
        <property name="stopPort">-1</property>
        <!--Optional Container Properties-->
        <property name="properties">
            aproperty=something
        </property>
        <!--Optional Remote Adapter Deployer Properties
        <property name="deployerProperties">
            aproperty=something
        </property>
        -->
    </configuration>
</container>
----

The above can also be set as system properties rather than via the
*src/test/resources/arquillian.xml* file.

[source,xml]
----
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <systemPropertyVariables>
          <tomee.httpPort>-1</tomee.httpPort>
          <tomee.stopPort>-1</tomee.stopPort>
        </systemPropertyVariables>
      </configuration>
    </plugin>
  </plugins>
</build>
----

When a port is set to -1, a random port will be chosen. This is key to
avoiding port conflicts on CI systems or for just plain clean testing.

The TomEE Arquillian adapters will export the actual port chosen back as
a system property using the same name. The test case can use the
property to retrieve the port and contact the server.

[source,java]
----
URL url = new URL("http://localhost:" + System.getProperty("tomee.httpPort");
// use the URL to connect to the server
----

If that property returns null

When you are actually using a test on the client side, you can use
instead

[source,java]
----
import org.jboss.arquillian.test.api.ArquillianResource;
...
@ArquillianResource private URL url;
----

The URL will get injected by Arquillian. Be careful, that injection only
works if your are on the client side (it does not make sense in the
server side). So, if for a specific need to need it, just use the system
property.

== TomEE Embedded Adapter

The TomEE Embedded Adapter will boot TomEE right inside the test case
itself resulting in one JVM running both the application and the test
case. This is generally much faster than the TomEE Remote Adapter and
great for development. That said, it is strongly recommended to also run
all tests in a Continuous Integration system using the TomEE Remote
Adapter.

To use the TomEE Embedded Arquillian Adapter, simply add these Maven
dependencies to your Maven pom.xml:

[source,xml]
----
<dependency>
  <groupId>org.apache.tomee</groupId>
  <artifactId>arquillian-tomee-embedded</artifactId>
  <version>8.0.4</version> <!--Current version-->
</dependency>
<dependency>
  <groupId>org.apache.tomee</groupId>
  <artifactId>tomee-embedded</artifactId>
  <version>8.0.4</version>
</dependency>
<!--Required for WebServices and RESTful WebServices-->
<dependency>
  <groupId>org.apache.tomee</groupId>
  <artifactId>tomee-webservices</artifactId>
  <version>8.0.4</version>
</dependency>
<dependency>
  <groupId>org.apache.tomee</groupId>
  <artifactId>tomee-jaxrs</artifactId>
  <version>8.0.4</version>
</dependency>
----

As mentioned above the Embedded Adapter has the following properties
which can be specified in the *src/test/resources/arquillian.xml* file:

* `httpPort`
* `stopPort`
* `properties` (System properties for container)

Or alternatively as System properties, possibly shared with other TomEE
Arquillian Adapters:

* `tomee.httpPort`
* `tomee.stopPort`

Or more specifically as a System properties only applicable to the
Embedded Adapter:

* `tomee.embedded.httpPort`
* `tomee.embedded.stopPort`

== TomEE Remote Adapter

The TomEE Remote Adapter will unzip and setup a TomEE or TomEE Plus
distribution. Once setup, the server will execute in a separate process.
This will be slower, but with the added benefit it is 100% match with
the production system environment.

On a local machine clients can get the remote server port using the
following System property:

[source,java]
----
final String port = System.getProperty("server.http.port");
----

The following shows a typical configuration for testing against TomEE
(webprofile version). The same can be done against TomEE+ by changing
`<tomee.classifier>webprofile</tomee.classifier>` to
`<tomee.classifier>plus</tomee.classifier>`

[source,xml]
----
<properties>
  <tomee.version>8.0.4</tomee.version>
  <tomee.classifier>webprofile</tomee.classifier>
</properties>
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <systemPropertyVariables>
          <tomee.classifier>${tomee.classifier}</tomee.classifier>
          <tomee.version>${tomee.version}</tomee.version>
        </systemPropertyVariables>
      </configuration>
    </plugin>
  </plugins>
</build>
<dependencies>
  <dependency>
    <groupId>org.apache.tomee</groupId>
    <artifactId>arquillian-tomee-remote</artifactId>
    <version>${tomee.version}</version>
  </dependency>
  <dependency>
    <groupId>org.apache.tomee</groupId>
    <artifactId>apache-tomee</artifactId>
    <version>${tomee.version}</version>
    <classifier>${tomee.classifier}</classifier>
    <type>zip</type>
  </dependency>
</dependencies>
----

The Remote Adapter has the following properties which can be specified
in the *src/test/resources/arquillian.xml* file:

* `httpPort`
* `stopPort`
* `version`
* `classifier` (Must be either `webprofile` or `plus`)
* `properties` (System properties for container)
* `deployerProperties` (Sent to Deployer)

Or alternatively as System properties, possibly shared with other TomEE
Arquillian Adapters:

* `tomee.httpPort`
* `tomee.stopPort`
* `tomee.version`
* `tomee.classifier`

Or more specifically as a System properties only applicable to the
Remote Adapter:

* `tomee.remote.httpPort`
* `tomee.remote.stopPort`
* `tomee.remote.version`
* `tomee.remote.classifier`

== Maven Profiles

Setting up both adapters is quite easy via Maven profiles. Here the
default adapter is the Embedded Adapter, the Remote Adapter will run
with `-Ptomee-webprofile-remote` specified as a `mvn` command argument.

[source,xml]
----
<profiles>

  <profile>
    <id>tomee-embedded</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <dependencies>
      <dependency>
        <groupId>org.apache.tomee</groupId>
        <artifactId>arquillian-tomee-embedded</artifactId>
        <version>8.0.4</version>
      </dependency>
    </dependencies>
  </profile>

  <profile>
    <id>tomee-webprofile-remote</id>
    <properties>
      <tomee.version>8.0.4</tomee.version>
      <tomee.classifier>webprofile</tomee.classifier>
    </properties>
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <configuration>
            <systemPropertyVariables>
              <tomee.classifier>${tomee.classifier}</tomee.classifier>
              <tomee.version>${tomee.version}</tomee.version>
            </systemPropertyVariables>
          </configuration>
        </plugin>
      </plugins>
    </build>
    <dependencies>
      <dependency>
        <groupId>org.apache.tomee</groupId>
        <artifactId>arquillian-tomee-remote</artifactId>
        <version>${tomee.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.tomee</groupId>
        <artifactId>apache-tomee</artifactId>
        <version>${tomee.version}</version>
        <classifier>${tomee.classifier}</classifier>
        <type>zip</type>
      </dependency>
    </dependencies>
  </profile>

  <profile>
    <id>tomee-plus-remote</id>
    <properties>
      <tomee.version>8.0.4</tomee.version>
      <tomee.classifier>plus</tomee.classifier>
    </properties>
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <configuration>
            <systemPropertyVariables>
              <tomee.classifier>${tomee.classifier}</tomee.classifier>
              <tomee.version>${tomee.version}</tomee.version>
            </systemPropertyVariables>
          </configuration>
        </plugin>
      </plugins>
    </build>
    <dependencies>
      <dependency>
        <groupId>org.apache.tomee</groupId>
        <artifactId>arquillian-tomee-remote</artifactId>
        <version>${tomee.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.tomee</groupId>
        <artifactId>apache-tomee</artifactId>
        <version>${tomee.version}</version>
        <classifier>${tomee.classifier}</classifier>
        <type>zip</type>
      </dependency>
    </dependencies>
  </profile>

</profiles>
----
