<!DOCTYPE html>
<html lang="en">
  <head>

    <meta charset="UTF-8">
      <title>TomEE and Arquillian</title>
    <meta name="description" content="Apache TomEE">
    <meta name="author" content="Apache TomEE">
    <meta name="google-translate-customization" content="f36a520c08f4c9-0a04e86a9c075ce9-g265f3196f697cf8f-10">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="0">
    <meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate, max-age=0">

    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
    <!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <!-- Le styles -->
    <link href="./resources/css/bootstrap.css" rel="stylesheet">
    <link href="./resources/css/prettify.css" rel="stylesheet">
    <!--link href="./resources/css/bootstrap-mods.css" rel="stylesheet"-->
    <link href="./resources/css/main.css" rel="stylesheet">
    <link href="./resources/font-awesome-4.6.3/css/font-awesome.min.css" rel="stylesheet">

    <script type="text/javascript">
        var t = encodeURIComponent(document.title.replace(/^\s+|\s+$/g,""));
        var u = encodeURIComponent(""+document.URL);
    
      function fbshare () {
          window.open(
                  "http://www.facebook.com/sharer/sharer.php?u="+u,
                  'Share on Facebook',
                  'width=640,height=426');
      };
      function gpshare () {
          window.open(
                  "https://plus.google.com/share?url="+u,
                  'Share on Google+',
                  'width=584,height=385');
      };
      function twshare () {
          window.open(
                  "https://twitter.com/intent/tweet?url="+u+"&text="+t,
                  'Share on Twitter',
                  'width=800,height=526');
      };
      function pinshare () {
          window.open("//www.pinterest.com/pin/create/button/?url="+u+"&media=http%3A%2F%2Ftomee.apache.org%2Fresources%2Fimages%2Ffeather-logo.png&description="+t,
                  'Share on Pinterest',
                  'width=800,height=526');
      };
    </script>

    <!-- Le fav and touch icons -->
    <link rel="shortcut icon" href="./favicon.ico">
    <link rel="apple-touch-icon" href="./resources/images/apple-touch-icon.png">
    <link rel="apple-touch-icon" sizes="72x72" href="./resources/images/apple-touch-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="114x114" href="./resources/images/apple-touch-icon-114x114.png">

    <script src="./resources/js/prettify.js" type="text/javascript"></script>
    <script src="./resources/js/jquery-latest.js"></script>
    <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
    <script src="./resources/js/common.js"></script>
    <script src="./resources/js/prettyprint.js"></script>
    <!--script src="//assets.pinterest.com/js/pinit.js" type="text/javascript" async></script//-->
    
    <script type="text/javascript">

      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-2717626-1']);
      _gaq.push(['_setDomainName', 'apache.org']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();

    </script>
  </head>

  <body>

    <div class="topbar" data-dropdown="dropdown">
      <div class="fill">
        <div class="container">
          <a class="brand" href="./index.html">Apache TomEE</a>
          <ul class="nav">
              <li class="dropdown">
                  <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                  Apache
                      <b class="caret"></b>
                  </a>
                  <ul class="dropdown-menu">
                     <!-- <li><a href="./misc/whoweare.html">Who we are?</a></li> -->
                     <!-- <li><a href="./misc/heritage.html">Heritage</a></li> -->
                     <li><a href="http://www.apache.org">Apache Home</a></li>
                     <!-- <li><a href="./misc/resources.html">Resources</a></li> -->
                     <li><a href="./misc/contact.html">Contact</a></li>
                     <li><a href="./misc/legal.html">Legal</a></li>
                     <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                     <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
                     <li class="divider"/>
                     <li><a href="http://www.apache.org/security">Security</a></li>
                  </ul>
              </li>
              <li><a href="./index.html">Home</a></li>
              <li><a href="./downloads.html">Downloads</a></li>
              <li><a href="./documentation.html">Documentation</a></li>
              <li><a href="./examples-trunk/index.html">Examples</a></li>
              <li><a href="./support.html">Support</a></li>
              <li><a href="./contribute.html">Contribute</a></li>
              <li><a href="./security/index.html">Security</a></li>
          </ul>

            <!-- Google CSE Search Box Begins  -->
            <FORM class="pull-right" id="searchbox_010475492895890475512:_t4iqjrgx90" action="http://www.google.com/cse">
                <INPUT type="hidden" name="cx" value="010475492895890475512:_t4iqjrgx90">
                <INPUT type="hidden" name="cof" value="FORID:0">
                <INPUT size="18" width="130" style="width:130px" name="q" type="text" placeholder="Search">
            </FORM>
            <!--<SCRIPT type="text/javascript" src="http://www.google.com/coop/cse/brand?form=searchbox_010475492895890475512:_t4iqjrgx90"></SCRIPT>-->
            <!-- Google CSE Search Box Ends -->
        </div>
      </div>
    </div>

    <div class="container">
    

<div class="page-header">
    <small><a href="./index.html">Home</a></small><br>
    <h1>TomEE and Arquillian

        <div style="float: right; position: relative; bottom: -10px; ">
            <a onclick="javascript:gpshare()" class="gp-share sprite" title="Share on Google+">share [gp]</a>
            <a onclick="javascript:fbshare()" class="fb-share sprite" title="Share on Facebook">share [fb]</a>
            <a onclick="javascript:twshare()" class="tw-share sprite" title="Share on Twitter">share [tw]</a>
            <a onclick="javascript:pinshare()" class="pin-share sprite" title="Share on Pinterest">share [pin]</a>
            <a data-toggle="modal" href="#edit" class="edit-page" title="Contribute to this Page">contribute</a>
        </div>
    </h1>
</div>

<p>Check out the <a href="arquillian-getting-started.html">Getting started</a> page if you are not at all familiar with Arquillian.</p>

<p>All the Arquillian Adapters for TomEE support the following configuration options in the <strong>src/test/resources/arquillian.xml</strong>:</p>

<pre><code>&lt;container qualifier="tomee" default="true"&gt;
    &lt;configuration&gt;
        &lt;property name="httpPort"&gt;-1&lt;/property&gt;
        &lt;property name="stopPort"&gt;-1&lt;/property&gt;
        &lt;!--Optional Container Properties--&gt;
        &lt;property name="properties"&gt;
            aproperty=something
        &lt;/property&gt;
        &lt;!--Optional Remote Adapter Deployer Properties
        &lt;property name="deployerProperties"&gt;
            aproperty=something
        &lt;/property&gt;
        --&gt;
    &lt;/configuration&gt;
&lt;/container&gt;
</code></pre>

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

<pre><code>&lt;build&gt;
  &lt;plugins&gt;
    &lt;plugin&gt;
      &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
      &lt;artifactId&gt;maven-surefire-plugin&lt;/artifactId&gt;
      &lt;configuration&gt;
        &lt;systemPropertyVariables&gt;
          &lt;tomee.httpPort&gt;-1&lt;/tomee.httpPort&gt;
          &lt;tomee.stopPort&gt;-1&lt;/tomee.stopPort&gt;
        &lt;/systemPropertyVariables&gt;
      &lt;/configuration&gt;
    &lt;/plugin&gt;
  &lt;/plugins&gt;
&lt;/build&gt;
</code></pre>

<p>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.</p>

<p>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.</p>

<pre><code>URL url = new URL("http://localhost:" + System.getProperty("tomee.httpPort");
// use the URL to connect to the server
</code></pre>

<p>If that property returns null   </p>

<p>When you are actually using a test on the client side, you can use instead</p>

<pre><code>import org.jboss.arquillian.test.api.ArquillianResource;
...
@ArquillianResource private URL url;
</code></pre>

<p>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.</p>

<h1>TomEE Embedded Adapter</h1>

<p>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.</p>

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

<pre><code>&lt;dependency&gt;
  &lt;groupId&gt;org.apache.tomee&lt;/groupId&gt;
  &lt;artifactId&gt;arquillian-tomee-embedded&lt;/artifactId&gt;
  &lt;version&gt;8.0.4&lt;/version&gt; &lt;!--Current version--&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
  &lt;groupId&gt;org.apache.tomee&lt;/groupId&gt;
  &lt;artifactId&gt;tomee-embedded&lt;/artifactId&gt;
  &lt;version&gt;8.0.4&lt;/version&gt;
&lt;/dependency&gt;
&lt;!--Required for WebServices and RESTful WebServices--&gt;
&lt;dependency&gt;
  &lt;groupId&gt;org.apache.tomee&lt;/groupId&gt;
  &lt;artifactId&gt;tomee-webservices&lt;/artifactId&gt;
  &lt;version&gt;8.0.4&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
  &lt;groupId&gt;org.apache.tomee&lt;/groupId&gt;
  &lt;artifactId&gt;tomee-jaxrs&lt;/artifactId&gt;
  &lt;version&gt;8.0.4&lt;/version&gt;
&lt;/dependency&gt;
</code></pre>

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

<ul>
<li><code>httpPort</code></li>
<li><code>stopPort</code></li>
<li><code>properties</code> (System properties for container)</li>
</ul>

<p>Or alternatively as System properties, possibly shared with other TomEE Arquillian Adapters:</p>

<ul>
<li><code>tomee.httpPort</code></li>
<li><code>tomee.stopPort</code></li>
</ul>

<p>Or more specifically as a System properties only applicable to the Embedded Adapter:</p>

<ul>
<li><code>tomee.embedded.httpPort</code></li>
<li><code>tomee.embedded.stopPort</code></li>
</ul>

<h1>TomEE Remote Adapter</h1>

<p>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.</p>

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

<pre><code>final String port = System.getProperty("server.http.port");
</code></pre>

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

<pre><code>&lt;properties&gt;
  &lt;tomee.version&gt;8.0.4&lt;/tomee.version&gt;
  &lt;tomee.classifier&gt;webprofile&lt;/tomee.classifier&gt;
&lt;/properties&gt;
&lt;build&gt;
  &lt;plugins&gt;
    &lt;plugin&gt;
      &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
      &lt;artifactId&gt;maven-surefire-plugin&lt;/artifactId&gt;
      &lt;configuration&gt;
        &lt;systemPropertyVariables&gt;
          &lt;tomee.classifier&gt;${tomee.classifier}&lt;/tomee.classifier&gt;
          &lt;tomee.version&gt;${tomee.version}&lt;/tomee.version&gt;
        &lt;/systemPropertyVariables&gt;
      &lt;/configuration&gt;
    &lt;/plugin&gt;
  &lt;/plugins&gt;
&lt;/build&gt;
&lt;dependencies&gt;
  &lt;dependency&gt;
    &lt;groupId&gt;org.apache.tomee&lt;/groupId&gt;
    &lt;artifactId&gt;arquillian-tomee-remote&lt;/artifactId&gt;
    &lt;version&gt;${tomee.version}&lt;/version&gt;
  &lt;/dependency&gt;
  &lt;dependency&gt;
    &lt;groupId&gt;org.apache.tomee&lt;/groupId&gt;
    &lt;artifactId&gt;apache-tomee&lt;/artifactId&gt;
    &lt;version&gt;${tomee.version}&lt;/version&gt;
    &lt;classifier&gt;${tomee.classifier}&lt;/classifier&gt;
    &lt;type&gt;zip&lt;/type&gt;
  &lt;/dependency&gt;
&lt;/dependencies&gt;
</code></pre>

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

<ul>
<li><code>httpPort</code></li>
<li><code>stopPort</code></li>
<li><code>version</code></li>
<li><code>classifier</code> (Must be either <code>webprofile</code> or  <code>plus</code>)</li>
<li><code>properties</code> (System properties for container)</li>
<li><code>deployerProperties</code> (Sent to Deployer)</li>
</ul>

<p>Or alternatively as System properties, possibly shared with other TomEE Arquillian Adapters:</p>

<ul>
<li><code>tomee.httpPort</code></li>
<li><code>tomee.stopPort</code></li>
<li><code>tomee.version</code></li>
<li><code>tomee.classifier</code></li>
</ul>

<p>Or more specifically as a System properties only applicable to the Remote Adapter:</p>

<ul>
<li><code>tomee.remote.httpPort</code></li>
<li><code>tomee.remote.stopPort</code></li>
<li><code>tomee.remote.version</code></li>
<li><code>tomee.remote.classifier</code></li>
</ul>

<h1>Maven Profiles</h1>

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

<pre><code>&lt;profiles&gt;

  &lt;profile&gt;
    &lt;id&gt;tomee-embedded&lt;/id&gt;
    &lt;activation&gt;
      &lt;activeByDefault&gt;true&lt;/activeByDefault&gt;
    &lt;/activation&gt;
    &lt;dependencies&gt;
      &lt;dependency&gt;
        &lt;groupId&gt;org.apache.tomee&lt;/groupId&gt;
        &lt;artifactId&gt;arquillian-tomee-embedded&lt;/artifactId&gt;
        &lt;version&gt;8.0.4&lt;/version&gt;
      &lt;/dependency&gt;
    &lt;/dependencies&gt;
  &lt;/profile&gt;

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

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

&lt;/profiles&gt;
</code></pre>




        <div id="edit" class="modal hide fade in" style="display: none; ">
            <div class="modal-header">
                <a class="close" data-dismiss="modal">x</a>

                <h3>Thank you for contributing to the documentation!</h3>
            </div>
            <div class="modal-body">
                <h4>Any help with the documentation is greatly appreciated.</h4>
                <p>All edits are reviewed before going live, so feel free to do much more than fix typos or links.  If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it.  Don't be surprised if we like it so much we ask you for help with other pages :)</p>
                <small>NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.</small>
                <!--[if gt IE 6]>
                <h4>Internet Explorer Users</h4>
                <p>If you are not an Apache committer, click the Yes link and enter a <i>anonymous</i> for the username and leave the password empty</p>
                <![endif]-->

            </div>
            <div class="modal-footer">
                Do you have an Apache ID?
                <a href="javascript:void(location.href='https://cms.apache.org/redirect?uri='+escape(location.href))" class="btn">Yes</a>
                <a href="javascript:void(location.href='https://anonymous:@cms.apache.org/redirect?uri='+escape(location.href))" class="btn">No</a>
            </div>
        </div>
        <script src="./resources/js/bootstrap-modal.js"></script>

        <footer>
            <p>Copyright &copy; 1999-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
                Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation.
                All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
        </footer>

    </div> <!-- /container -->

    <!-- Javascript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="./resources/js/bootstrap-dropdown.js"></script>

  </body>
</html>
