Added:
tomee/site/trunk/content/tomee-8.0/docs/developer/testing/applicationcomposer/index.html
URL:
http://svn.apache.org/viewvc/tomee/site/trunk/content/tomee-8.0/docs/developer/testing/applicationcomposer/index.html?rev=1847931&view=auto
==============================================================================
---
tomee/site/trunk/content/tomee-8.0/docs/developer/testing/applicationcomposer/index.html
(added)
+++
tomee/site/trunk/content/tomee-8.0/docs/developer/testing/applicationcomposer/index.html
Sun Dec 2 00:12:50 2018
@@ -0,0 +1,663 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="UTF-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>Apache TomEE</title>
+ <meta name="description"
+ content="Apache TomEE is a lightweight, yet powerful, JavaEE
Application server with feature rich tooling." />
+ <meta name="keywords"
content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian"
/>
+ <meta name="author" content="Luka Cvetinovic for Codrops" />
+ <link rel="icon" href="../../../../../favicon.ico">
+ <link rel="icon" type="image/png" href="../../../../../favicon.png">
+ <meta name="msapplication-TileColor" content="#80287a">
+ <meta name="theme-color" content="#80287a">
+ <link rel="stylesheet" type="text/css"
href="../../../../../css/normalize.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../../css/bootstrap.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../../css/owl.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../../css/animate.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../../fonts/font-awesome-4.1.0/css/font-awesome.min.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../../fonts/eleganticons/et-icons.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../../css/jqtree.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../../css/idea.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../../css/cardio.css">
+
+ <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="preloader">
+ <img src="../../../../../img/loader.gif" alt="Preloader image">
+ </div>
+ <nav class="navbar">
+ <div class="container">
+ <div class="row"> <div class="col-md-12">
+
+ <!-- Brand and toggle get grouped for better mobile
display -->
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle
collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
+ <span class="sr-only">Toggle
navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <span>
+
+
+ <img src="../../../../../img/logo-active.png">
+
+
+ </span>
+ Apache TomEE
+ </a>
+ </div>
+ <!-- Collect the nav links, forms, and other content
for toggling -->
+ <div class="collapse navbar-collapse"
id="bs-example-navbar-collapse-1">
+ <ul class="nav navbar-nav navbar-right
main-nav">
+ <li><a
href="../../../../../docs.html">Documentation</a></li>
+ <li><a
href="../../../../../community/index.html">Community</a></li>
+ <li><a
href="../../../../../security/index.html">Security</a></li>
+ <li><a
href="../../../../../download-ng.html">Downloads</a></li>
+ </ul>
+ </div>
+ <!-- /.navbar-collapse -->
+ </div></div>
+ </div>
+ <!-- /.container-fluid -->
+ </nav>
+
+
+ <div id="main-block" class="container section-padded">
+ <div class="row title">
+ <div class="col-md-12">
+ <div class='page-header'>
+
+ <div class='btn-toolbar pull-right' style="z-index: 2000;">
+ <div class='btn-group'>
+ <a class="btn"
href="../../../../../tomee-8.0/docs/developer/testing/applicationcomposer/index.pdf"><i
class="fa fa-file-pdf-o"></i> Download as PDF</a>
+ </div>
+ </div>
+
+ <h1>ApplicationComposer: The TomEE Swiss Knife</h1>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+
+ <div class="col-md-12">
+ <div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>ApplicationComposer API is mainly contained in org.apache.openejb.testing
package (historically, today we would have called the package
org.apache.tomee.applicationcomposer).</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_dependencies">Dependencies</h3>
+<div class="paragraph">
+<p>To start using ApplicationComposer you need to add some dependencies.</p>
+</div>
+<div class="paragraph">
+<p>The minimum required one is openejb-core:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-xml"
data-lang="xml"><dependency>
+ <groupId>org.apache.tomee</groupId>
+ <artifactId>openejb-core</artifactId>
+ <version>${openejb.version></version>
+</dependency></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If you need JAXRS services you’ll add (or replace thanks to
transitivity of maven) openejb-cxf-rs:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-xml"
data-lang="xml"><dependency>
+ <groupId>org.apache.tomee</groupId>
+ <artifactId>openejb-cxf-rs</artifactId>
+ <version>${openejb.version></version>
+</dependency></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If you need JAXWS services you’ll add (or replace thanks to
transitivity of maven) openejb-cxf:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-xml"
data-lang="xml"><dependency>
+ <groupId>org.apache.tomee</groupId>
+ <artifactId>openejb-cxf</artifactId>
+ <version>${openejb.version></version>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_applicationcomposer_components">ApplicationComposer Components</h3>
+<div class="sect3">
+<h4 id="__module">@Module</h4>
+<div class="paragraph">
+<p>An ApplicationComposer needs at minimum a module (the application you need
to deploy).</p>
+</div>
+<div class="paragraph">
+<p>To do so you have two cases:</p>
+</div>
+<div class="paragraph">
+<p>before TomEE 7.x: you can only write method(s) decorated with @Module
+since TomEE 7.x: you can skip it and use @Classes directly on the
ApplicationComposer class as a shortcut for:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java" data-lang="java">@Module
public WebApp app() { return new WebApp(); }</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The expected returned type of these methods are in org.apache.openejb.jee
package:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Application: entry point to create an ear</p>
+</li>
+<li>
+<p>WebApp: a web application</p>
+</li>
+<li>
+<p>EjbJar: an ejb module</p>
+</li>
+<li>
+<p>EnterpriseBean children: a simple EJB</p>
+</li>
+<li>
+<p>Persistence: a persistence module with multiple units</p>
+</li>
+<li>
+<p>PersistenceUnit: a simple unit (automatically wrapped in a Persistence)</p>
+</li>
+<li>
+<p>Connector: a JCA connector module</p>
+</li>
+<li>
+<p>Beans: a CDI module,</p>
+</li>
+<li>
+<p>Class[] or Class: a set of classes scanned to discover annotations</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Note that for easiness @Classes was added to be able to describe a module
and some scanned classes. For instance the following snippet will create a web
application with classes C1, C2 as CDI beans and E1 as an EJB automatically:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java" data-lang="java">@Module
+@Classes(cdi = true, value = { C1.class, C2.class, E1.class })
+public WebApp app() {
+ return new WebApp();
+}</code></pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="__configuration">@Configuration</h4>
+<div class="paragraph">
+<p>Often you need to customize a bit the container or at least create some
resources like test databases. To do so you can create a method returning
Properties which will be the container properties.</p>
+</div>
+<div class="paragraph">
+<p>Note: to simplify writing properties you can use PropertiesBuilder util
class which is just a fluent API to write properties.</p>
+</div>
+<div class="paragraph">
+<p>In these properties you can reuse OpenEJB/TomEE property syntax for
resources.</p>
+</div>
+<div class="paragraph">
+<p>Here is a sample:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java"
data-lang="java">@Configuration
+public Properties configuration() {
+ return new PropertiesBuilder()
+ .p("db", "new://Resource?type=DataSource")
+ .p("db.JdbcUrld", "jdbc:hsqldb:mem:test")
+ .build();
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Since TomEE 7.x you can also put properties on ApplicationComposer class
using @ContainerProperties API:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java"
data-lang="java">@ContainerProperties({
+ @ContainerProperties.Property(name = "db", value =
"new://Resource?type=DataSource"),
+ @ContainerProperties.Property(name = "db.JdbcUrl", value =
"jdbc:hsqldb:mem:test")
+})
+public class MyAppComposer() {
+ // ...
+}</code></pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="__component">@Component</h4>
+<div class="paragraph">
+<p>Sometimes you need to customize a container component. The most common use
case is the security service to mock a little bit authorization if you
don’t care in your test.</p>
+</div>
+<div class="paragraph">
+<p>To do so just write a method decorated with @Component returning the
instance you desire.</p>
+</div>
+<div class="paragraph">
+<p>Components in TomEE are stored in a container Map and the key needs to be a
Class. This one is deduced from the returned type of the @Component method:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java" data-lang="java">@Component
+public SecurityService mockSecurity() {
+ return new MySecurityService();
+}</code></pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="__descriptors">@Descriptors</h4>
+<div class="paragraph">
+<p>You can reuse existing file descriptors using @Descriptors. The name is the
file name and the path either a classpath path or a file path:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java" data-lang="java">// runner
if needed etc...
+@Descriptors(@Descriptor(name = "persistence.xml", path =
"META-INF/persistence.xml"))
+public class MyTest {
+ //...
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Note: this can be put in a @Module method as well.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_services">Services</h4>
+<div class="paragraph">
+<p>If you want to test a JAXRS or JAXWS service you need to activate these
services.</p>
+</div>
+<div class="paragraph">
+<p>To do so just add the needed dependency and use @EnableServices:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java" data-lang="java">// runner
if needed etc...
+@EnableService("jaxrs") // jaxws supported as well
+public class MyTest {
+ //...
+}</code></pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_random_port">Random port</h4>
+<div class="paragraph">
+<p>Services like JAXRS and JAXWS relies on HTTP. Often it is nice to have a
random port to be able to deploy multiple tests/projects on the same CI
platform at the same time.</p>
+</div>
+<div class="paragraph">
+<p>To shortcut all the needed logic you can use @RandomPort. It is simply an
injection giving you either the port (int) or the root context (URL):</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java" data-lang="java">// runner,
services if needed etc...
+public class MyTest {
+ @RandomPort("http")
+ private int port;
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Note: you can generate this way multiple ports. The value is the name of
the service it will apply on (being said http is an alias for httpejbd which is
our embedded http layer).</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_nice_logs">Nice logs</h4>
+<div class="paragraph">
+<p>@SimpleLog annotation allows you to have one liner logs</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="__jaxrsprovider">@JaxrsProvider</h4>
+<div class="paragraph">
+<p>@JaxrsProvider allows you to specify on a @Module method the list of JAXRS
provider you want to use.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_dependencies_without_hacky_code">Dependencies without hacky code</h4>
+<div class="paragraph">
+<p>@Jars allows you to add dependencies (scanned) to your application
automatically (like CDI libraries):</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java" data-lang="java">@Module
+@Classes(cdi = true, value = { C1.class, C2.class, E1.class })
+@Jars("deltaspike-")
+public WebApp app() {
+ return new WebApp();
+}</code></pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="__default">@Default</h4>
+<div class="paragraph">
+<p>@Default (openejb one not CDI one) automatically adds in the application
target/classes as binaries and src/main/webapp as resources for maven
projects.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="__cdiextensions">@CdiExtensions</h4>
+<div class="paragraph">
+<p>This annotation allows you to control which extensions are activated during
the test.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="__appresource">@AppResource</h4>
+<div class="paragraph">
+<p>This annotation allows injection of few particular test resources like:</p>
+</div>
+<div class="paragraph">
+<p>the test AppModule (application meta)
+the test Context (JNDI)
+the test ApplicationComposers (underlying runner)
+ContextProvider: allow to mock JAXRS contexts</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="__mockinjector">@MockInjector</h4>
+<div class="paragraph">
+<p>Allows to mock EJB injections. It decorates a dedicated method returning an
instance (or Class) implementing FallbackPropertyInjector.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="__webresource">@WebResource</h4>
+<div class="paragraph">
+<p>Allow for web application to add folders containing web resources.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_how_to_run_it">How to run it?</h3>
+<div class="sect3">
+<h4 id="_junit">JUnit</h4>
+<div class="paragraph">
+<p>If you use JUnit you have mainly 2 solutions to run you "model" using the
ApplicationComposer:</p>
+</div>
+<div class="paragraph">
+<p>using ApplicationComposer runner:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java"
data-lang="java">@RunWith(ApplicationComposer.class) public class MyTest { //
... }</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>using ApplicationComposerRule rule:
+public class MyTest { @Rule // or @ClassRule if you want the
container/application lifecycle be bound to the class and not test methods
public final ApplicationComposerRule rule = new ApplicationComposerRule(this);
}</p>
+</div>
+<div class="paragraph">
+<p>Tip: since TomEE 7.x ApplicationComposerRule is decomposed in 2 rules if
you need: ContainerRule and DeployApplication. Using JUnit RuleChain you can
chain them to get the samebehavior as ApplicationComposerRule or better deploy
multiple ApplicationComposer models and controlling their deployment ordering
(to mock a remote service for instance).</p>
+</div>
+<div class="paragraph">
+<p>Finally just write <code>@Test</code> method using test class injections as
if the test class was a managed bean!</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_testng">TestNG</h4>
+<div class="paragraph">
+<p>TestNG integration is quite simple today and mainly
ApplicationComposerListener class you can configure as a listener to get
ApplicationComposer features.</p>
+</div>
+<div class="paragraph">
+<p>Finally just write TestNG @Test method using test class injections as if
the test class was a managed bean!</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_standalone">Standalone</h4>
+<div class="paragraph">
+<p>Since TomEE 7.x you can also use ApplicationComposers to directly run you
ApplicationComposer model as a standalone application:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java" data-lang="java">public
class MyApp {
+ public static void main(String[] args) {
+ ApplicationComposers.run(MyApp.class, args);
+ }
+
+ // @Module, @Configuration etc...
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Tip: if MyApp has <code>@PostConstruct</code> methods they will be
respected and if MyApp has a constructor taking an array of String it will be
instantiated getting the second parameter as argument (ie you can propagate
your main parameter to your model to modify your application depending it!)</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_junit_sample">JUnit Sample</h3>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java"
data-lang="java">@Classes(cdi = true, value = { MyService.class,
MyOtherService.class })
+@ContainerProperties(@ContainerProperties.Property(name = "myDb", value =
"new://Resource?type=DataSource"))
+@RunWith(ApplicationComposer.class)
+public class MyTest {
+ @Resource(name = "myDb")
+ private DataSource ds;
+
+ @Inject
+ private MyService service;
+
+ @Test
+ public void myTest() {
+ // do test using injections
+ }
+}</code></pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_start_and_deploy_once">Start and Deploy once</h3>
+<div class="paragraph">
+<p>When having a huge suite of test it can be long to
start/deploy/undeploy/shutdown he container/application for each method.</p>
+</div>
+<div class="paragraph">
+<p>That’s why <code>SingleApplicationComposerRunner</code> allows to
just reuse the same instance accross several test.</p>
+</div>
+<div class="paragraph">
+<p>The first test will start and deploy the application and then other tests
will reuse this instance until the JVM is destroyed
+where the server/application will be undeployed/shutdown.</p>
+</div>
+<div class="paragraph">
+<p>Here a simple usage:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java" data-lang="java">import
org.apache.openejb.testing.SingleApplicationComposerRunner;
+// other imports
+
+@RunWith(SingleApplicationComposerRunner.class)
+public class MyTest {
+ @Inject
+ private ACdiBean bean;
+
+ @Application
+ private TheModel model;
+
+ @Test
+ public void aTest() {
+ // ...
+ }
+}</code></pre>
+</div>
+</div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+if you need a real TomEE container then you can have a look to
<code>TomEEEmbeddedSingleRunner</code> which does deploys the classpath
+using tomee-embedded.
+</td>
+</tr>
+</table>
+</div>
+<div class="sect3">
+<h4 id="_configure_what_to_deploy">Configure what to deploy</h4>
+<div class="paragraph">
+<p>As all tests will reuse the same application the model (the class declaring
the application with <code>@Classes</code>, <code>@Module</code>
etc…​) needs to be extracted from the test class itself.</p>
+</div>
+<div class="paragraph">
+<p>The application lookup uses this strategy (ordered):</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>the fully qualified name is read from the system property
<code>tomee.application-composer.application</code></p>
+</li>
+<li>
+<p>a <strong>single</strong> class decorated with <code>@Application</code> is
looked in the jar/folder containing the test class</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>If you have several "groups" you can use JUnit <code>@Category</code> to
differentiate them and write one application class by category. Then
+in <code>surefire</code> plugin you declare two <code>executions</code>
enforcing the system property
<code>tomee.application-composer.application</code> for each of them
+and the associated <code>@Category</code>.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_available_injections">Available injections</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>If the application model class uses <code>@RandomPort</code> then the test
classes can get it as well</p>
+</li>
+<li>
+<p>CDI injections are supported</p>
+</li>
+<li>
+<p><code>@Application</code> on a field allows to get the application model to
get injected</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Compared to a standalone usage it misses all other EE injections
(<code>@PersistenceContext</code>, <code>@Resource</code> etc…​ but
you can inject them in the application model
+and just expose them or wrap them in your tests thanks to the
<code>@Application</code> field.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_going_further">Going further</h3>
+<div class="paragraph">
+<p>If you want to learn more about ApplicationComposer see <a
href="../../../advanced/applicationcomposer/index.html">ApplicationComposer
Advanced</a> page.</p>
+</div>
+</div>
+ </div>
+
+ </div>
+ </div>
+<footer>
+ <div class="container">
+ <div class="row">
+ <div class="col-sm-6 text-center-mobile">
+ <h3 class="white">Be simple. Be
certified. Be Tomcat.</h3>
+ <h5 class="light regular
light-white">"A good application in a good server"</h5>
+ <ul class="social-footer">
+ <li><a
href="https://www.facebook.com/ApacheTomEE/"><i class="fa
fa-facebook"></i></a></li>
+ <li><a
href="https://twitter.com/apachetomee"><i class="fa fa-twitter"></i></a></li>
+ <li><a
href="https://plus.google.com/communities/105208241852045684449"><i class="fa
fa-google-plus"></i></a></li>
+ </ul>
+ </div>
+ <div class="col-sm-6 text-center-mobile">
+ <div class="row opening-hours">
+ <div class="col-sm-3
text-center-mobile">
+ <h5><a
href="../../../../../latest/docs/documentation.html"
class="white">Documentation</a></h5>
+ <ul
class="list-unstyled">
+ <li><a
href="../../../../../latest/docs/admin/configuration/index.html" class="regular
light-white">How to configure</a></li>
+ <li><a
href="../../../../../latest/docs/admin/file-layout.html" class="regular
light-white">Dir. Structure</a></li>
+ <li><a
href="../../../../../latest/docs/developer/testing/index.html" class="regular
light-white">Testing</a></li>
+ <li><a
href="../../../../../latest/docs/admin/cluster/index.html" class="regular
light-white">Clustering</a></li>
+ </ul>
+ </div>
+ <div class="col-sm-3
text-center-mobile">
+ <h5><a
href="../../../../../examples.html" class="white">Examples</a></h5>
+ <ul
class="list-unstyled">
+ <li><a
href="../../../../../latest/examples/simple-cdi-interceptor.html"
class="regular light-white">CDI Interceptor</a></li>
+ <li><a
href="../../../../../latest/examples/rest-cdi.html" class="regular
light-white">REST with CDI</a></li>
+ <li><a
href="../../../../../latest/examples/ejb-examples.html" class="regular
light-white">EJB</a></li>
+ <li><a
href="../../../../../latest/examples/jsf-managedBean-and-ejb.html"
class="regular light-white">JSF</a></li>
+ </ul>
+ </div>
+ <div class="col-sm-3
text-center-mobile">
+ <h5><a
href="../../../../../community/index.html" class="white">Community</a></h5>
+ <ul
class="list-unstyled">
+ <li><a
href="../../../../../community/contributors.html" class="regular
light-white">Contributors</a></li>
+ <li><a
href="../../../../../community/social.html" class="regular
light-white">Social</a></li>
+ <li><a
href="../../../../../community/sources.html" class="regular
light-white">Sources</a></li>
+ </ul>
+ </div>
+ <div class="col-sm-3
text-center-mobile">
+ <h5><a
href="../../../../../security/index.html" class="white">Security</a></h5>
+ <ul
class="list-unstyled">
+ <li><a
href="http://apache.org/security" target="_blank" class="regular
light-white">Apache Security</a></li>
+ <li><a
href="http://apache.org/security/projects.html" target="_blank" class="regular
light-white">Security Projects</a></li>
+ <li><a
href="http://cve.mitre.org" target="_blank" class="regular
light-white">CVE</a></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row bottom-footer text-center-mobile">
+ <div class="col-sm-12 light-white">
+ <p>Copyright © 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>
+ </div>
+ </div>
+ </div>
+ </footer>
+ <!-- Holder for mobile navigation -->
+ <div class="mobile-nav">
+ <ul>
+ <li><a
hef="../../../../../latest/docs/admin/index.html">Administrators</a>
+ <li><a
hef="../../../../../latest/docs/developer/index.html">Developers</a>
+ <li><a
hef="../../../../../latest/docs/advanced/index.html">Advanced</a>
+ <li><a hef="../../../../../community/index.html">Community</a>
+ </ul>
+ <a href="#" class="close-link"><i class="arrow_up"></i></a>
+ </div>
+ <!-- Scripts -->
+ <script src="../../../../../js/jquery-1.11.1.min.js"></script>
+ <script src="../../../../../js/owl.carousel.min.js"></script>
+ <script src="../../../../../js/bootstrap.min.js"></script>
+ <script src="../../../../../js/wow.min.js"></script>
+ <script src="../../../../../js/typewriter.js"></script>
+ <script src="../../../../../js/jquery.onepagenav.js"></script>
+ <script src="../../../../../js/tree.jquery.js"></script>
+ <script src="../../../../../js/highlight.pack.js"></script>
+ <script src="../../../../../js/main.js"></script>
+ </body>
+
+</html>
+
Propchange:
tomee/site/trunk/content/tomee-8.0/docs/developer/testing/applicationcomposer/index.html
------------------------------------------------------------------------------
svn:eol-style = native
Added:
tomee/site/trunk/content/tomee-8.0/docs/developer/testing/arquillian/index.html
URL:
http://svn.apache.org/viewvc/tomee/site/trunk/content/tomee-8.0/docs/developer/testing/arquillian/index.html?rev=1847931&view=auto
==============================================================================
---
tomee/site/trunk/content/tomee-8.0/docs/developer/testing/arquillian/index.html
(added)
+++
tomee/site/trunk/content/tomee-8.0/docs/developer/testing/arquillian/index.html
Sun Dec 2 00:12:50 2018
@@ -0,0 +1,924 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="UTF-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>Apache TomEE</title>
+ <meta name="description"
+ content="Apache TomEE is a lightweight, yet powerful, JavaEE
Application server with feature rich tooling." />
+ <meta name="keywords"
content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian"
/>
+ <meta name="author" content="Luka Cvetinovic for Codrops" />
+ <link rel="icon" href="../../../../../favicon.ico">
+ <link rel="icon" type="image/png" href="../../../../../favicon.png">
+ <meta name="msapplication-TileColor" content="#80287a">
+ <meta name="theme-color" content="#80287a">
+ <link rel="stylesheet" type="text/css"
href="../../../../../css/normalize.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../../css/bootstrap.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../../css/owl.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../../css/animate.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../../fonts/font-awesome-4.1.0/css/font-awesome.min.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../../fonts/eleganticons/et-icons.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../../css/jqtree.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../../css/idea.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../../css/cardio.css">
+
+ <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="preloader">
+ <img src="../../../../../img/loader.gif" alt="Preloader image">
+ </div>
+ <nav class="navbar">
+ <div class="container">
+ <div class="row"> <div class="col-md-12">
+
+ <!-- Brand and toggle get grouped for better mobile
display -->
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle
collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
+ <span class="sr-only">Toggle
navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <span>
+
+
+ <img src="../../../../../img/logo-active.png">
+
+
+ </span>
+ Apache TomEE
+ </a>
+ </div>
+ <!-- Collect the nav links, forms, and other content
for toggling -->
+ <div class="collapse navbar-collapse"
id="bs-example-navbar-collapse-1">
+ <ul class="nav navbar-nav navbar-right
main-nav">
+ <li><a
href="../../../../../docs.html">Documentation</a></li>
+ <li><a
href="../../../../../community/index.html">Community</a></li>
+ <li><a
href="../../../../../security/index.html">Security</a></li>
+ <li><a
href="../../../../../download-ng.html">Downloads</a></li>
+ </ul>
+ </div>
+ <!-- /.navbar-collapse -->
+ </div></div>
+ </div>
+ <!-- /.container-fluid -->
+ </nav>
+
+
+ <div id="main-block" class="container section-padded">
+ <div class="row title">
+ <div class="col-md-12">
+ <div class='page-header'>
+
+ <div class='btn-toolbar pull-right' style="z-index: 2000;">
+ <div class='btn-group'>
+ <a class="btn"
href="../../../../../tomee-8.0/docs/developer/testing/arquillian/index.pdf"><i
class="fa fa-file-pdf-o"></i> Download as PDF</a>
+ </div>
+ </div>
+
+ <h1>TomEE and Arquillian</h1>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+
+ <div class="col-md-12">
+ <div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>TomEE has several arquillian adapter flavors:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>openejb-embedded: a plain embedded OpenEJB supporting most of EE
features</p>
+</li>
+<li>
+<p>tomee-embedded: a full TomEE running in the same JVM</p>
+</li>
+<li>
+<p>tomee-remote: a standard TomEE running in its own process as in
production</p>
+</li>
+<li>
+<p>tomee-webapp (not recommanded): an adapter starting from a Tomcat and
installing tomee-webapp</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_embedded_or_remote">Embedded or Remote?</h3>
+<div class="paragraph">
+<p>Big advantage of embedded adapters is to be able to debug as usual. However
it has few drawbacks which can make you
+rething this choice:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>JVM resources are available where it will likely not be the case in war
mode (src/main/resources typically)</p>
+</li>
+<li>
+<p>You can mix server and client side features when writing a test</p>
+</li>
+<li>
+<p>Classloading is a bit different by design and less isolated (test
dependencies) so you can get runtime surprises when really deploying</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>To summarize: the choice is the trade off you choose between easiness and
reality of the simulation.</p>
+</div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+in TomEE build we build the same tests against all tomee adapters in the same
build/module, this means you can use embedded adapter in dev
+and activate remote tomee too (not only cause then if there is a failure you
don’t know if you missed it locally or if it is due
+to the switch of adapter) on your continuous integration platform.
+</td>
+</tr>
+</table>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+all configurations have defaults
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_openejb_embedded">OpenEJB Embedded</h3>
+<div class="sect3">
+<h4 id="_coordinates">Coordinates</h4>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-xml"
data-lang="xml"><dependency>
+ <groupId>org.apache.tomee</groupId>
+ <artifactId>arquillian-openejb-embedded</artifactId>
+ <version>${tomee7.version}
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_arquillian_xml">arquillian.xml</h4>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">properties</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">container
properties, as in conf/system.properties (not in xml format)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">preloadClasses</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">some class
to load (ie enforce static block initialization)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">startDefaultScopes</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">should CDI
default scopes be started (includes @RequestScoped)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">singleDeploymentByArchiveName</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">names of
archives (or true for all) to dploy a single time</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Sample:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-xml" data-lang="xml"><?xml
version="1.0" encoding="UTF-8" standalone="yes"?>
+<arquillian
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://jboss.org/schema/arquillian
http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
+ <container qualifier="openejb" default="true">
+ <configuration>
+ <property name="properties">
+ # used to not have a single DataSource and be able to test the
resource resolution
+ db1 = new://Resource?type=DataSource
+ db1.JdbcUrl = jdbc:hsqldb:mem:db1
+
+ # will preload both classes, simple comma separated qualified names
work too
+ openejb.arquillian.predeploy-archives =
org.company.openejb.arquillian.openejb.archive.[SimpleArchive|SimpleArchive2]
+ </property>
+ </configuration>
+ </container>
+</arquillian></code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_tomee_embedded">TomEE Embedded</h3>
+<div class="sect3">
+<h4 id="_coordinates_2">Coordinates</h4>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-xml"
data-lang="xml"><dependency>
+ <groupId>org.apache.tomee</groupId>
+ <artifactId>arquillian-tomee-embedded</artifactId>
+ <version>${tomee7.version}
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_configuration">Configuration</h4>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">exportConfAsSystemProperty</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">export
system properties with adapter prefix(es) (ex: httpPort will be set as
tomee.httpPort)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">httpsPort</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">the HTTPS
port</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">httpPort</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">the HTTP
port</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">stopPort</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">the
shutdown port</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">dir</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">where to
create the TomEE work dir (a fake file layout is created for Tomcat
needs)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">appWorkingDir</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">where to
dump applications (<code>@Deployment</code>)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">host</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">which host
to use</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">stopHost</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">which port
to use to shutdown TomEE (port on Server configuration)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">stopCommand</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">which
command to use to shutdown TomEE</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">serverXml</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">where is
the provided server.xml</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">portRange</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">when port
are set to -1 TomEE adapter will generate an available port, if specified the
range will be used</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">preloadClasses</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">which
classes to initialize during container startup</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">quickSession</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">should the
session use a Random instead of SecureRandom (useful when the machine
doesn’t have a lot of entropy)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">unsafeEjbd</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">should EJB
allow all classes</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">unpackWars</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">unpackWARs
value in server.xml</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">properties</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">container
properties</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">webContextToUseWithEars</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">sometimes
you can need this to adjust which context the adapter uses to find the
ArquillianServletRunner</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">keepServerXmlAsThis</p></td>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">don’t replace ports etc in server.xml and use it like
it has been provided when serverXml is set</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">singleDumpByArchiveName</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dump only
once <code>@Deployment</code> archives using the name as key</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">singleDeploymentByArchiveName</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">deploy
only once <code>@Deployment</code> archives using the name as key</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">ssl</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">should
https be activated</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">withEjbRemote</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">should
EJBd remote be activated</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">keystoreFile</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">if ssl is
set to true the keystore location</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">keystorePass</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">if ssl is
set to true the keystore password</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">keystoreType</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">if ssl is
set to true the keystore type</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">clientAuth</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">should SSL
connector use clientAuth</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">keyAlias</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">if ssl is
set to true the key to use</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">sslProtocol</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">if ssl is
set to true the protocol to use</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">users</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">a map of
users (properties syntax)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">roles</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">user roles
(properties syntax)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">webResourcesCached</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">should
resources be cached or not (<code>DefaultServlet</code> caching)</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Sample:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-xml" data-lang="xml"><?xml
version="1.0" encoding="UTF-8"?>
+<arquillian
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://jboss.org/schema/arquillian
+ http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
+ <container qualifier="tomee" default="true">
+ <configuration>
+ <property name="serverXml">conf/server.xml</property>
+
+ <!-- port = -1 means random -->
+ <property name="httpPort">-1</property>
+ <property name="stopPort">-1</property>
+
+ <!-- ssl -->
+ <property name="httpsPort">-1</property>
+ <property name="ssl">false</property>
+ <property name="keystoreFile">keystore-path</property>
+ <property name="keystorePass">changeit</property>
+ <property name="keystoreType">JKS</property>
+ <property name="clientAuth">false</property>
+ <property name="keyAlias">alias</property>
+ <property name="sslProtocol">protocol</property>
+
+ <!-- where to create TomEE files -->
+ <property name="dir">target/tomee-embedded</property>
+
+ <!-- where to dump on disk applications to deploy -->
+ <property name="appWorkingDir">target/working-dir</property>
+
+ <!-- optional - limit the port allowed when random -->
+ <property name="portRange">20001-30000</property>
+
+ <!-- container config -->
+ <property name="properties">
+ # same as embedded case
+ </property>
+
+ <!-- Deployer config -->
+ <property name="deployerProperties">
+ # openejb.deployer.binaries.use=true
+ # openejb.deployer.forced.appId=[name]
+ # openejb.deployer.save-deployments=false
+ </property>
+ </configuration>
+ </container>
+</arquillian></code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_tomee_remote">TomEE Remote</h3>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+if a server is already started on host:port then it will be used instead of
starting the configured TomEE type.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>To use a custom instance with arquillian ensure to have ejbd and tomee
webapp activated. A way is to have in <code>conf/system.properties</code> these
entries:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code>tomee.remote.support=true
+openejb.system.apps=true
+
+# you can customize it depending the security level you need on the instance
+tomee.serialization.class.whitelist =
+tomee.serialization.class.blacklist =
org.codehaus.groovy.runtime.,org.apache.commons.collections.functors.,org.apache.xalan,java.lang.Process</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>For really remote instances (= not on localhost) you need the
<code>deployerProperties</code> of previous snippet too:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-xml" data-lang="xml"><?xml
version="1.0" encoding="UTF-8"?>
+<arquillian
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://jboss.org/schema/arquillian
+ http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
+ <container qualifier="tomee" default="true">
+ <configuration>
+ <!-- ... -->
+ <property name="deployerProperties">
+ openejb.deployer.binaries.use=true
+ openejb.deployer.save-deployments=false
+ </property>
+ </configuration>
+ </container>
+</arquillian></code></pre>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_coordinates_3">Coordinates</h4>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-xml"
data-lang="xml"><dependency>
+ <groupId>org.apache.tomee</groupId>
+ <artifactId>arquillian-tomee-remote</artifactId>
+ <version>${tomee7.version}
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_configuration_2">Configuration</h4>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">exportConfAsSystemProperty</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">export
system properties with adapter prefix(es) (ex: httpPort will be set as
tomee.httpPort)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">httpsPort</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">the HTTPS
port</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">httpPort</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">the HTTP
port</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">stopPort</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">the
shutdown port</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">dir</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">where to
create the TomEE work dir (a fake file layout is created for Tomcat
needs)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">appWorkingDir</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">where to
dump applications (<code>@Deployment</code>)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">host</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">which host
to use</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">stopHost</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">which port
to use to shutdown TomEE (port on Server configuration)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">stopCommand</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">which
command to use to shutdown TomEE</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">serverXml</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">where is
the provided server.xml</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">portRange</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">when port
are set to -1 TomEE adapter will generate an available port, if specified the
range will be used</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">preloadClasses</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">which
classes to initialize during container startup</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">quickSession</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">should the
session use a Random instead of SecureRandom (useful when the machine
doesn’t have a lot of entropy)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">unsafeEjbd</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">should EJB
allow all classes</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">unpackWars</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">unpackWARs
value in server.xml</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">properties</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">container
properties</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">webContextToUseWithEars</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">sometimes
you can need this to adjust which context the adapter uses to find the
ArquillianServletRunner</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">keepServerXmlAsThis</p></td>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">don’t replace ports etc in server.xml and use it like
it has been provided when serverXml is set</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">singleDumpByArchiveName</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dump only
once <code>@Deployment</code> archives using the name as key</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">singleDeploymentByArchiveName</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">deploy
only once <code>@Deployment</code> archives using the name as key</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">groupId</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">the maven
groupId of the TomEE (or not) artifact</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">artifactId</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">the maven
artifactId of the TomEE (or not) artifact</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">version</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">the maven
version of the TomEE (or not) artifact</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">classifier</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">the maven
classifier of the TomEE (or not) artifact</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">the maven
type of the TomEE (or not) artifact (should be zip)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">removeUnusedWebapps</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">should
default webapps (ROOT, manager, …​) be removed</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">ajpPort</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">the ajp
port if used</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">conf</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">a folder
to synchronize with TomEE conf folder</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">bin</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">a folder
to synchronize with TomEE bin folder</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">lib</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">a folder
to synchronize with TomEE lib folder</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">endorsed</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">a folder
to synchronize with TomEE endorsed folder</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">javaagent</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">a list
(flat format) of javaagent to add when launching tomee, can use maven
coordinates if prefixed with <code>mvn:</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">additionalLibs</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">a list
(flat format) of library to add to TomEE libraries, can use paths of maven
coordinates when prefixed with <code>mvn:</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">cleanOnStartUp</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">should
TomEE folder be deleted on startup if exists</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">debug</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">should the
container run in debug mode (<code>-Dopenejb.server.debug=true</code> activates
it without touching the configuration)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">debugPort</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">if
activated which port to use to debug</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">catalina_opts</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">equivalent
to <code>CATALINA_OPTS</code> environment variable</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">simple_log</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">should
logs be inline</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">deployerProperties</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">deployer
properties, useful when not deploying on an instance managed by the build
(remote instance typically)</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Sample:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-xml" data-lang="xml"><?xml
version="1.0" encoding="UTF-8"?>
+<arquillian
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://jboss.org/schema/arquillian
+ http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
+ <container qualifier="tomee" default="true">
+ <configuration>
+ <property name="serverXml">conf/server.xml</property>
+
+ <!-- tomee zip to use -->
+ <property name="groupId">org.apache.tomee</property>
+ <property name="artifactId">apache-tomee</property>
+ <property name="version">LATEST</property>
+ <property name="type">zip</property>
+
+ <!-- tomee provided files, ignored by default -->
+ <property name="bin">src/test/tomee/bin</property>
+ <property name="conf">src/test/tomee/conf</property>
+ <property name="lib">src/test/tomee/lib</property>
+
+ <!--
+ remote debugging,
+ -Dopenejb.server.debug can activate it too
+ -->
+ <property name="debug">false</property>
+ <property name="debugPort">5005</property>
+
+ <!-- nice one line logging -->
+ <property name="simpleLog">true</property>
+
+ <!-- jvm config -->
+ <property name="catalina_opts">-XX:-UseParallelGC</property>
+
+ <!-- remove if exist -->
+ <property name="cleanOnStartUp">true</property>
+
+ <!-- remove default webapps -->
+ <property name="removeunusedWebapps">true</property>
+
+ <!-- port = -1 means random -->
+ <property name="httpPort">-1</property>
+ <property name="stopPort">-1</property>
+
+ <!-- where to create TomEE -->
+ <property name="dir">target/apache-tomee</property>
+
+ <!-- where to dump on disk applications to deploy -->
+ <property name="appWorkingDir">target/working-dir</property>
+
+ <!-- optional - limit the port allowed when random -->
+ <property name="portRange">20001-30000</property>
+
+ <!-- container config -->
+ <property name="properties">
+ # same as embedded case
+ </property>
+
+ <!-- we monitor the test with sirona -->
+ <property name="javaagent">
+ mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
+ </property>
+
+ <!-- Deployer config -->
+ <property name="deployerProperties">
+ # openejb.deployer.binaries.use=true
+ # openejb.deployer.forced.appId=[name]
+ # openejb.deployer.save-deployments=false
+ </property>
+
+ </configuration>
+ </container>
+</arquillian></code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_multiple_instances">Multiple instances</h3>
+<div class="paragraph">
+<p>With arquillian you can create cluster or isolated instances. Here is a
sample <code>arquillian.xml</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-xml" data-lang="xml"><?xml
version="1.0" encoding="UTF-8"?>
+<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://jboss.org/schema/arquillian
+ http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
+ <group qualifier="tomee-cluster">
+ <container qualifier="tomee-1">
+ <configuration>
+ <property name="httpPort">-1</property>
+ <property name="stopPort">-1</property>
+ <property name="ajpPort">-1</property>
+ <property name="dir">target/tomee1</property>
+ <property name="appWorkingDir">target/wd1</property>
+ </configuration>
+ </container>
+ <container qualifier="tomee-2">
+ <configuration>
+ <property name="httpPort">-1</property>
+ <property name="stopPort">-1</property>
+ <property name="ajpPort">-1</property>
+ <property name="dir">target/tomee2</property>
+ <property name="appWorkingDir">target/wd2</property>
+ </configuration>
+ </container>
+ </group>
+</arquillian></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Then in your test just specify the container you are testing against:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java"
data-lang="java">@RunWith(Arquillian.class)
+public class MultipleTomEETest {
+ @Deployment(name = "war1", testable = false)
+ @TargetsContainer("tomee-1")
+ public static WebArchive war1() {
+ return /* ... */;
+ }
+
+ @Deployment(name = "war2", testable = false)
+ @TargetsContainer("tomee-2")
+ public static WebArchive war2() {
+ return /* ... */;
+ }
+
+ @Test
+ @OperateOnDeployment("war1")
+ public void testRunningInDep1(
+ @ArquillianResource URL url) {
+ // test on tomee 1, url is contextual
+ }
+
+ @Test
+ @OperateOnDeployment("war2")
+ public void testRunningInDep1(
+ @ArquillianResource URL url) {
+ // test on tomee 1, url is contextual
+ }
+}</code></pre>
+</div>
+</div>
+</div>
+ </div>
+
+ </div>
+ </div>
+<footer>
+ <div class="container">
+ <div class="row">
+ <div class="col-sm-6 text-center-mobile">
+ <h3 class="white">Be simple. Be
certified. Be Tomcat.</h3>
+ <h5 class="light regular
light-white">"A good application in a good server"</h5>
+ <ul class="social-footer">
+ <li><a
href="https://www.facebook.com/ApacheTomEE/"><i class="fa
fa-facebook"></i></a></li>
+ <li><a
href="https://twitter.com/apachetomee"><i class="fa fa-twitter"></i></a></li>
+ <li><a
href="https://plus.google.com/communities/105208241852045684449"><i class="fa
fa-google-plus"></i></a></li>
+ </ul>
+ </div>
+ <div class="col-sm-6 text-center-mobile">
+ <div class="row opening-hours">
+ <div class="col-sm-3
text-center-mobile">
+ <h5><a
href="../../../../../latest/docs/documentation.html"
class="white">Documentation</a></h5>
+ <ul
class="list-unstyled">
+ <li><a
href="../../../../../latest/docs/admin/configuration/index.html" class="regular
light-white">How to configure</a></li>
+ <li><a
href="../../../../../latest/docs/admin/file-layout.html" class="regular
light-white">Dir. Structure</a></li>
+ <li><a
href="../../../../../latest/docs/developer/testing/index.html" class="regular
light-white">Testing</a></li>
+ <li><a
href="../../../../../latest/docs/admin/cluster/index.html" class="regular
light-white">Clustering</a></li>
+ </ul>
+ </div>
+ <div class="col-sm-3
text-center-mobile">
+ <h5><a
href="../../../../../examples.html" class="white">Examples</a></h5>
+ <ul
class="list-unstyled">
+ <li><a
href="../../../../../latest/examples/simple-cdi-interceptor.html"
class="regular light-white">CDI Interceptor</a></li>
+ <li><a
href="../../../../../latest/examples/rest-cdi.html" class="regular
light-white">REST with CDI</a></li>
+ <li><a
href="../../../../../latest/examples/ejb-examples.html" class="regular
light-white">EJB</a></li>
+ <li><a
href="../../../../../latest/examples/jsf-managedBean-and-ejb.html"
class="regular light-white">JSF</a></li>
+ </ul>
+ </div>
+ <div class="col-sm-3
text-center-mobile">
+ <h5><a
href="../../../../../community/index.html" class="white">Community</a></h5>
+ <ul
class="list-unstyled">
+ <li><a
href="../../../../../community/contributors.html" class="regular
light-white">Contributors</a></li>
+ <li><a
href="../../../../../community/social.html" class="regular
light-white">Social</a></li>
+ <li><a
href="../../../../../community/sources.html" class="regular
light-white">Sources</a></li>
+ </ul>
+ </div>
+ <div class="col-sm-3
text-center-mobile">
+ <h5><a
href="../../../../../security/index.html" class="white">Security</a></h5>
+ <ul
class="list-unstyled">
+ <li><a
href="http://apache.org/security" target="_blank" class="regular
light-white">Apache Security</a></li>
+ <li><a
href="http://apache.org/security/projects.html" target="_blank" class="regular
light-white">Security Projects</a></li>
+ <li><a
href="http://cve.mitre.org" target="_blank" class="regular
light-white">CVE</a></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row bottom-footer text-center-mobile">
+ <div class="col-sm-12 light-white">
+ <p>Copyright © 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>
+ </div>
+ </div>
+ </div>
+ </footer>
+ <!-- Holder for mobile navigation -->
+ <div class="mobile-nav">
+ <ul>
+ <li><a
hef="../../../../../latest/docs/admin/index.html">Administrators</a>
+ <li><a
hef="../../../../../latest/docs/developer/index.html">Developers</a>
+ <li><a
hef="../../../../../latest/docs/advanced/index.html">Advanced</a>
+ <li><a hef="../../../../../community/index.html">Community</a>
+ </ul>
+ <a href="#" class="close-link"><i class="arrow_up"></i></a>
+ </div>
+ <!-- Scripts -->
+ <script src="../../../../../js/jquery-1.11.1.min.js"></script>
+ <script src="../../../../../js/owl.carousel.min.js"></script>
+ <script src="../../../../../js/bootstrap.min.js"></script>
+ <script src="../../../../../js/wow.min.js"></script>
+ <script src="../../../../../js/typewriter.js"></script>
+ <script src="../../../../../js/jquery.onepagenav.js"></script>
+ <script src="../../../../../js/tree.jquery.js"></script>
+ <script src="../../../../../js/highlight.pack.js"></script>
+ <script src="../../../../../js/main.js"></script>
+ </body>
+
+</html>
+
Propchange:
tomee/site/trunk/content/tomee-8.0/docs/developer/testing/arquillian/index.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: tomee/site/trunk/content/tomee-8.0/docs/developer/testing/index.html
URL:
http://svn.apache.org/viewvc/tomee/site/trunk/content/tomee-8.0/docs/developer/testing/index.html?rev=1847931&view=auto
==============================================================================
--- tomee/site/trunk/content/tomee-8.0/docs/developer/testing/index.html (added)
+++ tomee/site/trunk/content/tomee-8.0/docs/developer/testing/index.html Sun
Dec 2 00:12:50 2018
@@ -0,0 +1,202 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="UTF-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>Apache TomEE</title>
+ <meta name="description"
+ content="Apache TomEE is a lightweight, yet powerful, JavaEE
Application server with feature rich tooling." />
+ <meta name="keywords"
content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian"
/>
+ <meta name="author" content="Luka Cvetinovic for Codrops" />
+ <link rel="icon" href="../../../../favicon.ico">
+ <link rel="icon" type="image/png" href="../../../../favicon.png">
+ <meta name="msapplication-TileColor" content="#80287a">
+ <meta name="theme-color" content="#80287a">
+ <link rel="stylesheet" type="text/css"
href="../../../../css/normalize.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../css/bootstrap.css">
+ <link rel="stylesheet" type="text/css" href="../../../../css/owl.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../css/animate.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../fonts/font-awesome-4.1.0/css/font-awesome.min.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../fonts/eleganticons/et-icons.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../css/jqtree.css">
+ <link rel="stylesheet" type="text/css" href="../../../../css/idea.css">
+ <link rel="stylesheet" type="text/css"
href="../../../../css/cardio.css">
+
+ <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="preloader">
+ <img src="../../../../img/loader.gif" alt="Preloader image">
+ </div>
+ <nav class="navbar">
+ <div class="container">
+ <div class="row"> <div class="col-md-12">
+
+ <!-- Brand and toggle get grouped for better mobile
display -->
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle
collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
+ <span class="sr-only">Toggle
navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <span>
+
+
+ <img src="../../../../img/logo-active.png">
+
+
+ </span>
+ Apache TomEE
+ </a>
+ </div>
+ <!-- Collect the nav links, forms, and other content
for toggling -->
+ <div class="collapse navbar-collapse"
id="bs-example-navbar-collapse-1">
+ <ul class="nav navbar-nav navbar-right
main-nav">
+ <li><a
href="../../../../docs.html">Documentation</a></li>
+ <li><a
href="../../../../community/index.html">Community</a></li>
+ <li><a
href="../../../../security/index.html">Security</a></li>
+ <li><a
href="../../../../download-ng.html">Downloads</a></li>
+ </ul>
+ </div>
+ <!-- /.navbar-collapse -->
+ </div></div>
+ </div>
+ <!-- /.container-fluid -->
+ </nav>
+
+
+ <div id="main-block" class="container section-padded">
+ <div class="row title">
+ <div class="col-md-12">
+ <div class='page-header'>
+
+ <div class='btn-toolbar pull-right' style="z-index: 2000;">
+ <div class='btn-group'>
+ <a class="btn"
href="../../../../tomee-8.0/docs/developer/testing/index.pdf"><i class="fa
fa-file-pdf-o"></i> Download as PDF</a>
+ </div>
+ </div>
+
+ <h1>Unit Testing</h1>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+
+ <div class="col-md-12">
+ <div class="ulist">
+<ul>
+<li>
+<p><a href="applicationcomposer/index.html">ApplicationComposer</a>:
Lightweight tests</p>
+</li>
+<li>
+<p><a href="arquillian/index.html">Arquillian</a>: The standard for EE
tests</p>
+</li>
+<li>
+<p><a href="other/index.html">Going futher</a>: OpenEJB JUnit, TomEE
Embedded…​</p>
+</li>
+</ul>
+</div>
+ </div>
+
+ </div>
+ </div>
+<footer>
+ <div class="container">
+ <div class="row">
+ <div class="col-sm-6 text-center-mobile">
+ <h3 class="white">Be simple. Be
certified. Be Tomcat.</h3>
+ <h5 class="light regular
light-white">"A good application in a good server"</h5>
+ <ul class="social-footer">
+ <li><a
href="https://www.facebook.com/ApacheTomEE/"><i class="fa
fa-facebook"></i></a></li>
+ <li><a
href="https://twitter.com/apachetomee"><i class="fa fa-twitter"></i></a></li>
+ <li><a
href="https://plus.google.com/communities/105208241852045684449"><i class="fa
fa-google-plus"></i></a></li>
+ </ul>
+ </div>
+ <div class="col-sm-6 text-center-mobile">
+ <div class="row opening-hours">
+ <div class="col-sm-3
text-center-mobile">
+ <h5><a
href="../../../../latest/docs/documentation.html"
class="white">Documentation</a></h5>
+ <ul
class="list-unstyled">
+ <li><a
href="../../../../latest/docs/admin/configuration/index.html" class="regular
light-white">How to configure</a></li>
+ <li><a
href="../../../../latest/docs/admin/file-layout.html" class="regular
light-white">Dir. Structure</a></li>
+ <li><a
href="../../../../latest/docs/developer/testing/index.html" class="regular
light-white">Testing</a></li>
+ <li><a
href="../../../../latest/docs/admin/cluster/index.html" class="regular
light-white">Clustering</a></li>
+ </ul>
+ </div>
+ <div class="col-sm-3
text-center-mobile">
+ <h5><a
href="../../../../examples.html" class="white">Examples</a></h5>
+ <ul
class="list-unstyled">
+ <li><a
href="../../../../latest/examples/simple-cdi-interceptor.html" class="regular
light-white">CDI Interceptor</a></li>
+ <li><a
href="../../../../latest/examples/rest-cdi.html" class="regular
light-white">REST with CDI</a></li>
+ <li><a
href="../../../../latest/examples/ejb-examples.html" class="regular
light-white">EJB</a></li>
+ <li><a
href="../../../../latest/examples/jsf-managedBean-and-ejb.html" class="regular
light-white">JSF</a></li>
+ </ul>
+ </div>
+ <div class="col-sm-3
text-center-mobile">
+ <h5><a
href="../../../../community/index.html" class="white">Community</a></h5>
+ <ul
class="list-unstyled">
+ <li><a
href="../../../../community/contributors.html" class="regular
light-white">Contributors</a></li>
+ <li><a
href="../../../../community/social.html" class="regular
light-white">Social</a></li>
+ <li><a
href="../../../../community/sources.html" class="regular
light-white">Sources</a></li>
+ </ul>
+ </div>
+ <div class="col-sm-3
text-center-mobile">
+ <h5><a
href="../../../../security/index.html" class="white">Security</a></h5>
+ <ul
class="list-unstyled">
+ <li><a
href="http://apache.org/security" target="_blank" class="regular
light-white">Apache Security</a></li>
+ <li><a
href="http://apache.org/security/projects.html" target="_blank" class="regular
light-white">Security Projects</a></li>
+ <li><a
href="http://cve.mitre.org" target="_blank" class="regular
light-white">CVE</a></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row bottom-footer text-center-mobile">
+ <div class="col-sm-12 light-white">
+ <p>Copyright © 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>
+ </div>
+ </div>
+ </div>
+ </footer>
+ <!-- Holder for mobile navigation -->
+ <div class="mobile-nav">
+ <ul>
+ <li><a
hef="../../../../latest/docs/admin/index.html">Administrators</a>
+ <li><a
hef="../../../../latest/docs/developer/index.html">Developers</a>
+ <li><a hef="../../../../latest/docs/advanced/index.html">Advanced</a>
+ <li><a hef="../../../../community/index.html">Community</a>
+ </ul>
+ <a href="#" class="close-link"><i class="arrow_up"></i></a>
+ </div>
+ <!-- Scripts -->
+ <script src="../../../../js/jquery-1.11.1.min.js"></script>
+ <script src="../../../../js/owl.carousel.min.js"></script>
+ <script src="../../../../js/bootstrap.min.js"></script>
+ <script src="../../../../js/wow.min.js"></script>
+ <script src="../../../../js/typewriter.js"></script>
+ <script src="../../../../js/jquery.onepagenav.js"></script>
+ <script src="../../../../js/tree.jquery.js"></script>
+ <script src="../../../../js/highlight.pack.js"></script>
+ <script src="../../../../js/main.js"></script>
+ </body>
+
+</html>
+
Propchange: tomee/site/trunk/content/tomee-8.0/docs/developer/testing/index.html
------------------------------------------------------------------------------
svn:eol-style = native