You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2018/11/30 23:04:16 UTC

[01/20] tomee git commit: Docs old and new

Repository: tomee
Updated Branches:
  refs/heads/master 3f07dc964 -> d5fcddc9c


http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomee-embedded-maven-plugin.mdtext
----------------------------------------------------------------------
diff --git a/docs/tomee-embedded-maven-plugin.mdtext b/docs/tomee-embedded-maven-plugin.mdtext
new file mode 100644
index 0000000..8461402
--- /dev/null
+++ b/docs/tomee-embedded-maven-plugin.mdtext
@@ -0,0 +1,956 @@
+Title: TomEE Embedded Maven Plugin
+
+[TomEE Maven Plugin](tomee-maven-plugin.html) provides a nice way to run "as in production" a server fully configured
+keeping the configuration in the project (easiness of sharing between team members). However for modern web development
+the fact to run the "exploded war" prevents to develop web resources in place. TomEE embedded maven plugin
+solves it directly allowing to directly deploy the war project in place using "classpath as war" option.
+
+It also allows to use a flat classpath deployment which is often use with microservices.
+
+<h2><a name="tomee-embedded:run"></a>tomee-embedded:run</h2>
+      
+<p><b>Full name</b>:</p>
+      
+<p>org.apache.tomee.maven:tomee-embedded-maven-plugin:7.0.0-M1:run</p>
+      
+<p><b>Description</b>:</p>
+      
+<div>Run an Embedded TomEE.</div>
+      
+<p><b>Attributes</b>:</p>
+      
+<ul>
+        
+<li>Requires a Maven project to be executed.</li>
+        
+<li>Requires dependency resolution of artifacts in scope: <tt>runtime+system</tt>.</li>
+        
+<li>Requires dependency collection of artifacts in scope: <tt>runtime</tt>.</li>
+      </ul>
+      
+<div class="section">
+<h3><a name="Optional_Parameters"></a>Optional Parameters</h3>
+        
+<table class="bodyTable" border="0">
+          
+<tr class="a">
+            
+<th>Name</th>
+            
+<th>Type</th>
+            
+<th>Since</th>
+            
+<th>Description</th>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#ajpPort">ajpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8009</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.ajp</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#applicationCopyFolder">applicationCopyFolder</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/tomee-embedded/applications</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.application-copy</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#applicationScopes">applicationScopes</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#applications">applications</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#classpathAsWar">classpathAsWar</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.classpathAsWar</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#clientAuth">clientAuth</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-embedded-plugin.clientAuth</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#containerProperties">containerProperties</a></b></td>
+            
+<td><tt>Map</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#context">context</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-embedded-plugin.context</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#dir">dir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/apache-tomee-embedded</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.lib</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#docBase">docBase</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/webapp</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.docBase</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#forceJspDevelopment">forceJspDevelopment</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>force webapp to be reloadable<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.jsp-development</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#host">host</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>localhost</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.host</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#httpPort">httpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8080</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.http</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#httpsPort">httpsPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8443</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.httpsPort</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#inlinedServerXml">inlinedServerXml</a></b></td>
+            
+<td><tt>PlexusConfiguration</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#inlinedTomEEXml">inlinedTomEEXml</a></b></td>
+            
+<td><tt>PlexusConfiguration</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#keepServerXmlAsThis">keepServerXmlAsThis</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.keepServerXmlAsThis</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#keyAlias">keyAlias</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-embedded-plugin.keyAlias</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#keystoreFile">keystoreFile</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-embedded-plugin.keystoreFile</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#keystorePass">keystorePass</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-embedded-plugin.keystorePass</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#keystoreType">keystoreType</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>JKS</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.keystoreType</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#mavenLog">mavenLog</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.mavenLog</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#modules">modules</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.outputDirectory}</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.modules</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#packaging">packaging</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.packaging}</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#quickSession">quickSession</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.quickSession</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#roles">roles</a></b></td>
+            
+<td><tt>Map</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#serverXml">serverXml</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#skipCurrentProject">skipCurrentProject</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.skip-current-project</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#skipHttp">skipHttp</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.skipHttp</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#ssl">ssl</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.ssl</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#sslProtocol">sslProtocol</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-embedded-plugin.sslProtocol</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#stopPort">stopPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8005</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.stop</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#useProjectClasspath">useProjectClasspath</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.useProjectClasspath</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#users">users</a></b></td>
+            
+<td><tt>Map</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#warFile">warFile</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/${project.build.finalName}</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webResourceCached">webResourceCached</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.webResourceCached</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#withEjbRemote">withEjbRemote</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-embedded-plugin.withEjbRemote</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#workDir">workDir</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/tomee-embedded-work</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.work</tt>.</td>
+          </tr>
+        </table>
+      </div>
+      
+<div class="section">
+<h3><a name="Parameter_Details"></a>Parameter Details</h3>
+        
+<p><b><a name="ajpPort">ajpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.ajp</tt></li>
+          
+<li><b>Default</b>: <tt>8009</tt></li>
+        </ul><hr />
+<p><b><a name="applicationCopyFolder">applicationCopyFolder</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.application-copy</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/tomee-embedded/applications</tt></li>
+        </ul><hr />
+<p><b><a name="applicationScopes">applicationScopes</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="applications">applications</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="classpathAsWar">classpathAsWar</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.classpathAsWar</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="clientAuth">clientAuth</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.clientAuth</tt></li>
+        </ul><hr />
+<p><b><a name="containerProperties">containerProperties</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.Map</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="context">context</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.context</tt></li>
+        </ul><hr />
+<p><b><a name="dir">dir</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.lib</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/apache-tomee-embedded</tt></li>
+        </ul><hr />
+<p><b><a name="docBase">docBase</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.docBase</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/webapp</tt></li>
+        </ul><hr />
+<p><b><a name="forceJspDevelopment">forceJspDevelopment</a>:</b></p>
+        
+<div>force webapp to be reloadable</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.jsp-development</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="host">host</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.host</tt></li>
+          
+<li><b>Default</b>: <tt>localhost</tt></li>
+        </ul><hr />
+<p><b><a name="httpPort">httpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.http</tt></li>
+          
+<li><b>Default</b>: <tt>8080</tt></li>
+        </ul><hr />
+<p><b><a name="httpsPort">httpsPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.httpsPort</tt></li>
+          
+<li><b>Default</b>: <tt>8443</tt></li>
+        </ul><hr />
+<p><b><a name="inlinedServerXml">inlinedServerXml</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>org.codehaus.plexus.configuration.PlexusConfiguration</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="inlinedTomEEXml">inlinedTomEEXml</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>org.codehaus.plexus.configuration.PlexusConfiguration</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="keepServerXmlAsThis">keepServerXmlAsThis</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.keepServerXmlAsThis</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="keyAlias">keyAlias</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.keyAlias</tt></li>
+        </ul><hr />
+<p><b><a name="keystoreFile">keystoreFile</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.keystoreFile</tt></li>
+        </ul><hr />
+<p><b><a name="keystorePass">keystorePass</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.keystorePass</tt></li>
+        </ul><hr />
+<p><b><a name="keystoreType">keystoreType</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.keystoreType</tt></li>
+          
+<li><b>Default</b>: <tt>JKS</tt></li>
+        </ul><hr />
+<p><b><a name="mavenLog">mavenLog</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.mavenLog</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="modules">modules</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.modules</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.outputDirectory}</tt></li>
+        </ul><hr />
+<p><b><a name="packaging">packaging</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.packaging}</tt></li>
+        </ul><hr />
+<p><b><a name="quickSession">quickSession</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.quickSession</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="roles">roles</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.Map</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="serverXml">serverXml</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="skipCurrentProject">skipCurrentProject</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.skip-current-project</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="skipHttp">skipHttp</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.skipHttp</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="ssl">ssl</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.ssl</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="sslProtocol">sslProtocol</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.sslProtocol</tt></li>
+        </ul><hr />
+<p><b><a name="stopPort">stopPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.stop</tt></li>
+          
+<li><b>Default</b>: <tt>8005</tt></li>
+        </ul><hr />
+<p><b><a name="useProjectClasspath">useProjectClasspath</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.useProjectClasspath</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="users">users</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.Map</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="warFile">warFile</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/${project.build.finalName}</tt></li>
+        </ul><hr />
+<p><b><a name="webResourceCached">webResourceCached</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.webResourceCached</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="withEjbRemote">withEjbRemote</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-embedded-plugin.withEjbRemote</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="workDir">workDir</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.work</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/tomee-embedded-work</tt></li>
+        </ul>
+      </div>
+  
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomee-jaas.mdtext
----------------------------------------------------------------------
diff --git a/docs/tomee-jaas.mdtext b/docs/tomee-jaas.mdtext
new file mode 100644
index 0000000..d924933
--- /dev/null
+++ b/docs/tomee-jaas.mdtext
@@ -0,0 +1,69 @@
+Title: JAAS and TomEE
+
+# Purpose
+
+You want to use JAAS in TomEE with custom (or OpenEJB) LoginModules.
+
+# Solution
+
+TomEE tries to keep as possible as it is Tomcat so simply
+configure your JAAS LoginModule as in Tomcat.
+
+Note: only the first one will be used.
+
+# Configuration
+
+Add to your `CATALINA_OPTS` the `java.security.auth.login.config` system property:
+
+    -Djava.security.auth.login.config=$CATALINA_BASE/conf/login.config
+
+Configure your realm in server.xml file
+
+    <?xml version='1.0' encoding='utf-8'?>
+    <Server port="8005" shutdown="SHUTDOWN">
+      <Listener className="org.apache.tomee.loader.OpenEJBListener" />
+      <Listener className="org.apache.catalina.security.SecurityListener" />
+    
+      <Service name="Catalina">
+        <Connector port="8080" protocol="HTTP/1.1" 
+                   connectionTimeout="20000" 
+                   redirectPort="8443" />
+        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
+        <Engine name="Catalina" defaultHost="localhost">
+          <!-- here is the magic -->
+          <Realm className="org.apache.catalina.realm.JAASRealm" appName="PropertiesLogin"
+                 userClassNames="org.apache.openejb.core.security.jaas.UserPrincipal"
+                 roleClassNames="org.apache.openejb.core.security.jaas.GroupPrincipal">
+          </Realm>
+    
+          <Host name="localhost"  appBase="webapps"
+                unpackWARs="true" autoDeploy="true" />
+        </Engine>
+      </Service>
+    </Server>
+
+Configure your `login.config` file
+
+    PropertiesLogin {
+        org.apache.openejb.core.security.jaas.PropertiesLoginModule required
+        Debug=false
+        UsersFile="users.properties"
+        GroupsFile="groups.properties";
+    };
+
+
+Configure your login module specifically (`users.properties` for snippets of this page for instance).
+
+Place `users.properties` and `groups.properties` files in `$CATALINA_BASE/conf/` folder.
+`users.properties` file contains user name and associated password entries, ex.:
+
+    me=password
+    tomee=tomee
+
+`groups.properties` file specifies groups and their users, ex.:
+
+    my-role=me
+    manager-gui=tomee,me
+    tomee-admin=tomee
+
+**NOTE**: `users.properties` and `groups.properties` file names and file location are fixed. If other names are used, the files must be placed in `%CATALINA_BASE/lib/` folder instead.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomee-logging-in-eclipse.mdtext
----------------------------------------------------------------------
diff --git a/docs/tomee-logging-in-eclipse.mdtext b/docs/tomee-logging-in-eclipse.mdtext
new file mode 100644
index 0000000..7922645
--- /dev/null
+++ b/docs/tomee-logging-in-eclipse.mdtext
@@ -0,0 +1,10 @@
+Title: How to use JULI for TomEE in WTP?
+
+It seems that WTP doesn't manage correctly Tomcat logging configuration (which needs to be done through
+system properties). A quick workaround is to add these properties manually:
+
+    -Djava.util.logging.config.file="<tomee>/conf/logging.properties"
+    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
+
+More information on: http://wiki.eclipse.org/WTP_Tomcat_FAQ#How_do_I_enable_the_JULI_logging_in_a_Tomcat_5.5_Server_instance.3F
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomee-logging.mdtext
----------------------------------------------------------------------
diff --git a/docs/tomee-logging.mdtext b/docs/tomee-logging.mdtext
new file mode 100644
index 0000000..5d4ed56
--- /dev/null
+++ b/docs/tomee-logging.mdtext
@@ -0,0 +1,29 @@
+Title:
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+Logging in TomEE is configured using the conf/logging.properties file. Here are some of the benefits: 
+
+ You do not have to author a logging.properties from scratch. 
+
+ You get one with sensible defaults.      
+
+ If you did modify the default file, and you wanted to revert back to the default file generated by TomEE, all you have to do is 
+
+  Delete or rename the file e.g. rename it to logging.properties.BAK . 
+ 
+ Restart the server
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomee-maven-plugin.mdtext
----------------------------------------------------------------------
diff --git a/docs/tomee-maven-plugin.mdtext b/docs/tomee-maven-plugin.mdtext
new file mode 100644
index 0000000..27be754
--- /dev/null
+++ b/docs/tomee-maven-plugin.mdtext
@@ -0,0 +1,144 @@
+Title: TomEE Maven Plugin
+
+Inspired by the Jetty Maven Plugin, the TomEE Maven Plugin is a feature-rich
+plugin that allows for:
+
+ - Easy provisioning of a TomEE server
+ - Server start and stop
+ - Application deployment and undeployment
+
+Simply add the following to the <plugins>, and optionally the <pluginManagement>), section of your `pom.xml`
+
+    <plugins>
+        <plugin>
+          <groupId>org.apache.openejb.maven</groupId>
+          <artifactId>tomee-maven-plugin</artifactId>
+          <version>1.7.1</version>
+          <configuration>
+            <tomeeVersion>1.7.1</tomeeVersion>
+            <tomeeClassifier>plus</tomeeClassifier>
+          </configuration>
+        </plugin>
+    </plugins>
+
+###Plugin Goals
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>Goal</th>
+<th>Description</th></tr>
+<tr class="b">
+<td><a href="maven/build-mojo.html">tomee:build</a></td>
+<td>Create TomEE, but do not run it.</td></tr>
+<tr class="a">
+<td><a href="maven/configtest-mojo.html">tomee:configtest</a></td>
+<td>Run the Apache Tomcat `configtest` command.</td></tr>
+<tr class="b">
+<td><a href="maven/debug-mojo.html">tomee:debug</a></td>
+<td>Same as `run` but with debug activated on the default or specified port.</td></tr>
+<tr class="a">
+<td><a href="maven/deploy-mojo.html">tomee:deploy</a></td>
+<td>Deploy an application in a running TomEE.</td></tr>
+<tr class="b">
+<td><a href="maven/exec-mojo.html">tomee:exec</a></td>
+<td>Creates an executable jar of the application.</td></tr>
+<tr class="a">
+<td><a href="maven/help-mojo.html">tomee:help</a></td>
+<td>Display help information on the tomee-maven-plugin.<br />
+Call <code>mvn tomee:help -Ddetail=true
+-Dgoal=&lt;goal-name&gt;</code> to display parameter details.</td></tr>
+<tr class="b">
+<td><a href="maven/list-mojo.html">tomee:list</a></td>
+<td>Largely inspired by the OpenEJB command helper, but with some differences. List deployed EJB's in a running TomEE.</td></tr>
+<tr class="a">
+<td><a href="maven/run-mojo.html">tomee:run</a></td>
+<td>Start and wait for TomEE.</td></tr>
+<tr class="b">
+<td><a href="maven/start-mojo.html">tomee:start</a></td>
+<td>Start TomEE and continue.</td></tr>
+<tr class="a">
+<td><a href="maven/stop-mojo.html">tomee:stop</a></td>
+<td>Stop a TomEE started with start command.</td></tr>
+<tr class="b">
+<td><a href="maven/undeploy-mojo.html">tomee:undeploy</a></td>
+<td>Undeploy an application in a running TomEE</td></tr></table>
+
+
+Note that for the tomee:deploy and tomee:undeploy goals, the path can either be specified within the <configuration/> section of the `pom.xml` using the <path> parameter, or it can be passed via the user property tomee-plugin.archive. If a relative path is passed for the deploy path archive, this must be relative to the TomEE server.
+
+Note 2: running tomee maven plugin you can type 'quit' directly in the console to shutdown correctly the
+server. 'reload' is also available when internal openejb application is deployed.
+
+###More Tweaks
+
+The lib tag allows to enrich the container with some additional libraries.
+
+Some interesting patterns in addition to the default maven formats are supported.
+
+* remove:&lt;some prefix of jar in lib folder&gt;: remove all jar starting with the specified prefix
+* unzip:&lt;some maven zip&gt;: extract the zip in lib folder
+* ?name=&lt;new-name&gt;: rename the libary once copied in lib folder
+
+Note: the name tweak can be used to rename applications too
+
+###Provisioning Example
+
+This plugin is also usable in projects which are not war. For instance you can use it in a pom
+project to setup a TomEE install, add libraries, deploy apps then run the server.
+
+      <plugin>
+        <groupId>org.apache.openejb.maven</groupId>
+        <artifactId>tomee-maven-plugin</artifactId>
+        <version>1.7.1</version>
+        <configuration>
+          <tomeeVersion>1.7.1</tomeeVersion>
+          <tomeeClassifier>plus</tomeeClassifier>
+          <debug>false</debug>
+          <debugPort>5005</debugPort>
+          <args>-Dfoo=bar</args>
+          <config>${project.basedir}/src/test/tomee/conf</config>
+          <libs>
+            <lib>mysql:mysql-connector-java:5.1.20</lib>
+          </libs>
+          <webapps>
+             <webapp>org.superbiz:myapp:4.3?name=ROOT</webapp>
+             <webapp>org.superbiz:api:1.1</webapp>
+          </webapps>
+          <apps>
+              <app>org.superbiz:mybugapp:3.2:ear</app>
+          </apps>
+          <libs>
+              <lib>mysql:mysql-connector-java:5.1.21</lib>
+              <lib>unzip:org.superbiz:hibernate-bundle:4.1.0.Final:zip</lib>
+              <lib>remove:openjpa-</lib>
+          </libs>
+        </configuration>
+      </plugin>
+
+
+###Auto Reloading Example
+
+    <plugin>
+      <groupId>org.apache.openejb.maven</groupId>
+      <artifactId>tomee-maven-plugin</artifactId>
+      <version>1.7.1</version>
+      <configuration>
+        <synchronization>
+          <extensions>
+            <extension>.class</extension> <!-- if you want to update each time you build with mvn compile -->
+          </extensions>
+        </synchronization>
+        <reloadOnUpdate>true</reloadOnUpdate>
+      </configuration>
+    </plugin>
+
+The Synchronization block supports the following configuration options:
+
+* resourcesDir (default src/main/webapp)
+* binariesDir (default target/classes)
+* targetBinariesDir (default tomee/webapps/finalName/WEB-INF/classes)
+* targetResourcesDir (default tomee/webapps/finalName)
+* updateInterval (default 5 - in second)
+* extensions (default html, xhtml, js and css)
+* regex: a regex should match files to take into account when updating
+
+reloadOnUpdate means to reload the entire context (webapp). This means undeploying/redeploying the application.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomee-mp-getting-started.mdtext
----------------------------------------------------------------------
diff --git a/docs/tomee-mp-getting-started.mdtext b/docs/tomee-mp-getting-started.mdtext
new file mode 100644
index 0000000..89a7636
--- /dev/null
+++ b/docs/tomee-mp-getting-started.mdtext
@@ -0,0 +1,61 @@
+Title: TomEE Maven Plugin
+
+###Add The TomEE Maven Plugin To An Existing Project
+
+If you already have a maven project set up then just add the plugin as described [here](maven/index.html)
+
+You will likely need the full Java EE API added to your pom file:
+
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>javaee-api</artifactId>
+      <version>6.0-6</version>
+      <scope>provided</scope>
+    </dependency>
+	
+The simplest path is to allow Maven to create an example project for you. Even if you have an existing project you can always use the template as a reference.
+
+###Generate a Basic TomEE-Project With Maven
+
+TomEE provides a maven-archetype for generating a template project. This template project is preconfigured with `javaee-api` (scope provided) and with the [`tomee-maven-plugin`](maven/index.html) for starting the application with TomEE.
+
+For example, if current version of the archetype is '1.7.1', then the required command to generate an application would be:
+
+    mvn archetype:generate -DarchetypeGroupId=org.apache.openejb.maven -DarchetypeArtifactId=tomee-webapp-archetype -DarchetypeVersion=1.7.1
+
+The first time you run this command maven downloads the archetype and some parts related to it. Afterwards you see a prompt which allows you to specify the groupId, artifactId, version and package of your application.
+If you are using 'tomee' as groupId, 'tomee-demo' as artifactId, '1.0' as version and 'myapp' as package, your console should show something like:
+
+    Define value for property 'groupId': : tomee     
+    Define value for property 'artifactId': : tomee-demo
+    Define value for property 'version':  1.0-SNAPSHOT: : 1.0
+    Define value for property 'package':  tomee: : myapp
+    Confirm properties configuration:
+    groupId: tomee
+    artifactId: tomee-demo
+    version: 1.0
+    package: myapp
+    ...
+    [INFO] BUILD SUCCESS
+    ...
+
+Afterwards you see a new folder with the name you used for the artifactId (in the previous example 'tomee-demo').
+For starting the application you have to change the current directory to the directory of the generated application:
+
+    cd tomee-demo
+
+###Starting a TomEE-Project with Maven
+
+With using the archetype everything you need is in place already. So you just have to start TomEE with:
+
+    mvn package tomee:run
+
+The first time you run this command takes a bit longer, because maven has to download e.g. TomEE.
+Once those parts are downloaded, starting maven, deploying and starting the generated application takes less than 10s (depending on your computer).
+
+###Accessing a running application
+
+The application gets deployed to `target/apache-tomee/webapps`. If everything worked correctly, you should see a directory ('ROOT') as well as a web-archive ('ROOT.war').
+The context-paths of the deployed application is ROOT. In our example the generated application contains a servlet mapped to '/index'. So you can access it via:
+
+    http://localhost:8080/index

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomee-version-policies.mdtext
----------------------------------------------------------------------
diff --git a/docs/tomee-version-policies.mdtext b/docs/tomee-version-policies.mdtext
new file mode 100644
index 0000000..c2cc5eb
--- /dev/null
+++ b/docs/tomee-version-policies.mdtext
@@ -0,0 +1,24 @@
+.
+# TomEE versioning policies
+
+TomEE version policy is made of three dot-separated numbers: x.y.z
+
+  - x is the major version. It corresponds to the maximum Java EE specification supported by TomEE and a codebase generation, starting  with value 1 for Java EE 6 support. Next major will be 7 targetting JavaEE 7 etc...
+
+  - y is the minor version. It corresponds to a features level, starting at 0. Initial TomEE release was 1.0.0, followed by 1.5.0 because of the accumulation of features changes delivered since 1.0.0. Note that features changes must comply with the Java EE specification level given by TomEE's major version.
+
+  - z is the fix level. It corresponds to bug fixes changes without new features, starting at 0. Upgrades of embedded components (Tomcat, OpenEJB, MyFaces, etc.) are normally part of bug fixes releases.
+
+These policies allow an Java EE application to be certified with a given TomEEE version x.y.z and to be compatible with TomEE versions x.y1.* with y1>y and compatible with TomEE version x.y.z1 with z1>z.
+
+Important: being JavaEE certified means the server passed the Test Compatibility Kit (TCK). To simplify/summarize it is a big test suite to validate your are compliant with a JavaEE version. TomEE 1.x passed the JavaEE 6 TCK which was donated to Apache Software Foundation by Oracle. This donation hasn't been done to Apache for JavaEE 7 so TomEE is not able for now to be validated against it and therefore TomEE versions targetting JavaEE 7 are not yet certified.
+
+To make it more explicit here is a small table showing the targetted JavaEE version and the related certification state by version:
+
+<table>
+<tr><td>TomEE Version</td><td>JavaEE Version</td><td>Certified</td></tr>
+<tr><td>1.x</td><td>6</td><td>Yes</td></tr>
+<tr><td>7.x</td><td>7</td><td>No</td></tr>
+</table>
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomee-webaccess.mdtext
----------------------------------------------------------------------
diff --git a/docs/tomee-webaccess.mdtext b/docs/tomee-webaccess.mdtext
new file mode 100644
index 0000000..4331604
--- /dev/null
+++ b/docs/tomee-webaccess.mdtext
@@ -0,0 +1,18 @@
+Title:
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomee-webapp.mdtext
----------------------------------------------------------------------
diff --git a/docs/tomee-webapp.mdtext b/docs/tomee-webapp.mdtext
new file mode 100644
index 0000000..e14eb35
--- /dev/null
+++ b/docs/tomee-webapp.mdtext
@@ -0,0 +1,58 @@
+Title: About the 'tomee' webapp
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+There are two forms of the `tomee` webapp to consider:
+
+ - from an **tomee-1.x.x.war** that has been downloaded and added to a Tomcat 7 install.  This `tomee` webapp will contain all the necessary libraries to add the missing Java EE functionality to Tomcat as well as a small console.
+ - from an **apache-tomee-1.x.x.zip**.  The `tomee` webapp shipped inside a TomEE zip or tar is the same webapp as above, but with the libraries moved into the `<tomcat-home>/lib/` directory
+
+The only real difference between a "Tomcat with drop-in tomee.war" and a "TomEE" install is where the additional libraries live.
+
+## Deleting from plain Tomcat
+
+Deleting the `tomee` webapp from a plain Tomcat install will effectively uninstall TomEE from Tomcat.
+
+## Deleting from TomEE
+
+Deleting the `tomee` webapp from a TomEE install is safe as the needed libraries have been moved into `<tomcat-home>/lib/`
+
+The only loss of functionality would be the ability to remotely execute EJBs over HTTP.  However this can easily be added to a different webapp like so:
+
+    <servlet>
+      <servlet-name>ServerServlet</servlet-name>
+      <servlet-class>org.apache.openejb.server.httpd.ServerServlet</servlet-class>
+    </servlet>
+     
+    <servlet-mapping>
+      <servlet-name>ServerServlet</servlet-name>
+      <url-pattern>/myejbs/*</url-pattern>
+    </servlet-mapping>
+
+  
+Then you can create an `InitialContext` that points to that webapp like so:
+
+    Properties p = new Properties();
+    p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
+    p.put("java.naming.provider.url", "http://127.0.0.1:8080/mywebapp/myejbs");
+    // user and pass optional
+    p.put("java.naming.security.principal", "myuser");
+    p.put("java.naming.security.credentials", "mypass");
+    
+    InitialContext ctx = new InitialContext(p);
+    
+    MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote");

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/topic-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/topic-config.mdtext b/docs/topic-config.mdtext
new file mode 100644
index 0000000..ca534cd
--- /dev/null
+++ b/docs/topic-config.mdtext
@@ -0,0 +1,34 @@
+Title: Topic Configuration
+
+
+A Topic can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <Resource id="myTopic" type="javax.jms.Topic">
+        destination = 
+    </Resource>
+
+Alternatively, a Topic can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    myTopic = new://Resource?type=javax.jms.Topic
+    myTopic.destination = 
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared Topic a warning will be logged.  If a Topic is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple Topic declarations are allowed.
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+<tr>
+  <td>destination</td>
+  <td>String</td>
+  <td></td>
+  <td>
+Specifies the name of the topic
+</td>
+</tr>
+</table>
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/transaction-annotations.mdtext
----------------------------------------------------------------------
diff --git a/docs/transaction-annotations.mdtext b/docs/transaction-annotations.mdtext
new file mode 100644
index 0000000..af7a02e
--- /dev/null
+++ b/docs/transaction-annotations.mdtext
@@ -0,0 +1,217 @@
+Title: Transaction Annotations
+
+_Also see [Testing Transactions](testing-transactions-example.html)
+ for an example of how to use and test EJB transaction attributes_
+
+The *javax.ejb.TransactionAttribute* annotation (@TransactionAttribute) can
+be applied to a bean class or it's methods.
+
+Usage of the @TransactionAttribute requires you to specify one of six
+different transaction attribute types defined via the
+javax.ejb.TransactionAttributeType enum.
+
+ - TransactionAttributeType.*MANDATORY*
+ - TransactionAttributeType.*REQUIRED*
+ - TransactionAttributeType.*REQUIRES_NEW*
+ - TransactionAttributeType.*SUPPORTS*
+ - TransactionAttributeType.*NOT_SUPPORTED*
+ - TransactionAttributeType.*NEVER*
+
+Per EJB 3.0 the default transaction attribute for all EJB 3.0 applications
+is *REQUIRED*.	The default transaction attribute for EJB 2.1, 2.0 and 1.1
+applications is vendor specific.  In OpenEJB EJB 2.1, 2.0 and 1.1
+applications also use *REQUIRED* as the default.
+
+<a name="TransactionAnnotations-AttributeTypessummary"></a>
+##  Attribute Types summary
+
+A simplistic way to visualize the transaction attributes is as follows.
+
+<table>
+<tr><td> </th><th> Failing </th><th> Correcting </th><th> No Change </th></tr>
+<tr><th> Transacted </td><td> MANDATORY </td><td> REQUIRED, REQUIRES_NEW </td><td> SUPPORTS </td></tr>
+<tr><th> Not Transacted </td><td> NEVER </td><td> NOT_SUPPORTED </td><td> SUPPORTS </td></tr>
+</table>
+
+The "*Transacted*" and "*Not Transacted*" categories represent the
+container guarantee, i.e. if the bean method will or will not be invoked in
+a transaction.	The "*Failing*", "*Correcting*", and "*No Change*"
+categories represent the action take by the container to achieve that
+guarantee.
+
+For example, *Never* and *Mandatory* are categorized as "*Failing*" and
+will cause the container to throw an exception to the caller if there is
+(Tx Never) or is not (Tx Mandatory) a transaction in progress when the
+method is called.  The attributes *Required*, *RequiresNew*, and
+*NotSupported* are categorized as "*Correcting*" as they will cause the
+container to adjust the transactional state automatically as needed to
+match the desired state, rather than blocking the invocation by throwing an
+exception.
+
+<a name="TransactionAnnotations-DetaileddescriptionofeachAttribute"></a>
+### Detailed description of each Attribute
+
+<a name="TransactionAnnotations-MANDATORY"></a>
+#### MANDATORY
+
+A _MANDATORY_ method is guaranteed to always be executed in a transaction. 
+However, it's the caller's job to take care of suppling the transaction. 
+If the caller attempts to invoke the method *outside* of a transaction,
+then the container will block the call and throw them an *exception*.
+
+<a name="TransactionAnnotations-REQUIRED"></a>
+#### REQUIRED
+
+A _REQUIRED_ method is guaranteed to always be executed in a transaction. 
+If the caller attempts to invoke the method *outside* of a transaction, the
+container will *start* a transaction, execute the method, then *commit* the
+transaction.
+
+<a name="TransactionAnnotations-REQUIRES_NEW"></a>
+#### REQUIRES_NEW
+
+A _REQUIRES_NEW_ method is guaranteed to always be executed in a
+transaction.  If the caller attempts to invoke the method *inside or
+outside* of a transaction, the container will still *start* a transaction,
+execute the method, then *commit* the transaction.  Any transaction the
+caller may have in progress will be *suspended* before the method execution
+then *resumed* afterward.
+
+<a name="TransactionAnnotations-NEVER"></a>
+#### NEVER
+
+A _NEVER_ method is guaranteed to never be executed in a transaction. 
+However, it's the caller's job to ensure there is no transaction.  If the
+caller attempts to invoke the method *inside* of a transaction, then the
+container will block the call and throw them an *exception*.
+
+<a name="TransactionAnnotations-NOT_SUPPORTED"></a>
+#### NOT_SUPPORTED
+
+A _NOT_SUPPORTED_ method is guaranteed to never be executed in a
+transaction.  If the caller attempts to invoke the method *inside* of a
+transaction, the container will *suspend* the caller's transaction, execute
+the method, then *resume* the caller's transaction.
+
+<a name="TransactionAnnotations-SUPPORTS"></a>
+#### SUPPORTS
+
+A _SUPPORTS_ method is guaranteed to adopt the exact transactional state of
+the caller.  These methods can be invoked by caller's *inside or outside*
+of a transaction.  The container will do nothing to change that state.
+
+
+<a name="TransactionAnnotations-OnMethods"></a>
+## On Methods
+
+
+    @Stateless
+    public static class MyBean implements MyBusinessInterface {
+    
+        @TransactionAttribute(TransactionAttributeType.MANDATORY)
+        public String codeRed(String s) {
+    	return s;
+        }
+    
+        public String codeBlue(String s) {
+    	return s;
+        }
+    }
+
+
+- _codeRed_ will be invoked with the attribute of _MANDATORY_
+- _codeBlue_ will be invoked with the default attribute of _REQUIRED_
+
+<a name="TransactionAnnotations-OnClasses"></a>
+## On Classes
+
+
+    @Stateless
+    @TransactionAttribute(TransactionAttributeType.MANDATORY)
+    public static class MyBean implements MyBusinessInterface {
+    
+        public String codeRed(String s) {
+    	return s;
+        }
+    
+        public String codeBlue(String s) {
+    	return s;
+        }
+    }
+
+
+- _codeRed_ and _codeBlue_ will be invoked with the attribute of
+_MANDATORY_
+
+<a name="TransactionAnnotations-Mixedonclassesandmethods"></a>
+## Mixed on classes and methods
+
+
+    @Stateless
+    @TransactionAttribute(TransactionAttributeType.SUPPORTS)
+    public static class MyBean implements MyBusinessInterface {
+    
+        @TransactionAttribute(TransactionAttributeType.NEVER)
+        public String codeRed(String s) {
+    	return s;
+        }
+    
+        public String codeBlue(String s) {
+    	return s;
+        }
+    
+        @TransactionAttribute(TransactionAttributeType.REQUIRED)
+        public String codeGreen(String s) {
+    	return s;
+        }
+    }
+
+
+- _codeRed_ will be invoked with the attribute of _NEVER_
+- _codeBlue_ will be invoked with the attribute of _SUPPORTS_
+- _codeGreen_ will be invoked with the attribute of _REQUIRED_
+
+<a name="TransactionAnnotations-IllegalUsage"></a>
+#  Illegal Usage
+
+Generally, transaction annotationss cannot be made on AroundInvoke methods
+and most callbacks.
+
+The following usages of @TransactionAttribute have no effect.
+
+
+    @Stateful
+    public class MyStatefulBean implements	MyBusinessInterface  {
+    
+        @PostConstruct
+        @TransactionAttribute(TransactionAttributeType.NEVER)
+        public void constructed(){
+    
+        }
+    
+        @PreDestroy
+        @TransactionAttribute(TransactionAttributeType.NEVER)
+        public void destroy(){
+    
+        }
+    
+        @AroundInvoke
+        @TransactionAttribute(TransactionAttributeType.NEVER)
+        public Object invoke(InvocationContext invocationContext) throws Exception {
+    	return invocationContext.proceed();
+        }
+    
+        @PostActivate
+        @TransactionAttribute(TransactionAttributeType.NEVER)
+        public void activated(){
+    
+        }
+    
+        @PrePassivate
+        @TransactionAttribute(TransactionAttributeType.NEVER)
+        public void passivate(){
+    
+        }
+    }
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/transactionmanager-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/transactionmanager-config.mdtext b/docs/transactionmanager-config.mdtext
new file mode 100644
index 0000000..7258edb
--- /dev/null
+++ b/docs/transactionmanager-config.mdtext
@@ -0,0 +1,164 @@
+Title: TransactionManager Configuration
+
+
+A TransactionManager can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <TransactionManager id="myTransactionManager" type="TransactionManager">
+        adler32Checksum = true
+        bufferSizeKb = 32
+        checksumEnabled = true
+        defaultTransactionTimeout = 10 minutes
+        flushSleepTime = 50 Milliseconds
+        logFileDir = txlog
+        logFileExt = log
+        logFileName = howl
+        maxBlocksPerFile = -1
+        maxBuffers = 0
+        maxLogFiles = 2
+        minBuffers = 4
+        threadsWaitingForceThreshold = -1
+        txRecovery = false
+    </TransactionManager>
+
+Alternatively, a TransactionManager can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    myTransactionManager = new://TransactionManager?type=TransactionManager
+    myTransactionManager.adler32Checksum = true
+    myTransactionManager.bufferSizeKb = 32
+    myTransactionManager.checksumEnabled = true
+    myTransactionManager.defaultTransactionTimeout = 10 minutes
+    myTransactionManager.flushSleepTime = 50 Milliseconds
+    myTransactionManager.logFileDir = txlog
+    myTransactionManager.logFileExt = log
+    myTransactionManager.logFileName = howl
+    myTransactionManager.maxBlocksPerFile = -1
+    myTransactionManager.maxBuffers = 0
+    myTransactionManager.maxLogFiles = 2
+    myTransactionManager.minBuffers = 4
+    myTransactionManager.threadsWaitingForceThreshold = -1
+    myTransactionManager.txRecovery = false
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared TransactionManager a warning will be logged.  If a TransactionManager is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple TransactionManager declarations are allowed.
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+<tr>
+  <td>adler32Checksum</td>
+  <td>boolean</td>
+  <td>true</td>
+  <td>
+Requires TxRecovery
+</td>
+</tr>
+<tr>
+  <td>bufferSizeKb</td>
+  <td>int</td>
+  <td>32</td>
+  <td>
+Requires TxRecovery
+</td>
+</tr>
+<tr>
+  <td>checksumEnabled</td>
+  <td>boolean</td>
+  <td>true</td>
+  <td>
+Requires TxRecovery
+</td>
+</tr>
+<tr>
+  <td>defaultTransactionTimeout</td>
+  <td><a href="configuring-durations.html">time</a></td>
+  <td>10&nbsp;minutes</td>
+  <td>
+
+</td>
+</tr>
+<tr>
+  <td>flushSleepTime</td>
+  <td><a href="configuring-durations.html">time</a></td>
+  <td>50&nbsp;Milliseconds</td>
+  <td>
+Requires TxRecovery
+</td>
+</tr>
+<tr>
+  <td>logFileDir</td>
+  <td>String</td>
+  <td>txlog</td>
+  <td>
+Requires TxRecovery
+</td>
+</tr>
+<tr>
+  <td>logFileExt</td>
+  <td>String</td>
+  <td>log</td>
+  <td>
+Requires TxRecovery
+</td>
+</tr>
+<tr>
+  <td>logFileName</td>
+  <td>String</td>
+  <td>howl</td>
+  <td>
+Requires TxRecovery
+</td>
+</tr>
+<tr>
+  <td>maxBlocksPerFile</td>
+  <td>int</td>
+  <td>-1</td>
+  <td>
+Requires TxRecovery
+</td>
+</tr>
+<tr>
+  <td>maxBuffers</td>
+  <td>int</td>
+  <td>0</td>
+  <td>
+Requires TxRecovery
+</td>
+</tr>
+<tr>
+  <td>maxLogFiles</td>
+  <td>int</td>
+  <td>2</td>
+  <td>
+Requires TxRecovery
+</td>
+</tr>
+<tr>
+  <td>minBuffers</td>
+  <td>int</td>
+  <td>4</td>
+  <td>
+Requires TxRecovery
+</td>
+</tr>
+<tr>
+  <td>threadsWaitingForceThreshold</td>
+  <td>int</td>
+  <td>-1</td>
+  <td>
+Requires TxRecovery
+</td>
+</tr>
+<tr>
+  <td>txRecovery</td>
+  <td>boolean</td>
+  <td>false</td>
+  <td>
+When set to true, Howl logging is enabled
+</td>
+</tr>
+</table>
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/understanding-callbacks.mdtext
----------------------------------------------------------------------
diff --git a/docs/understanding-callbacks.mdtext b/docs/understanding-callbacks.mdtext
new file mode 100644
index 0000000..fdeac59
--- /dev/null
+++ b/docs/understanding-callbacks.mdtext
@@ -0,0 +1,88 @@
+Title: Understanding Callbacks
+The rules here are pretty hard to follow without examples.  
+
+When they say one AroundInvoke per class they mean that in the most literal
+sense as in one individual java class definition, not including it's parent
+class or classes, may exactly one AroundInvoke method.	The bean or
+interceptor class may have an AroundInvoke method, its parent class may
+have an AroundInvoke method, the parent's parent class may have an
+AroundInvoke method and so on.
+
+So the following is legal.
+
+
+    public class Plant {
+        @AroundInvoke
+        public Object a(InvocationContext ctx) throws Exception {
+            return ctx.proceed();
+        }
+    }
+
+    public class Fruit extends Plant {
+        @AroundInvoke
+        public Object b(InvocationContext ctx) throws Exception {
+            return ctx.proceed();
+        }
+    }
+
+    @Stateless
+    public class Apple extends Fruit implements AppleLocal {
+        @AroundInvoke
+        public Object c(InvocationContext ctx) throws Exception {
+            return ctx.proceed();
+        }
+
+        public String grow(){
+            return "ready to pick";
+        }
+    }
+
+    public interface AppleLocal {
+        public String grow();
+    }
+
+
+The result is that when the "grow" method on AppleLocal (and consequently
+on Apple) is invoked, the container will first invoke the following
+AroundInvoke methods in this order; a, b, c.
+
+What the ejb spec doesn't do such a good job at stating is that there are
+ways to effectively shut off the callbacks, including AroundInvoke, of a
+parent class by simply overriding the method.  We can shut off the "a"
+around invoke with a slightly different version of Apple as follows:
+
+
+    @Stateless
+    public class Apple extends Fruit implements AppleLocal {
+
+        // This will now never be called.
+        public Object a(InvocationContext ctx) throws Exception {
+            return null;
+        }
+
+        @AroundInvoke
+        public Object c(InvocationContext ctx) throws Exception {
+            return ctx.proceed();
+        }
+
+        public String grow(){
+            return "ready to pick";
+        }
+    }
+
+
+The result of this is that when the "grow" method on AppleLocal is invoked,
+the container will first invoke the AroundInvoke methods "b" then "c"
+skipping "a" completely.
+
+When they say that an AroundInvoke method cannot be a business method, they
+mean that they cannot be exposed to clients through a local or remote
+interface.  The following would be illegal.
+
+
+    public interface AppleLocal {
+        public String grow();
+
+        // This is an AroundInvoke method in the bean class, not a legal business method!
+        public Object c(InvocationContext ctx) throws Exception;
+    }

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/understanding-the-directory-layout.mdtext
----------------------------------------------------------------------
diff --git a/docs/understanding-the-directory-layout.mdtext b/docs/understanding-the-directory-layout.mdtext
new file mode 100644
index 0000000..6b6d7d2
--- /dev/null
+++ b/docs/understanding-the-directory-layout.mdtext
@@ -0,0 +1,69 @@
+Title: Understanding the Directory Layout
+
+Unpacking the standalone OpenEJB will result in the following directory layout:
+	
+	apache-openejb-[version]\apps
+	apache-openejb-[version]\bin
+	apache-openejb-[version]\conf
+	apache-openejb-[version]\data
+	apache-openejb-[version]\lib
+	apache-openejb-[version]\logs
+	apache-openejb-[version]\LICENSE
+	apache-openejb-[version]\NOTICE
+	apache-openejb-[version]\README.txt
+
+<a name="UnderstandingtheDirectoryLayout-Directories"></a>
+# Directories
+
+<a name="UnderstandingtheDirectoryLayout-bin/"></a>
+## bin/
+
+Contains commands to start/stop the server (You can also do a lot of other
+stuff like deploy/undeploy, but we will just talk about things needed to
+get you started)
+
+<a name="UnderstandingtheDirectoryLayout-lib/"></a>
+## lib/
+
+Contains several jar files (you only need of few of these jars in your
+classpath to do EJB development)
+
+<a name="UnderstandingtheDirectoryLayout-apps/"></a>
+## apps/
+
+Once you create your EJB's and jar them up, you can place your jar file in
+this directory and start the server. The server will automatically deploy
+all the EJB's contained in this JAR.
+
+<a name="UnderstandingtheDirectoryLayout-logs/"></a>
+## logs/
+
+Contains log files.
+
+<a name="UnderstandingtheDirectoryLayout-conf/"></a>
+## conf/
+
+This directory contains nothing but a README.txt file at the time OpenEJB
+is unpacked.  The first time OpenEJB is started however, these files will
+be created:
+
+      conf/
+        openejb.xml 	       (main config file)    
+        logging.properties	       (log levels and files)    
+        login.config	       (jaas config file)
+        users.properties	       (users that can log in)
+        groups.properties	       (groups in which users belong)
+    
+		conf.d/
+	
+			admin.properties		(network socket for administration)
+			ejbd.properties			(network socket for ejb invocations)
+			hsql.properties			(network socket for hsql client access)
+			httpejbd.properties		(network socket for ejb invocations over http)
+			telnet.properties		(network socket for telnet "server") 
+
+These files can be edited as desired.  If at any time you are unhappy with
+your changes or simply wish to start over, you can delete or move any of
+the files above and a new one containing the default values will be
+automatically created.
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/unix-daemon.mdtext
----------------------------------------------------------------------
diff --git a/docs/unix-daemon.mdtext b/docs/unix-daemon.mdtext
new file mode 100644
index 0000000..d453b06
--- /dev/null
+++ b/docs/unix-daemon.mdtext
@@ -0,0 +1,105 @@
+Title: Unix Daemon
+
+Apache TomEE can be run as a daemon using the [jsvc](http://commons.apache.org/daemon/jsvc.html) tool from the [Apache Commons Daemon](http://commons.apache.org/daemon) project.
+
+Source tarballs for `jsvc` are included with Tomcat and therefore can be found in TomEE as well.  These need to be compiled before jsvc can be used. 
+
+# Building jsvc
+
+First, we'll need to locate and unpack the `commons-daemon-native.tar.gz`
+
+    cd $TOMEE_HOME/bin
+    tar xzvf commons-daemon-native.tar.gz
+    cd commons-daemon-1.0.7-native-src/unix/
+
+Note that the `commons-daemon-1.0.7-native-src` directory may have a slightly different version number.
+
+Second, we'll need to build the `jsvc` binary.  Under a UNIX operating system you will need:
+
+ - An ANSI-C compliant compiler (GCC is good)
+ - GNU Make
+ - A Java Platform 2 compliant SDK
+
+You have to specify the `JAVA_HOME` of the SDK either with the `--with-java=<dir>` parameter or set the `JAVA_HOME` environment to 
+point to your SDK installation. For example:
+
+    ./configure --with-java=/usr/java
+
+or
+
+    export JAVA_HOME
+    ./configure
+
+If your operating system is supported, configure will go through cleanly, otherwise it will report an error (please send us the details of your 
+OS/JDK, or a patch against the sources). To build the binaries and libraries simply do:
+
+    make
+
+This will generate the executable file `jsvc`.
+
+Finally, we'll want to set the execution bits and move the `jsvc` binary
+
+    chmod 755 jsvc
+    mv jsvc $TOMEE_HOME/bin
+
+Done!
+
+As one script, the above might look like:
+
+    cd $TOMEE_HOME/bin
+    tar xzvf commons-daemon-native.tar.gz
+    cd commons-daemon-1.0.7-native-src/unix/
+    ./configure
+    make
+    chmod 755 jsvc
+    mv jsvc ../..
+
+# Starting (unix)
+
+    sudo "$TOMEE_HOME/bin/jsvc" -cp "$TOMEE_HOME/bin/bootstrap.jar:$TOMEE_HOME/bin/tomcat-juli.jar" \
+        "-javaagent:$TOMEE_HOME/lib/openejb-javaagent.jar" -outfile "$TOMEE_HOME/logs/catalina.out" \
+        -errfile "$TOMEE_HOME/logs/catalina.err" org.apache.catalina.startup.Bootstrap
+
+# Starting (osx)
+
+For a 64-bit JVM such as OSX Lion
+
+    sudo arch -arch x86_64 "$TOMEE_HOME/bin/jsvc" -jvm server -cp "$TOMEE_HOME/bin/bootstrap.jar:$TOMEE_HOME/bin/tomcat-juli.jar" \
+        "-javaagent:$TOMEE_HOME/lib/openejb-javaagent.jar" -outfile "$TOMEE_HOME/logs/catalina.out" \
+        -errfile "$TOMEE_HOME/logs/catalina.err" org.apache.catalina.startup.Bootstrap
+
+For a 32-bit JVM
+
+    sudo arch -arch i386 "$TOMEE_HOME/bin/jsvc" -jvm server -cp "$TOMEE_HOME/bin/bootstrap.jar:$TOMEE_HOME/bin/tomcat-juli.jar" \
+        "-javaagent:$TOMEE_HOME/lib/openejb-javaagent.jar" -outfile "$TOMEE_HOME/logs/catalina.out" \
+        -errfile "$TOMEE_HOME/logs/catalina.err" org.apache.catalina.startup.Bootstrap
+
+## Note on formatting
+
+Note that `\` at the end of each line is unix syntax to keep everything effectively as one line and one command.  The command is simply too long to show as one line on a fixed width html page.  The `\` can be removed as long as the resulting command is one long line.
+
+# Common Issues
+
+Ensure your `$TOME_HOME` and `$JAVA_HOME` variables are set correctly.  You should see similar output with the following two commands
+
+    mingus:~ 01:51:37
+    $ ls $TOMEE_HOME
+    LICENSE		RELEASE-NOTES	bin		endorsed	logs		webapps
+    NOTICE		RUNNING.txt	conf		lib		temp		work
+
+    mingus:~ 01:51:46
+    $ ls $JAVA_HOME
+    bin	bundle	lib	man
+
+The `jsvc -debug` option can also show useful information for troubleshooting:
+
+    $TOMEE_HOME/bin/jsvc -debug
+
+Note on OSX, `$JAVA_HOME` should be set to `/System/Library/Frameworks/JavaVM.framework/Home`
+
+# Further documentation
+
+See also the full Apache Commons Daemon documentation for jsvc.
+
+  - [http://commons.apache.org/daemon/jsvc.html](http://commons.apache.org/daemon/jsvc.html)
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/validation-tool.mdtext
----------------------------------------------------------------------
diff --git a/docs/validation-tool.mdtext b/docs/validation-tool.mdtext
new file mode 100644
index 0000000..ab59e5b
--- /dev/null
+++ b/docs/validation-tool.mdtext
@@ -0,0 +1,138 @@
+Title: Validation Tool
+
+<a name="ValidationTool-NAME"></a>
+# NAME
+
+openejb validate - OpenEJB Validation Tool
+
+<a name="ValidationTool-SYNOPSIS"></a>
+# SYNOPSIS
+
+
+openejb validate [options](options.html)
+ jarfiles
+
+<a name="ValidationTool-NOTE"></a>
+# NOTE
+
+
+The OpenEJB Validation tool must be executed from the OPENEJB_HOME
+directory. This is the directory where OpenEJB was installed or unpacked.
+For for the remainder of this document we will assume you unpacked OpenEJB
+into the directory C:\openejb.
+
+In Windows, the validation tool can be executed as follows:
+
+*C:\openejb> openejb validate -help*
+
+
+{warning}
+There is a bug in the openejb.bat script of OpenEJB 0.9.0 that doesn't
+allow you to execute the validate command as above. For that release,
+Windows users can execute the following command:
+*C:\openejb> bin\validate.bat -help*
+
+{warning}
+
+
+In UNIX, Linux, or Mac OS X, the deploy tool can be executed as follows:
+
+`[user@host openejb](user@host-openejb.html)
+# ./openejb.sh validate -help`
+
+
+Depending on your OpenEJB version, you may need to change execution bits to
+make the scripts executable. You can do this with the following command.
+
+`[user@host openejb](user@host-openejb.html)
+# chmod 755 openejb.sh bin/*.sh`
+
+
+From here on out, it will be assumed that you know how to execute the right
+openejb script for your operating system and commands will appear in
+shorthand as show below.
+
+*openejb validate -help*
+
+
+<a name="ValidationTool-DESCRIPTION"></a>
+# DESCRIPTION
+
+
+The validation tool currently checks for the following things:
+* Does the Jar have all the ejb-class class files
+* Does the Jar have all the home class files
+* Does the Jar have all the remote class files
+* Is the ejb-class a sub-interface of SessionBean or EntityBean
+* Is the home a sub-interface of EJBHome
+* Is the remote a sub-interface of EJBObject
+* Are all the methods in the remote interface implemented in the ejb-class
+* Are there create methods in the home interface
+* Are the create methods in the home interface implemented in the ejb-class
+* Are the required post create methods in the ejb-class of EntityBeans
+* Are there any create methods in the ejb-class, but not in the home
+interface
+
+More checks will be added in the future.
+
+<a name="ValidationTool-OPTIONS"></a>
+# OPTIONS
+
+
+<table>
+<tr><td>-v</td><td>Sets the output level to 1. This will output just the minumum details
+on each failure.</td></tr>
+<tr><td>-vv</td><td>Default. Sets the output level to 2. Outputs one line summaries of
+each failure. This is the default output level.</td></tr>
+<tr><td>-vvv</td><td>Sets the output level to 3. Outputs verbose details on each failure,
+usually with details on how to correct the failures.</td></tr>
+<tr><td>-xml</td><td>Outputs information in well-formed XML.</td></tr>
+<tr><td>-nowarn</td><td>Suppresses warnings.</td></tr>
+<tr><td>-version</td><td>Print the version.</td></tr>
+<tr><td>-help</td><td>Print this help message.</td></tr>
+<tr><td>-examples</td><td>Show examples of how to use the options.</td></tr>
+</table>
+
+<a name="ValidationTool-COMMONISSUES"></a>
+# COMMON ISSUES
+
+<a name="ValidationTool-MisslocatedclassorNoClassDefFoundError"></a>
+## Misslocated class or NoClassDefFoundError
+
+The short explanation is that the parent doesn't have all the classes it
+needs as some of them are only in the child classloader, where the parent
+can't see them.
+
+This would occur, for example, if a class was loaded by the parent
+classloader, but that class' superclass wasn't visible to the parent
+classloader, perhaps because it is only in the child classloader.
+
+Here is a more concrete example:
+
+    public interface Person extends EJBObject {
+    }
+    
+    public interface Employee extends Person {
+    }
+
+
+Ok, so when we build our ejb jar, we put both the Person and Employee
+interfaces in the jar, so everything should be good (so we think). But now
+let's say that for some reason the Employee interface is also in another
+jar and that jar was loaded into the system classpath.
+
+When a new classloader is create for my ejb-jar at runtime and the system
+attempts to load the Employee interface, the call goes right through that
+classloader and down to the system classloader. The Employee interface is
+found, because it was accidentally added to that extra jar in the system
+classpath. So now the system classloader goes looking for Employee's
+superinterface, Person, where it immediatly blows up and throws a
+NoClassDefFoundError: Person.
+
+Most people will look at their ejb-jar and think, "But all my classes are
+there!?", which is true. It really doesn't matter though, because one of
+those classes is also in the parent classloader. The first call to load
+that class will bypass your classloader completely and go to the parent.
+Once there, it is the parent's job to find *all* the dependent classes. If
+it can't ... NoClassDefFoundError.
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/version-checker.mdtext
----------------------------------------------------------------------
diff --git a/docs/version-checker.mdtext b/docs/version-checker.mdtext
new file mode 100644
index 0000000..6bf4bb2
--- /dev/null
+++ b/docs/version-checker.mdtext
@@ -0,0 +1,9 @@
+Title: Checking Your OpenEJB Version
+
+# Update checker
+
+To check your OpenEJB version each time OpenEJB/TomEE starts simple add the system property
+openejb.version.check=true.
+
+Note: it can be done through system.properties files.
+


[09/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/maven/help-mojo.mdtext
----------------------------------------------------------------------
diff --git a/docs/maven/help-mojo.mdtext b/docs/maven/help-mojo.mdtext
new file mode 100644
index 0000000..9a8cb9a
--- /dev/null
+++ b/docs/maven/help-mojo.mdtext
@@ -0,0 +1,145 @@
+<div class="section">
+<h2>tomee:help<a name="tomee:help"></a></h2>
+      
+<p><b>Full name</b>:</p>
+      
+<p>org.apache.openejb.maven:tomee-maven-plugin[:Current Version]:help</p>
+      
+<p><b>Description</b>:</p>
+      
+<div>Display help information on tomee-maven-plugin.<br />
+Call <tt>mvn tomee:help -Ddetail=true
+-Dgoal=&lt;goal-name&gt;</tt> to display parameter details.</div>
+      
+<p><b>Attributes</b>:</p>
+      
+<ul>
+        
+<li>The goal is thread-safe and supports parallel builds.</li>
+      </ul>
+      
+<div class="section">
+<h3>Optional Parameters<a name="Optional_Parameters"></a></h3>
+        
+<table class="bodyTable" border="0">
+          
+<tr class="a">
+            
+<th>Name</th>
+            
+<th>Type</th>
+            
+<th>Since</th>
+            
+<th>Description</th>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#detail">detail</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>If <tt>true</tt>, display all settable properties for each
+goal.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>detail</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#goal">goal</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>The name of the goal for which to show help. If unspecified, all
+goals will be displayed.<br /><b>User property is</b>: <tt>goal</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#indentSize">indentSize</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>The number of spaces per indentation level, should be positive.<br /><b>Default value is</b>: <tt>2</tt>.<br /><b>User property is</b>: <tt>indentSize</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#lineLength">lineLength</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>The maximum length of a display line, should be positive.<br /><b>Default value is</b>: <tt>80</tt>.<br /><b>User property is</b>: <tt>lineLength</tt>.</td>
+          </tr>
+        </table>
+      </div>
+      
+<div class="section">
+<h3>Parameter Details<a name="Parameter_Details"></a></h3>
+        
+<p><b><a name="detail">detail</a>:</b></p>
+        
+<div>If <tt>true</tt>, display all settable properties for each
+goal.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>detail</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="goal">goal</a>:</b></p>
+        
+<div>The name of the goal for which to show help. If unspecified, all
+goals will be displayed.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>goal</tt></li>
+        </ul><hr />
+<p><b><a name="indentSize">indentSize</a>:</b></p>
+        
+<div>The number of spaces per indentation level, should be positive.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>indentSize</tt></li>
+          
+<li><b>Default</b>: <tt>2</tt></li>
+        </ul><hr />
+<p><b><a name="lineLength">lineLength</a>:</b></p>
+        
+<div>The maximum length of a display line, should be positive.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>lineLength</tt></li>
+          
+<li><b>Default</b>: <tt>80</tt></li>
+        </ul>
+      </div>
+    </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/maven/index.mdtext
----------------------------------------------------------------------
diff --git a/docs/maven/index.mdtext b/docs/maven/index.mdtext
new file mode 100644
index 0000000..5586232
--- /dev/null
+++ b/docs/maven/index.mdtext
@@ -0,0 +1,144 @@
+Title: TomEE Maven Plugin
+
+Inspired by the Jetty Maven Plugin, the TomEE Maven Plugin is a feature-rich
+plugin that allows for:
+
+ - Easy provisioning of a TomEE server
+ - Server start and stop
+ - Application deployment and undeployment
+
+Simply add the following to the <plugins>, and optionally the <pluginManagement>), section of your `pom.xml`
+
+    <plugins>
+        <plugin>
+          <groupId>org.apache.openejb.maven</groupId>
+          <artifactId>tomee-maven-plugin</artifactId>
+          <version>1.7.1</version>
+          <configuration>
+            <tomeeVersion>1.7.1</tomeeVersion>
+            <tomeeClassifier>plus</tomeeClassifier>
+          </configuration>
+        </plugin>
+    </plugins>
+
+###Plugin Goals
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>Goal</th>
+<th>Description</th></tr>
+<tr class="b">
+<td><a href="build-mojo.html">tomee:build</a></td>
+<td>Create TomEE, but do not run it.</td></tr>
+<tr class="a">
+<td><a href="configtest-mojo.html">tomee:configtest</a></td>
+<td>Run the Apache Tomcat `configtest` command.</td></tr>
+<tr class="b">
+<td><a href="debug-mojo.html">tomee:debug</a></td>
+<td>Same as `run` but with debug activated on the default or specified port.</td></tr>
+<tr class="a">
+<td><a href="deploy-mojo.html">tomee:deploy</a></td>
+<td>Deploy an application in a running TomEE.</td></tr>
+<tr class="b">
+<td><a href="exec-mojo.html">tomee:exec</a></td>
+<td>Undocumented.</td></tr>
+<tr class="a">
+<td><a href="help-mojo.html">tomee:help</a></td>
+<td>Display help information on the tomee-maven-plugin.<br />
+Call <code>mvn tomee:help -Ddetail=true
+-Dgoal=&lt;goal-name&gt;</code> to display parameter details.</td></tr>
+<tr class="b">
+<td><a href="list-mojo.html">tomee:list</a></td>
+<td>Largely inspired by the OpenEJB command helper, but with some differences. List deployed EJB's in a running TomEE.</td></tr>
+<tr class="a">
+<td><a href="run-mojo.html">tomee:run</a></td>
+<td>Start and wait for TomEE.</td></tr>
+<tr class="b">
+<td><a href="start-mojo.html">tomee:start</a></td>
+<td>Start TomEE and continue.</td></tr>
+<tr class="a">
+<td><a href="stop-mojo.html">tomee:stop</a></td>
+<td>Stop a TomEE started with start command.</td></tr>
+<tr class="b">
+<td><a href="undeploy-mojo.html">tomee:undeploy</a></td>
+<td>Undeploy an application in a running TomEE</td></tr></table>
+
+
+Note that for the tomee:deploy and tomee:undeploy goals, the path can either be specified within the <configuration/> section of the `pom.xml` using the <path> parameter, or it can be passed via the user property tomee-plugin.archive. If a relative path is passed for the deploy path archive, this must be relative to the TomEE server.
+
+Note 2: running tomee maven plugin you can type 'quit' directly in the console to shutdown correctly the
+server. 'reload' is also available when internal openejb application is deployed.
+
+###More Tweaks
+
+The lib tag allows to enrich the container with some additional libraries.
+
+Some interesting patterns in addition to the default maven formats are supported.
+
+* remove:&lt;some prefix of jar in lib folder&gt;: remove all jar starting with the specified prefix
+* unzip:&lt;some maven zip&gt;: extract the zip in lib folder
+* ?name=&lt;new-name&gt;: rename the libary once copied in lib folder
+
+Note: the name tweak can be used to rename applications too
+
+###Provisioning Example
+
+This plugin is also usable in projects which are not war. For instance you can use it in a pom
+project to setup a TomEE install, add libraries, deploy apps then run the server.
+
+      <plugin>
+        <groupId>org.apache.openejb.maven</groupId>
+        <artifactId>tomee-maven-plugin</artifactId>
+        <version>1.7.1</version>
+        <configuration>
+          <tomeeVersion>1.7.1</tomeeVersion>
+          <tomeeClassifier>plus</tomeeClassifier>
+          <debug>false</debug>
+          <debugPort>5005</debugPort>
+          <args>-Dfoo=bar</args>
+          <config>${project.basedir}/src/test/tomee/conf</config>
+          <libs>
+            <lib>mysql:mysql-connector-java:5.1.20</lib>
+          </libs>
+          <webapps>
+             <webapp>org.superbiz:myapp:4.3?name=ROOT</webapp>
+             <webapp>org.superbiz:api:1.1</webapp>
+          </webapps>
+          <apps>
+              <app>org.superbiz:mybugapp:3.2:ear</app>
+          </apps>
+          <libs>
+              <lib>mysql:mysql-connector-java:5.1.21</lib>
+              <lib>unzip:org.superbiz:hibernate-bundle:4.1.0.Final:zip</lib>
+              <lib>remove:openjpa-</lib>
+          </libs>
+        </configuration>
+      </plugin>
+
+
+###Auto Reloading Example
+
+    <plugin>
+      <groupId>org.apache.openejb.maven</groupId>
+      <artifactId>tomee-maven-plugin</artifactId>
+      <version>1.7.1</version>
+      <configuration>
+        <synchronization>
+          <extensions>
+            <extension>.class</extension> <!-- if you want to update each time you build with mvn compile -->
+          </extensions>
+        </synchronization>
+        <reloadOnUpdate>true</reloadOnUpdate>
+      </configuration>
+    </plugin>
+
+The Synchronization block supports the following configuration options:
+
+* resourcesDir (default src/main/webapp)
+* binariesDir (default target/classes)
+* targetBinariesDir (default tomee/webapps/finalName/WEB-INF/classes)
+* targetResourcesDir (default tomee/webapps/finalName)
+* updateInterval (default 5 - in second)
+* extensions (default html, xhtml, js and css)
+* regex: a regex should match files to take into account when updating
+
+reloadOnUpdate means to reload the entire context (webapp). This means undeploying/redeploying the application.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/maven/list-mojo.mdtext
----------------------------------------------------------------------
diff --git a/docs/maven/list-mojo.mdtext b/docs/maven/list-mojo.mdtext
new file mode 100644
index 0000000..53a8c5c
--- /dev/null
+++ b/docs/maven/list-mojo.mdtext
@@ -0,0 +1,165 @@
+<div class="section">
+<h2>tomee:list<a name="tomee:list"></a></h2>
+      
+<p><b>Full name</b>:</p>
+      
+<p>org.apache.openejb.maven:tomee-maven-plugin[:Current Version]:list</p>
+      
+<p><b>Description</b>:</p>
+      
+<div>Highly inspired from openejb command helper but with some different
+data. List deployed EJB in a running TomEE.</div>
+      
+<p><b>Attributes</b>:</p>
+      
+<ul>
+        
+<li>Requires a Maven project to be executed.</li>
+        
+<li>Requires dependency resolution of artifacts in scope: <tt>runtime</tt>.</li>
+        
+<li>Requires dependency collection of artifacts in scope: <tt>runtime</tt>.</li>
+      </ul>
+      
+<div class="section">
+<h3>Optional Parameters<a name="Optional_Parameters"></a></h3>
+        
+<table class="bodyTable" border="0">
+          
+<tr class="a">
+            
+<th>Name</th>
+            
+<th>Type</th>
+            
+<th>Since</th>
+            
+<th>Description</th>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#password">password</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.pwd</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#realm">realm</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.realm</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeHost">tomeeHost</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>localhost</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.host</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeHttpPort">tomeeHttpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8080</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.http</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#user">user</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.user</tt>.</td>
+          </tr>
+        </table>
+      </div>
+      
+<div class="section">
+<h3>Parameter Details<a name="Parameter_Details"></a></h3>
+        
+<p><b><a name="password">password</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.pwd</tt></li>
+        </ul><hr />
+<p><b><a name="realm">realm</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.realm</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHost">tomeeHost</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.host</tt></li>
+          
+<li><b>Default</b>: <tt>localhost</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHttpPort">tomeeHttpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.http</tt></li>
+          
+<li><b>Default</b>: <tt>8080</tt></li>
+        </ul><hr />
+<p><b><a name="user">user</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.user</tt></li>
+        </ul>
+      </div>
+    </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/maven/run-mojo.mdtext
----------------------------------------------------------------------
diff --git a/docs/maven/run-mojo.mdtext b/docs/maven/run-mojo.mdtext
new file mode 100644
index 0000000..4e160ee
--- /dev/null
+++ b/docs/maven/run-mojo.mdtext
@@ -0,0 +1,1391 @@
+<div class="section">
+<h2>tomee:run<a name="tomee:run"></a></h2>
+      
+<p><b>Full name</b>:</p>
+      
+<p>org.apache.openejb.maven:tomee-maven-plugin[:Current Version]:run</p>
+      
+<p><b>Description</b>:</p>
+      
+<div>Start and wait for TomEE.</div>
+      
+<p><b>Attributes</b>:</p>
+      
+<ul>
+        
+<li>Requires a Maven project to be executed.</li>
+        
+<li>Requires dependency resolution of artifacts in scope: <tt>runtime+system</tt>.</li>
+        
+<li>Requires dependency collection of artifacts in scope: <tt>runtime</tt>.</li>
+      </ul>
+      
+<div class="section">
+<h3>Optional Parameters<a name="Optional_Parameters"></a></h3>
+        
+<table class="bodyTable" border="0">
+          
+<tr class="a">
+            
+<th>Name</th>
+            
+<th>Type</th>
+            
+<th>Since</th>
+            
+<th>Description</th>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#apacheRepos">apacheRepos</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>snapshots</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.apache-repos</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#appDir">appDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>apps</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#apps">apps</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#args">args</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.args</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#bin">bin</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/bin</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.bin</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#catalinaBase">catalinaBase</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/apache-tomee</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.catalina-base</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#checkStarted">checkStarted</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.check-started</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#classpaths">classpaths</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#config">config</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/conf</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.conf</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#context">context</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>rename the current artifact<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#debug">debug</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.debug</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#debugPort">debugPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>5005</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.debugPort</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#deployOpenEjbApplication">deployOpenEjbApplication</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.deploy-openejb-internal-application</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#docBases">docBases</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>for TomEE and wars only, which docBase to use for this war.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#ejbRemote">ejbRemote</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.ejb-remote</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#externalRepositories">externalRepositories</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>for TomEE and wars only, add some external repositories to
+classloader.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#forceReloadable">forceReloadable</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>force webapp to be reloadable<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.force-reloadable</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#javaagents">javaagents</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#keepServerXmlAsthis">keepServerXmlAsthis</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(Removed since 7.0.0)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.keep-server-xml</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#lib">lib</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/lib</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.lib</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#libDir">libDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>lib</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#libs">libs</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>supported formats: --&gt; groupId:artifactId:version... --&gt;
+unzip:groupId:artifactId:version... --&gt; remove:prefix (often
+prefix = artifactId)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#mainDir">mainDir</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#password">password</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.pwd</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#quickSession">quickSession</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>use a real random instead of secure random. saves few ms at
+startup.<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.quick-session</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#realm">realm</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.realm</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#reloadOnUpdate">reloadOnUpdate</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.reload-on-update</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#removeDefaultWebapps">removeDefaultWebapps</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.remove-default-webapps</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#removeTomeeWebapp">removeTomeeWebapp</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.remove-tomee-webapps</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#simpleLog">simpleLog</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.simple-log</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#skipCurrentProject">skipCurrentProject</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.skipCurrentProject</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#skipWarResources">skipWarResources</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>when you set docBases to src/main/webapp setting it to true will
+allow hot refresh.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.skipWarResources</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#synchronization">synchronization</a></b></td>
+            
+<td><tt>Synchronization</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#synchronizations">synchronizations</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#systemVariables">systemVariables</a></b></td>
+            
+<td><tt>Map</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#target">target</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeAjpPort">tomeeAjpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8009</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.ajp</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeAlreadyInstalled">tomeeAlreadyInstalled</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.exiting</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeArtifactId">tomeeArtifactId</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>apache-tomee</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.artifactId</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeClassifier">tomeeClassifier</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>webprofile</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.classifier</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeGroupId">tomeeGroupId</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>org.apache.openejb</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.groupId</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeHost">tomeeHost</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>localhost</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.host</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeHttpPort">tomeeHttpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8080</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.http</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeHttpsPort">tomeeHttpsPort</a></b></td>
+            
+<td><tt>Integer</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.https</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeShutdownCommand">tomeeShutdownCommand</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>SHUTDOWN</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.shutdown-command</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeShutdownPort">tomeeShutdownPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8005</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.shutdown</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeVersion">tomeeVersion</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>-1</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.version</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#useConsole">useConsole</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.use-console</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#useOpenEJB">useOpenEJB</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>use openejb-standalone automatically instead of TomEE<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.openejb</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#user">user</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.user</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#warFile">warFile</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/${project.build.finalName}.${project.packaging}</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webappClasses">webappClasses</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.outputDirectory}</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappClasses</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#webappDefaultConfig">webappDefaultConfig</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>forcing nice default for war development (WEB-INF/classes and web
+resources)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappDefaultConfig</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webappDir">webappDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>webapps</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#webappResources">webappResources</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/webapp</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappResources</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webapps">webapps</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+        </table>
+      </div>
+      
+<div class="section">
+<h3>Parameter Details<a name="Parameter_Details"></a></h3>
+        
+<p><b><a name="apacheRepos">apacheRepos</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.apache-repos</tt></li>
+          
+<li><b>Default</b>: <tt>snapshots</tt></li>
+        </ul><hr />
+<p><b><a name="appDir">appDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>apps</tt></li>
+        </ul><hr />
+<p><b><a name="apps">apps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="args">args</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.args</tt></li>
+        </ul><hr />
+<p><b><a name="bin">bin</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.bin</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/bin</tt></li>
+        </ul><hr />
+<p><b><a name="catalinaBase">catalinaBase</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.catalina-base</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/apache-tomee</tt></li>
+        </ul><hr />
+<p><b><a name="checkStarted">checkStarted</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.check-started</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="classpaths">classpaths</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="config">config</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.conf</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/conf</tt></li>
+        </ul><hr />
+<p><b><a name="context">context</a>:</b></p>
+        
+<div>rename the current artifact</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="debug">debug</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.debug</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="debugPort">debugPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.debugPort</tt></li>
+          
+<li><b>Default</b>: <tt>5005</tt></li>
+        </ul><hr />
+<p><b><a name="deployOpenEjbApplication">deployOpenEjbApplication</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.deploy-openejb-internal-application</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="docBases">docBases</a>:</b></p>
+        
+<div>for TomEE and wars only, which docBase to use for this war.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="ejbRemote">ejbRemote</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.ejb-remote</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="externalRepositories">externalRepositories</a>:</b></p>
+        
+<div>for TomEE and wars only, add some external repositories to
+classloader.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="forceReloadable">forceReloadable</a>:</b></p>
+        
+<div>force webapp to be reloadable</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.force-reloadable</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="javaagents">javaagents</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="keepServerXmlAsthis">keepServerXmlAsthis</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.keep-server-xml</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="lib">lib</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.lib</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/lib</tt></li>
+        </ul><hr />
+<p><b><a name="libDir">libDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>lib</tt></li>
+        </ul><hr />
+<p><b><a name="libs">libs</a>:</b></p>
+        
+<div>supported formats: --&gt; groupId:artifactId:version... --&gt;
+unzip:groupId:artifactId:version... --&gt; remove:prefix (often
+prefix = artifactId)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="mainDir">mainDir</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main</tt></li>
+        </ul><hr />
+<p><b><a name="password">password</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.pwd</tt></li>
+        </ul><hr />
+<p><b><a name="quickSession">quickSession</a>:</b></p>
+        
+<div>use a real random instead of secure random. saves few ms at
+startup.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.quick-session</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="realm">realm</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.realm</tt></li>
+        </ul><hr />
+<p><b><a name="reloadOnUpdate">reloadOnUpdate</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.reload-on-update</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="removeDefaultWebapps">removeDefaultWebapps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.remove-default-webapps</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="removeTomeeWebapp">removeTomeeWebapp</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.remove-tomee-webapps</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="simpleLog">simpleLog</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.simple-log</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="skipCurrentProject">skipCurrentProject</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.skipCurrentProject</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="skipWarResources">skipWarResources</a>:</b></p>
+        
+<div>when you set docBases to src/main/webapp setting it to true will
+allow hot refresh.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.skipWarResources</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="synchronization">synchronization</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>org.apache.openejb.maven.plugin.Synchronization</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="synchronizations">synchronizations</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="systemVariables">systemVariables</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.Map</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="target">target</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeAjpPort">tomeeAjpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.ajp</tt></li>
+          
+<li><b>Default</b>: <tt>8009</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeAlreadyInstalled">tomeeAlreadyInstalled</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.exiting</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeArtifactId">tomeeArtifactId</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.artifactId</tt></li>
+          
+<li><b>Default</b>: <tt>apache-tomee</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeClassifier">tomeeClassifier</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.classifier</tt></li>
+          
+<li><b>Default</b>: <tt>webprofile</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeGroupId">tomeeGroupId</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.groupId</tt></li>
+          
+<li><b>Default</b>: <tt>org.apache.openejb</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHost">tomeeHost</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.host</tt></li>
+          
+<li><b>Default</b>: <tt>localhost</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHttpPort">tomeeHttpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.http</tt></li>
+          
+<li><b>Default</b>: <tt>8080</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHttpsPort">tomeeHttpsPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.Integer</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.https</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeShutdownCommand">tomeeShutdownCommand</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.shutdown-command</tt></li>
+          
+<li><b>Default</b>: <tt>SHUTDOWN</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeShutdownPort">tomeeShutdownPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.shutdown</tt></li>
+          
+<li><b>Default</b>: <tt>8005</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeVersion">tomeeVersion</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.version</tt></li>
+          
+<li><b>Default</b>: <tt>-1</tt></li>
+        </ul><hr />
+<p><b><a name="useConsole">useConsole</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.use-console</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="useOpenEJB">useOpenEJB</a>:</b></p>
+        
+<div>use openejb-standalone automatically instead of TomEE</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.openejb</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="user">user</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.user</tt></li>
+        </ul><hr />
+<p><b><a name="warFile">warFile</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/${project.build.finalName}.${project.packaging}</tt></li>
+        </ul><hr />
+<p><b><a name="webappClasses">webappClasses</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappClasses</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.outputDirectory}</tt></li>
+        </ul><hr />
+<p><b><a name="webappDefaultConfig">webappDefaultConfig</a>:</b></p>
+        
+<div>forcing nice default for war development (WEB-INF/classes and web
+resources)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappDefaultConfig</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="webappDir">webappDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>webapps</tt></li>
+        </ul><hr />
+<p><b><a name="webappResources">webappResources</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappResources</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/webapp</tt></li>
+        </ul><hr />
+<p><b><a name="webapps">webapps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul>
+      </div>
+    </div>


[18/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/admin/file-layout.adoc
----------------------------------------------------------------------
diff --git a/docs/admin/file-layout.adoc b/docs/admin/file-layout.adoc
new file mode 100755
index 0000000..433fea3
--- /dev/null
+++ b/docs/admin/file-layout.adoc
@@ -0,0 +1,144 @@
+= Directory Structure
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+ifndef::backend-pdf[]
+
+[#filetree.col-md-4]
+[
+    {
+        label: 'apps',
+        description: 'A common but optional folder containing the applications (war, ear, jar). Note: this folder needs to be activated in tomee.xml for instance and is not there by default.',
+        children: [
+            {label:'module1.jar',description:'An ejbmodule'},
+            {label:'myapp',description:'An exploded war or ear'},
+            {label:'anotherapp.war',description:'A war'},
+            {label:'anotherapp',description:'By default TomEE will explode the war next to the .war file, this is customizable.'},
+            {label:'anotherapp2.ear',description:'An ear'},
+            {label:'anotherapp2',description:'By default TomEE will explode the ear next to the .ear file, this is customizable.'}
+        ]
+    },
+    {
+        label: 'bin',
+        description: 'The executable and boot related files',
+        children: [
+            {label:'bootstrap.jar',description:'The jar allowing Tomcat to start'},
+            {label:'catalina.bat',description:'The windows main Tomcat script'},
+            {label:'catalina.bat.original',description:'The original catalina.bat from Tomcat. TomEE customizes it.'},
+            {label:'catalina.sh',description:'The UNIx main Tomcat script'},
+            {label:'catalina.sh.original',description:'The original catalina.sh from Tomcat. TomEE customizes it.'},
+            {label:'catalina-tasks.xml',description:'Some Ant tasks Tomcat provides to work with JMX'},
+            {label:'commons-daemon.jar',description:'When setting up TomEE as a service you need this jar.'},
+            {label:'commons-daemon-native.tar.gz',description:'The native needed by commons-daemon'},
+            {label:'configtest.bat',description:'A windows script to validate the server.xml'},
+            {label:'configtest.sh',description:'A UNIx script to validate the server.xml'},
+            {label:'daemon.sh',description:'A script which can be used as init.d script'},
+            {label:'digest.bat',description:'A windows script to compute a digest'},
+            {label:'digest.sh',description:'A UNIx script to compute a digest'},
+            {label:'service.bat',description:'The windows service script'},
+            {label:'service.install.as.admin.bat',description:'Install TomEE as a service on windows'},
+            {label:'service.readme.txt',description:'The explanations on how to setup TomEE as a windows service'},
+            {label:'service.remove.as.admin.bat',description:'Uninstall TomEE service on windows'},
+            {label:'setclasspath.bat',description:'The script called by catalina.bat to initialize Tomcat classpath'},
+            {label:'setclasspath.sh',description:'The script called by catalina.bat to initialize TomEE classpath'},
+            {label:'setenv.sh',description:'A UNIx user script (optional) where you can specify some JVM options like CATALINA_OPTS environment variable'},
+            {label:'setenv.bat',description:'A windows user script (optional) where you can specify some JVM options like CATALINA_OPTS environment variable'},
+            {label:'shutdown.bat',description:'Stop the server on windows, it is commonly used with -force and a timeout as options'},
+            {label:'shutdown.sh',description:'Stop the server on UNIx, it is commonly used with -force and a timeout as options'},
+            {label:'startup.bat',description:'Start (and forget) TomEE on windows'},
+            {label:'startup.sh',description:'Start (and forget) TomEE on UNIx'},
+            {label:'tomcat-juli.jar',description:'The Tomcat Java Util Logging extensions which allow for instance to configure the logging per application'},
+            {label:'tomcat-native.tar.gz',description:'The Tomcat native used by some connectors'},
+            {label:'TomEE....exe',description:'TomEE windows executables when setup as a service for amd64 architectures'},
+            {label:'tomee.bat',description:'TomEE utility script for windows, allows to compute ciphers for instance'},
+            {label:'tomee.sh',description:'TomEE utility script for UNIx, allows to compute ciphers for instance'},
+            {label:'tool-wrapper.bat',description:'Windows script calling Tomcat Tool utility. It executes a command line with Tomcat classloader.'},
+            {label:'tool-wrapper.sh',description:'UNIx script calling Tomcat Tool utility. It executes a command line with Tomcat classloader.'},
+            {label:'version.bat',description:'Print Tomcat version (for windows)'},
+            {label:'version.sh',description:'Print Tomcat version (for UNIx)'}
+        ]
+    },
+    {
+        label: 'conf',
+        description: 'Folder containing the configuration of TomEE',
+        children: [
+            {label:'Catalina',description:'A folder where Tomcat can copy web application configuration (typically context.xml can be overriden from there)'},
+            {label:'catalina.policy',description:'The server security policy rules'},
+            {label:'catalina.properties',description:'The server boot configuration (classloader etc...)'},
+            {label:'conf.d',description:'A TomEE folder where services can pick configuration'},
+            {label:'context.xml',description:'The default context.xml configuration'},
+            {label:'logging.properties',description:'The logging configuration for the server and applications (overridable)'},
+            {label:'server.xml',description:'The server configuration (Host, Context, Valves, ...)'},
+            {label:'server.xml.original',description:'The original server.xml, TomEE updates it to add its lifecycle manager.'},
+            {label:'system.properties',description:'TomEE global configuration'},
+            {label:'tomcat-users.xml',description:'The default location where tomcat stores users.'},
+            {label:'tomcat-users.xml.original',description:'The Tomcat tomcat-users.xml (TomEE add comments)'},
+            {label:'tomcat-users.xsd',description:'The XSD for tomcat-users.xml'},
+            {label:'tomee.xml',description:'The TomEE configuration file, syntax is hybrid between XML and Properties and it is fully replaceable with system.properties but users generally prefer this file.'},
+            {label:'web.xml',description:'The default web.xml'}
+        ]
+    },
+    {
+        label: 'lib',
+        description: 'Folder containing TomEE binaries',
+        children: [
+            {label:'*.jar',description:'Tomcat + TomEE libraries'}
+        ]
+    },
+    {
+        label: 'logs',
+        description: 'Default location of log files',
+        children: [
+            {label:'catalina.$day.log',description:'By default container logs go there'},
+            {label:'xxx.2016-03-16.log',description:'By default application xxx logs go there (when using servlet API)'},
+            {label:'localhost.$day.log',description:'By default host related logs go there'},
+            {label:'localhost_access_log.$day.txt',description:'By default access logs (request the container processed) go there'}
+        ]
+    },
+    {
+        label: 'temp',
+        description: 'Java temporary directory is redirected by default to this folder',
+        children: [
+            {label:'OpenEJB-dejlzdbhjzbfrzeofrh',description:'A temporary file TomEE can create (suffix depends the startup) to check the instance'}
+        ]
+    },
+    {
+        label: 'webapps',
+        description: 'Folder containing the web applications',
+        children: [
+            {label:'myapp',description:'An exploded war'},
+            {label:'anotherapp.war',description:'A war'},
+            {label:'anotherapp',description:'By default TomEE will explode the war next to the .war file, this is customizable.'}
+        ]
+    },
+    {
+        label: 'work',
+        description: 'Folder where Tomcat and TomEE can work',
+        children: [
+            {
+                label:'Catalina',description:'By default Tomcat Engine is called Catalina. This folder matches engine name.',
+                children: [
+                    {
+                        label:'localhost',description:'A folder by host by engine to seggregate data of each ones',
+                        children: [
+                            {
+                                label:'myapp',description:'An application deployed on the previous level host',
+                                children: [
+                                    { label:'org.apache.jsp.index_jsp.java',description:'The generated JSP source (index.jsp there)' },
+                                    { label:'org.apache.jsp.index_jsp.class',description:'The compiled JSP binary' }
+                                ]
+                            }
+                        ]
+                    }
+                ]
+            }
+        ]
+    }
+]
+
+[#filetreedetail.col-md-8.bs-callout.bs-callout-primary]
+Click on a tree node or open a folder to see the detail there.
+
+endif::[]

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/admin/index.adoc
----------------------------------------------------------------------
diff --git a/docs/admin/index.adoc b/docs/admin/index.adoc
new file mode 100755
index 0000000..9c10d63
--- /dev/null
+++ b/docs/admin/index.adoc
@@ -0,0 +1,7 @@
+= Administrator
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+Click link:../docs.html[here] to find the documentation for administrators.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/advanced/.DS_Store
----------------------------------------------------------------------
diff --git a/docs/advanced/.DS_Store b/docs/advanced/.DS_Store
new file mode 100644
index 0000000..2718e5f
Binary files /dev/null and b/docs/advanced/.DS_Store differ

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/advanced/applicationcomposer/index.adoc
----------------------------------------------------------------------
diff --git a/docs/advanced/applicationcomposer/index.adoc b/docs/advanced/applicationcomposer/index.adoc
new file mode 100755
index 0000000..50390cc
--- /dev/null
+++ b/docs/advanced/applicationcomposer/index.adoc
@@ -0,0 +1,76 @@
+= ApplicationComposer with JBatch
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+ApplicationComposer can be a way to run a JBatch not needing any HTTP connector.
+
+Here is an example making batch integration easy - note you can extract the generic part in a library very easily:
+
+TIP: if you didn't check yet BatchEE provides some standalone utilities for JBatch but the idea of this page can be reused for a lot of applications.
+
+[source,java]
+----
+// helper class reusable for any batch
+abstract class BatchApplication {
+    private static final DateTimeFormatter DATE = DateTimeFormatter.ofPattern("YYYYMMddHHmmss");
+
+    protected Report runBatch(final String batchName, final Properties config) {
+        final JobOperator operator = BatchRuntime.getJobOperator();
+        final long id = operator.start(batchName, config);
+        Batches.waitForEnd(operator, id);
+        return new Report(operator.getJobExecution(id), operator.getParameters(id));
+    }
+
+    @Module // we enforce BatchEE to be initialized as an EJB context to get JNDI for JTA init, needed for TomEE 1
+    public EjbModule ensureBatchEESetupIsDoneInTheRightContext() {
+        final EjbJar ejbJar = new EjbJar().enterpriseBean(new SingletonBean(BatchEEBeanManagerInitializer.class));
+
+        final Beans beans = new Beans();
+        beans.addManagedClass(BatchEEBeanManagerInitializer.Init.class);
+
+        final EjbModule ejbModule = new EjbModule(ejbJar);
+        ejbModule.setModuleId("batchee-shared-components");
+        ejbModule.setBeans(beans);
+        return ejbModule;
+    }
+
+    public static class Report {
+        private final JobExecution execution;
+        private final Properties properties;
+
+        public Report(final JobExecution execution, final Properties properties) {
+            this.execution = execution;
+            this.properties = properties;
+        }
+
+        public JobExecution getExecution() {
+            return execution;
+        }
+
+        public Properties getProperties() {
+            return properties;
+        }
+    }
+}
+
+@Classes(cdi = true, value = { MyFilter.class, MoveFile.class, InputFile.class, MyReader.class, LoggingListener.class })
+public class MyBatch extends BatchApplication {
+    private final Properties config;
+
+    public Mybatch(final String[] args) { // main args
+        this.config = new Properties() {{ // create the batch config
+            setProperty("input-directory", args[0]);
+        }};
+    }
+
+    public Report execute(final String inputDirectory) {
+        return runBatch("sunstone", config);
+    }
+
+    public static void main(final String[] args) throws Exception {
+        ApplicationComposers.run(MyBatch.class, args);
+    }
+}
+----

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/advanced/client/jndi.adoc
----------------------------------------------------------------------
diff --git a/docs/advanced/client/jndi.adoc b/docs/advanced/client/jndi.adoc
new file mode 100644
index 0000000..a6e461a
--- /dev/null
+++ b/docs/advanced/client/jndi.adoc
@@ -0,0 +1,116 @@
+== Java Naming and Directory Interface (JNDI)
+:jbake-date: 2016-10-14
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE has several JNDI client intended for multiple usages.
+
+== Default one
+
+In a standalone instance you generally don't need (or want) to specify anything
+to do a lookup. Doing so you will inherit from the contextual environment:
+
+[source,java]
+----
+final Context ctx = new InitialContext();
+ctx.lookup("java:....");
+----
+
+== LocalInitialContextFactory
+
+This is the legacy context factory used by OpenEJB. It is still useful to fallback
+on the "default" one in embedded mode where sometimes classloaders or libraries can mess
+up the automatic conextual context.
+
+Usage:
+
+[source,java]
+----
+Properties properties = new Properties();
+properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+final Context ctx = new InitialContext(properties);
+ctx.lookup("java:....");
+----
+
+This context factory supports few more options when *you boot the container* creating a context:
+
+|===
+| Name | Description
+| openejb.embedded.remotable | true/false: starts embedded services
+| Context.SECURITY_PRINCIPAL/Context.SECURITY_CREDENTIALS | the *global* security identity for the whole container
+|===
+
+IMPORTANT: `Context.SECURITY_*` shouldn't be used for runtime lookups with `LocalInitialContextFactory`, it would leak a security identity and make the runtime no more thread safe.
+This factory was deprecated starting with 7.0.2 in favor of `org.apache.openejb.core.OpenEJBInitialContextFactory`.
+
+== OpenEJBInitialContextFactory
+
+This factory allows you to access local EJB and container resources.
+
+[source,java]
+----
+Properties properties = new Properties();
+properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.OpenEJBInitialContextFactory");
+final Context ctx = new InitialContext(properties);
+ctx.lookup("java:....");
+----
+
+== RemoteInitialContextFactory
+
+Intended to be used to contact a remote server, the `org.apache.openejb.client.RemoteInitialContextFactory` relies on the provider url
+to contact a tomee instance:
+
+[source,java]
+----
+Properties p = new Properties();
+p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
+p.put(Context.PROVIDER_URL, "failover:ejbd://192.168.1.20:4201,ejbd://192.168.1.30:4201");
+
+final InitialContext remoteContext = new InitialContext(p);
+ctx.lookup("java:....");
+----
+
+Contrarly to local one, the remote factory supports `Context.SECURITY_*` options in a thread safe manner and you can do lookups at runtime using them.
+
+See link:../../admin/cluster/index.html[Cluster] page for more details on the options.
+
+=== Security
+
+The context configuration can take additional configuration to handle EJB security:
+
+[source]
+----
+p.put("openejb.authentication.realmName", "my-realm"); // optional
+p.put(Context.SECURITY_PRINCIPAL, "alfred");
+p.put(Context.SECURITY_CREDENTIALS, "bat");
+----
+
+The realm will be used by JAAS to get the right LoginModules and principal/credentials to
+do the actual authentication.
+
+==== HTTP case
+
+Often HTTP layer is secured and in this case you need to authenticate before the EJBd (remote EJB TomEE protocol) layer.
+Thanks to TomEE/Tomcat integration login there will propagate to the EJBd context.
+
+This can be done passing the token you need to set as `Authorization` header in the `PROVIDER_URL`:
+
+[source]
+----
+// tomee/openejb principal/credentials
+p.put(Context.PROVIDER_URL, "http://localhost:8080/tomee/ejb?authorization=Basic%20dG9tZWU6b3BlbmVqYg==");
+----
+
+The token passed as `authorization` query parameter is the header value URL encoded. It can
+be any token like a basic one, a custom one, an OAuth2 one (in this case you need to renew it programmatically
+and change your client instance when renewing) etc...
+
+TIP: basic being very common there is a shortcut with two alternate query parameter replacing `authorization` one: `basic.password` and `basic.username`.
+
+Finally if you don't use `Authorization` header you can change the used header setting `authorizationHeader` query parameter.
+
+NOTE: `authorization`, `authorizationHeader`, `basic.username`, and `basic.password` are removed
+from the URL before opening the connection and therefore not logged in the remote server access log since version 7.0.3.
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/advanced/index.adoc
----------------------------------------------------------------------
diff --git a/docs/advanced/index.adoc b/docs/advanced/index.adoc
new file mode 100755
index 0000000..7928b61
--- /dev/null
+++ b/docs/advanced/index.adoc
@@ -0,0 +1,7 @@
+= Advanced
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+Click link:../docs.html[here] to find advanced documentation.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/advanced/jms/jms-configuration.adoc
----------------------------------------------------------------------
diff --git a/docs/advanced/jms/jms-configuration.adoc b/docs/advanced/jms/jms-configuration.adoc
new file mode 100644
index 0000000..701b1dd
--- /dev/null
+++ b/docs/advanced/jms/jms-configuration.adoc
@@ -0,0 +1,67 @@
+= Why is my ActiveMQ/JMS MDB not scaling as expected?
+:jbake-date: 2017-02-22
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+==== Why my ActiveMQ/JMS MDB is not scaling as expected?
+
+There are multiple configurations points to ensure you scale as much as you want.
+
+Here some common configuration to validate (note that when possible the sample value is the default):
+
+- The resource adapter thread pool ("worker threads" or `WorkManager`) limits the number of max work threads:
+
+[source,xml]
+----
+<Resource id="my resource adapter" ....>
+  # using -1 will make the server using cached threads (unbounded)
+  # min recommanded: maxSessions + 1 (for connect())
+  threadPoolSize = 30
+</Resource>
+----
+
+- Then the MDB container itself has a upper bound through `InstanceLimit` which controls the max MDB instance count:
+
+[source,xml]
+----
+<Container id="my mdb container" type="MESSAGE">
+    # -1 will disable it
+    # min recommanded = maxSessions
+    InstanceLimit = 10
+</Container>
+----
+
+- ActiveMQ `maxSessions` controls how many sessions a MDB can use:
+
+[source,java]
+----
+@MessageDriven(activationConfig = {
+        @javax.ejb.ActivationConfigProperty(propertyName = "maxSessions", propertyValue = "1"),
+        @javax.ejb.ActivationConfigProperty(propertyName = "destination", propertyValue = "target-queue")
+})
+public static class MyMdb implements MessageListener {
+    @Override
+    public void onMessage(final Message message) {
+        // ...
+    }
+}
+----
+
+- The ConnectionFactory has also an instance pool through geronimo-connector logic, configuration
+ can make the behavior changing but this is controlled through pool related variables (the pool and resource properties are merged in the definition):
+
+[source,xml]
+----
+<Resource id="my connection factory" type="ConnectionFactory">
+    # recommanded to be aligned on maxSessions
+    PoolMaxSize = 10
+    # for 100% MDB (no client) you can evaluate to turn it off/false, for client it can still be useful depending what you do
+    Pooling = true
+</Resource>
+----
+
+==== Slow Message Consumption
+
+If you find you have a slow consumption of messages there are several options to have a look (activemq website explains it very well)
+but one very impacting option can be the prefetch size.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/advanced/setup/index.adoc
----------------------------------------------------------------------
diff --git a/docs/advanced/setup/index.adoc b/docs/advanced/setup/index.adoc
new file mode 100755
index 0000000..4fe684d
--- /dev/null
+++ b/docs/advanced/setup/index.adoc
@@ -0,0 +1,142 @@
+= How to Setup TomEE in production
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+
+
+You can use TomEE as described on link:../../admin/directory-structure.html[Directory Structure] page but in production it is better to
+split TomEE and application binaries and configuration.
+
+Idea is to have this kind of layout (the root is the one you prefer):
+
+ifndef::backend-pdf[]
+
+[#filetree.col-md-4]
+[{
+    label: '/some/path',
+    description: 'any location on your file system',
+    children: [
+        {
+            label: 'tomee',
+            description: 'all tomee binaries will be there, note: you often do the same for the JVM versions you have',
+            children: [
+                {
+                    label: 'tomee-1.7.1',
+                    description: 'a particular tomee version (just unzip it there)',
+                    children: [
+                        { label: 'bin', description: 'the startup binaries/scripts' },
+                        { label: 'conf', description: 'default shared configuration for this version, can be overwritten by instance' },
+                        { label: 'lib', description: 'the binaries' }
+                    ]
+                },
+                {
+                    label: 'tomee-1.7.2',
+                    description: 'a particular tomee version (just unzip it there)',
+                    children: [
+                        { label: 'bin', description: 'the startup binaries/scripts' },
+                        { label: 'conf', description: 'default shared configuration for this version, can be overwritten by instance' },
+                        { label: 'lib', description: 'the binaries' }
+                    ]
+                },
+                {
+                    label: 'tomee-7.0.0-M3',
+                    description: 'a particular tomee version (just unzip it there)',
+                    children: [
+                        { label: 'bin', description: 'the startup binaries/scripts' },
+                        { label: 'conf', description: 'default shared configuration for this version, can be overwritten by instance' },
+                        { label: 'lib', description: 'the binaries' }
+                    ]
+                }
+            ]
+        },
+        {
+            label: 'applications',
+            description: 'all applications',
+            children: [
+                {
+                    label: 'application1',
+                    description: 'any application instance (ie configuration + binaries)',
+                    children: [
+                        { label: 'bin', description: 'provide scripts for this instance (see under that file layout)' },
+                        { label: 'conf', description: 'the instance configuration, typically what is in tomee/conf when used in standalone' },
+                        { label: 'lib', description: 'some additional binaries like JDBC drivers' },
+                        { label: 'logs', description: 'instances logs location' },
+                        { label: 'work', description: 'dedicated work directory' },
+                        { label: 'temp', description: 'instance temporary folder' },
+                        { label: 'webapps', description: 'instance webapp folder' }
+                    ]
+                },
+                {
+                    label: 'application2',
+                    description: 'any application instance (ie configuration + binaries)',
+                    children: [
+                        { label: 'bin', description: 'provide scripts for this instance (see under that file layout)' },
+                        { label: 'conf', description: 'the instance configuration, typically what is in tomee/conf when used in standalone' },
+                        { label: 'lib', description: 'some additional binaries like JDBC drivers' },
+                        { label: 'logs', description: 'instances logs location' },
+                        { label: 'work', description: 'dedicated work directory' },
+                        { label: 'temp', description: 'instance temporary folder' },
+                        { label: 'webapps', description: 'instance webapp folder' }
+                    ]
+                }
+            ]
+        }
+    ]
+}]
+
+
+[#filetreedetail.col-md-8.bs-callout.bs-callout-primary]
+Click on a tree node or open a folder to see the detail there.
+
+[.clearfix]
+&nbsp;
+
+endif::[]
+
+=== Instance scripts
+
+The idea for instances (applications) scripts is to simply delegate to tomcat ones but customizing the JVM and TomEE versions.
+
+Customizing the version (and locations) is done in `bin/setenv.sh` of instances.
+
+Here are an example for the common scripts (of course you can write helper version like restart etc).
+
+==== setenv.sh
+
+[source,bash]
+----
+#! /bin/sh
+
+# which java
+export JAVA_HOME="/some/path/java/jdk-8u60"
+# which tomee
+export CATALINA_HOME="/some/path/tomee/tomee-7.0.0-M3"
+# where is the application - to let tomcat/tomee finds the configuration
+export CATALINA_BASE="/some/path/application1/"
+# to let tomee be able to kill the instance if shutdown doesn't work (see shutdown script)
+export CATALINA_PID="/some/path/application1/work/tomee.pid"
+----
+
+==== startup
+
+[source,bash]
+----
+#! /bin/bash
+
+proc_script_base="`cd $(dirname $0) && cd .. && pwd`"
+source "$proc_script_base/bin/setenv.sh"
+nohup "$CATALINA_HOME/bin/startup.sh" "$@" > $proc_script_base/logs/nohup.log &
+----
+
+==== shutdown
+
+[source,bash]
+----
+#! /bin/bash
+
+proc_script_base="`cd $(dirname $0) && cd .. && pwd`"
+source "$proc_script_base/bin/setenv.sh"
+# we support parameters like timeout and force, typically we would call it this way: ./shutdown 1200 -force
+"$CATALINA_HOME/bin/shutdown.sh" "$@"
+----
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/advanced/shading/index.adoc
----------------------------------------------------------------------
diff --git a/docs/advanced/shading/index.adoc b/docs/advanced/shading/index.adoc
new file mode 100755
index 0000000..fc4b18a
--- /dev/null
+++ b/docs/advanced/shading/index.adoc
@@ -0,0 +1,276 @@
+= Fat / Uber jars - Using the Shade Plugin
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+Shading the container and the application has some challenges like merging correctly resources (`META-INF/services/` typically).
+
+Here is a maven shade plugin configuration working for most cases:
+
+[source,xml]
+----
+<plugin>
+  <groupId>org.apache.maven.plugins</groupId>
+  <artifactId>maven-shade-plugin</artifactId>
+  <version>2.3</version>
+  <executions>
+    <execution>
+      <phase>package</phase>
+      <goals>
+        <goal>shade</goal>
+      </goals>
+      <configuration>
+        <dependencyReducedPomLocation>${project.build.directory}/reduced-pom.xml</dependencyReducedPomLocation>
+        <transformers>
+          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+            <mainClass>org.apache.tomee.embedded.FatApp</mainClass>
+          </transformer>
+          <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+            <resource>META-INF/cxf/bus-extensions.txt</resource>
+          </transformer>
+          <transformer implementation="org.apache.openwebbeans.maven.shade.OpenWebBeansPropertiesTransformer" />
+        </transformers>
+        <filters>
+          <filter> <!-- we don't want JSF to be activated -->
+            <artifact>*:*</artifact>
+            <excludes>
+              <exclude>META-INF/faces-config.xml</exclude>
+            </excludes>
+          </filter>
+        </filters>
+      </configuration>
+    </execution>
+  </executions>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.openwebbeans</groupId>
+      <artifactId>openwebbeans-maven</artifactId>
+      <version>1.7.0/version>
+    </dependency>
+  </dependencies>
+</plugin>
+----
+
+NOTE: see link:../tomee-embedded/index.html[TomEE Embedded] page for more information about tomee embedded options.
+
+IMPORTANT: this shade uses TomEE Embedded but you can do the same with an link:../applicationcomposer/index.html[Application Composer] application.
+
+TIP: if you have `META-INF/web-fragment.xml` in your application you will need to merge them in a single one in the shade. Note that tomcat provides one
+which can be skipped in this operation since it is there only as a marker for jasper detection.
+
+Then just build the jar:
+
+[source,bash]
+----
+mvn clean package
+----
+
+And you can run it:
+
+[source,bash]
+----
+java -jar myapp-1.0-SNAPSHOT.jar
+----
+
+== Fat Jars with Gradle
+
+With gradle you can rely on either jar plugin, fatjar plugin or shadowjar plugin. Last one is likely the closer to maven shade plugin
+so that's the one used for next sample:
+
+[source,groovy]
+----
+// run $ gradle clean shadowJar
+import org.apache.openwebbeans.gradle.shadow.OpenWebBeansPropertiesTransformer
+
+buildscript {
+    repositories {
+        mavenLocal()
+        jcenter()
+    }
+    dependencies {
+        classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.3'
+        classpath 'org.apache.openwebbeans:openwebbeans-gradle:1.7.0'
+    }
+}
+
+apply plugin: 'com.github.johnrengelman.shadow'
+
+group 'org.apache.tomee.demo.gradle'
+version '1.0-SNAPSHOT'
+
+apply plugin: 'idea'
+apply plugin: 'java'
+
+sourceCompatibility = 1.8
+
+repositories {
+    mavenLocal()
+    mavenCentral()
+}
+
+dependencies {
+    compileOnly 'org.projectlombok:lombok:1.16.10'
+    compile 'org.apache.tomee:tomee-embedded:7.0.2-SNAPSHOT'
+}
+
+// customize exclusions depending your app
+
+// first the not used dependencies like JSF, JAXWS, JMS ones
+def excludedDependenciesGroups = [
+        // gradle is buggy with poms, scope provided and optional I think
+        'com.google.code.findbugs',
+        'com.google.guava',
+        'javax.annotation',
+        'javax.ws.rs',
+        'net.sf.ehcache',
+        'org.apache.httpcomponents',
+        'org.ow2.asm',
+        // tomee jaxws, jms, etc...
+        'commons-codec',
+        'com.sun.xml.messaging.saaj',
+        'joda-time',
+        'junit',
+        'net.shibboleth.utilities',
+        'org.apache.activemq',
+        'org.apache.activemq.protobuf',
+        'org.apache.myfaces.core',
+        'org.apache.neethi',
+        'org.apache.santuario',
+        'org.apache.ws.xmlschema',
+        'org.apache.wss4j',
+        'org.bouncycastle',
+        'org.cryptacular',
+        'org.fusesource.hawtbuf',
+        'org.jasypt',
+        'org.jvnet.mimepull',
+        'org.opensaml',
+        'wsdl4j',
+        'xml-resolver'
+]
+
+// then cxf+tomee specific dependencies so we need to be more precise than the group
+// to not exclude everything
+def excludedDependenciesArtifacts = [
+        'cxf-rt-bindings-soap',
+        'cxf-rt-bindings-xml',
+        'cxf-rt-databinding-jaxb',
+        'cxf-rt-frontend-jaxws',
+        'cxf-rt-frontend-simple',
+        'cxf-rt-security-saml',
+        'cxf-rt-ws-addr',
+        'cxf-rt-wsdl',
+        'cxf-rt-ws-policy',
+        'cxf-rt-ws-security',
+        'openejb-cxf',
+        'openejb-webservices',
+        'tomee-webservices',
+        'geronimo-connector',
+        'geronimo-javamail_1.4_mail'
+]
+shadowJar {
+    classifier = 'bundle'
+
+    // merge SPI descriptors
+    mergeServiceFiles()
+    append 'META-INF/cxf/bus-extensions.txt'
+    transform(OpenWebBeansPropertiesTransformer.class)
+
+    // switch off JSF + JMS + JAXWS
+    exclude 'META-INF/faces-config.xml'
+    dependencies {
+        exclude(dependency {
+            excludedDependenciesGroups.contains(it.moduleGroup) ||
+                    excludedDependenciesArtifacts.contains(it.moduleName)
+        })
+    }
+
+    // ensure we define the expected Main (if you wrap tomee main use your own class)
+    manifest {
+        attributes 'Main-Class': 'org.apache.tomee.embedded.FatApp'
+    }
+}
+----
+
+Then run:
+
+[source]
+----
+gradle clean build shadowJar
+----
+
+and you'll get `build/libs/demo-gradle-tomee-embedded-shade-1.0-SNAPSHOT-bundle.jar` ready to run with:
+
+[source]
+----
+java -jar build/libs/demo-gradle-tomee-embedded-shade-1.0-SNAPSHOT-bundle.jar --as-war --simple-log=true
+----
+
+== Fat Wars
+
+Fat Wars are executable wars. Note they can be fancy for demos but they have the drawback to put the server in web resources
+at packaging time (to ensure the war is actually an executable jar) so adding a filter preventing these files to be read
+can be needed if you don't already use a web technology doing it (a servlet bound to /*).
+
+Here how to do a fat war:
+
+[source,xml]
+----
+<properties>
+  <!-- can be uber (for all), jaxrs, jaxws for lighter ones -->
+  <tomee.flavor>uber</tomee.flavor>
+</properties>
+
+<dependencies>
+  <!-- ...your dependencies as usual... -->
+  <dependency>
+    <groupId>org.apache.tomee</groupId>
+    <artifactId>tomee-embedded</artifactId>
+    <classifier>${tomee.flavor}</classifier>
+    <version>7.0.0</version>
+    <scope>provided</scope>
+  </dependency>
+</dependencies>
+
+<build>
+  <plugins>
+    <plugin>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-war-plugin</artifactId>
+      <version>2.6</version>
+      <configuration>
+        <failOnMissingWebXml>false</failOnMissingWebXml>
+        <archive>
+          <manifest>
+            <mainClass>org.apache.tomee.embedded.Main</mainClass>
+          </manifest>
+        </archive>
+        <dependentWarExcludes />
+        <overlays>
+          <overlay>
+            <groupId>org.apache.tomee</groupId>
+            <artifactId>tomee-embedded</artifactId>
+            <classifier>${tomee.flavor}</classifier>
+            <type>jar</type>
+            <excludes />
+          </overlay>
+        </overlays>
+      </configuration>
+    </plugin>
+  </plugins>
+</build>
+----
+
+Then just build the war:
+
+[source,bash]
+----
+mvn clean package
+----
+
+And you can run it:
+
+[source,bash]
+----
+java -jar myapp-1.0-SNAPSHOT.war
+----

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/advanced/tomee-embedded/index.adoc
----------------------------------------------------------------------
diff --git a/docs/advanced/tomee-embedded/index.adoc b/docs/advanced/tomee-embedded/index.adoc
new file mode 100755
index 0000000..8664ade
--- /dev/null
+++ b/docs/advanced/tomee-embedded/index.adoc
@@ -0,0 +1,223 @@
+= TomEE Embedded
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE Embedded is based on Tomcat embedded and starts a real TomEE in the launching JVM. It is also
+able to deploy the classpath as a webapp and to use either `META-INF/resources` or a folder as web resources.
+
+Here is a basic programmatic usage based on `org.apache.tomee.embedded.Container` class:
+
+[source,java]
+----
+try (final Container container = new Container(new Configuration()).deployClasspathAsWebApp()) {
+    System.out.println("Started on http://localhost:" + container.getConfiguration().getHttpPort());
+
+    // do something or wait until the end of the application
+}
+----
+
+All EE features are then accessible directly in the same JVM.
+
+== TomEE Embedded Configuration
+
+The default configuration allows to start tomee without issue but you can desire to customize some of them.
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Default | Description
+|httpPort | 8080| http port
+|stopPort | 8005| shutdown port
+|host |localhost| host
+|dir|-|where to create a file hierarchy for tomee (conf, temp, ...)
+|serverXml|-|which server.xml to use
+|keepServerXmlAsThis|false|don't adjust ports/host from the configuration and keep the ones in server.xml
+|properties|-|container properties
+|quickSession | true|use Random instead of SecureRandom (for dev)
+|skipHttp|false|don't use the http connector
+|httpsPort | 8443|https potr
+|ssl|false| activate https
+|withEjbRemote|false|use EJBd
+|keystoreFile|-|https keystore location
+|keystorePass|-|https keystore password
+|keystoreType |JKS|https keystore type
+|clientAuth|-|https client auth
+|keyAlias|-|https alias
+|sslProtocol|-|SSL protocol for https connector
+|webXml|-|default web.xml to use
+|loginConfig|-|which LoginConfig to use, relies on `org.apache.tomee.embedded.LoginConfigBuilder` to create it
+|securityConstraints|-|add some security constraints, use `org.apache.tomee.embedded.SecurityConstaintBuilder` to build them
+|realm|-|which realm to use (useful to switch to `JAASRealm` for instance) without modifying the application
+|deployOpenEjbApp|false|should internal openejb application be delpoyed
+|users|-|a map of user/password
+|roles|-|a map of role/users
+|tempDir|${java.io.tmpdir}/tomee-embedded_${timestamp}|tomcat needs a docBase, in case you don't provide one one will be created there
+|webResourceCached |true|should web resources be cached by tomcat (set false in frontend dev)
+|configuration-location|-|location (classpath or file) to a .properties to configure the server
+[pre-task|-|Runnable or org.apache.tomee.embedded.LifecycleTask implementations to execute before the container starts
+|classes-filter|-|implementation of a custom xbean Filter to ignore not desired classes during scanning
+|basic|-|set /* under BASIC authentication for the realm "Security", authentication role being "*"
+|===
+
+Note: passing to `Container` constructor a `Configuration` it will start the container automatically but using `setup(Configuration)`
+to initialize the configuration you will need to call `start()`.
+
+You can also pass through the properties `connector.xxx` and `connector.attributes.xxx` to customize connector(s)
+configuration directly.
+
+== Standalone applications or TomEE Embedded provided main(String[])
+
+Deploying an application in a server is very nice cause the application is generally small and it allows to update the
+container without touching the application (typically insanely important in case of security issues for instance).
+
+However sometimes you don't have the choice so TomEE Embedded provides a built-in `main(String[])`. Here are its options:
+
+NOTE: this is still a TomEE so all system properties work (for instance to create a resource).
+
+[.table.table-bordered,options="header"]
+|===
+|Name|Default|Description
+|--path|-|location of application(s) to deploy
+|--context|-|Context name for applications (same order than paths)
+|-p or --port|8080|http port
+|-s or --shutdown|8005|shutdown port
+|-d or --directory|./.apache-tomee|tomee work directory
+|-c or --as-war|-|deploy classpath as a war
+|-b or --doc-base|-|where web resources are for classpath deployment
+|--renaming|-|for fat war only, is renaming of the context supported
+|--serverxml|-|the server.xml location
+|--tomeexml|-|the server.xml location
+|--property|-|a list of container properties (values follow the format x=y)
+|===
+
+Note that since 7.0.0 TomEE provides 3 flavors (qualifier) of tomee-embedded as fat jars:
+
+- uber (where we put all request features by users, this is likely the most complete and the biggest)
+- jaxrs: webprofile minus JSF
+- jaxws: webprofile plus JAX-WS
+
+These different uber jars are interesting in mainly 2 cases:
+
+- you do a war shade (it avoids to list a bunch of dependencies but still get a customized version)
+- you run your application using `--path` option
+
+NOTE: if you already do a custom shade/fatjar this is not really impacting since you can depend on `tomee-embedded` and exclude/include what you want.
+
+== FatApp a shortcut main
+
+`FatApp` main (same package as tomee embedded `Main`) just wraps the default main ensuring:
+
+- ̀`--as-war` is used
+- ̀`--single-classloader` is used
+- `--configuration-location=tomee-embedded.properties` is set if `tomee-embedded.properties` is found in the classpath
+
+== configuration-location
+
+`--configuration-location` option allows to simplify the configuration of tomee embedded through properties.
+
+Here are the recognized entries (they match the configuration, see org.apache.tomee.embedded.Configuration for the detail):
+
+|===
+|Name|
+|http|
+|https|
+|stop|
+|host|
+|dir|
+|serverXml|
+|keepServerXmlAsThis|
+|quickSession|
+|skipHttp|
+|ssl|
+|http2|
+|webResourceCached|
+|withEjbRemote|
+|deployOpenEjbApp|
+|keystoreFile|
+|keystorePass|
+|keystoreType|
+|clientAuth|
+|keyAlias|
+|sslProtocol|
+|webXml|
+|tempDir|
+|classesFilter|
+|conf|
+|properties.x (set container properties x with the associated value)|
+|users.x (for default in memory realm add the user x with its password - the value)|
+|roles.x (for default in memory realm add the role x with its comma separated users - the value)|
+|connector.x (set the property x on the connector)|
+|realm=fullyqualifiedname,realm.prop=xxx (define a custom realm with its configuration)|
+|login=,login.prop=xxx (define a org.apache.tomee.embedded.LoginConfigBuilder == define a LoginConfig)|
+|securityConstraint=,securityConstraint.prop=xxx (define a org.apache.tomee.embedded.SecurityConstaintBuilder == define webapp security)|
+|configurationCustomizer.alias=,configurationCustomizer.alias.class=class,configurationCustomizer.alias.prop=xxx (define a ConfigurationCustomizer)|
+|===
+
+Here is a sample to add BASIC security on `/api/*`:
+
+[source]
+----
+# security configuration
+securityConstraint =
+securityConstraint.authConstraint = true
+securityConstraint.authRole = **
+securityConstraint.collection = api:/api/*
+
+login =
+login.realmName = app
+login.authMethod = BASIC
+
+realm = org.apache.catalina.realm.JAASRealm
+realm.appName = app
+
+properties.java.security.auth.login.config = configuration/login.jaas
+----
+
+And here a configuration to exclude jackson packages from scanning and use log4j2 as main logger (needs it as dependency):
+
+[source]
+----
+properties.openejb.log.factory = log4j2
+properties.openejb.container.additional.include = com.fasterxml.jackson,org.apache.logging.log4j
+----
+
+== Application Runner
+
+SInce TomEE 7.0.2, TomEE provide a light ApplicationComposer integration for TomEE Embedded (all features are not yet supported but the main ones are):
+`org.apache.tomee.embedded.TomEEEmbeddedApplicationRunner`. It relies on the definition of an `@Application`:
+
+[source,java]
+----
+@Application
+@Classes(context = "app")
+@ContainerProperties(@ContainerProperties.Property(name = "t", value = "set"))
+@TomEEEmbeddedApplicationRunner.LifecycleTasks(MyTask.class) // can start a ftp/sftp/elasticsearch/mongo/... server before tomee
+@TomEEEmbeddedApplicationRunner.Configurers(SetMyProperty.class)
+public class TheApp {
+    @RandomPort("http")
+    private int port;
+
+    @RandomPort("http")
+    private URL base;
+
+    @org.apache.openejb.testing.Configuration
+    public Properties add() {
+        return new PropertiesBuilder().p("programmatic", "property").build();
+    }
+
+    @PostConstruct
+    public void appStarted() {
+        // ...
+    }
+}
+----
+
+Then just start it with:
+
+[source,java]
+----
+TomEEEmbeddedApplicationRunner.run(TheApp.class, "some arg1", "other arg");
+----
+
+TIP: `@Classes(values)` and `@Jars` are supported too which can avoid a huge scanning if you run with a lot of not CDI dependencies which would boost the startup of your application.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/alternate-descriptors.mdtext
----------------------------------------------------------------------
diff --git a/docs/alternate-descriptors.mdtext b/docs/alternate-descriptors.mdtext
new file mode 100644
index 0000000..f55dfc9
--- /dev/null
+++ b/docs/alternate-descriptors.mdtext
@@ -0,0 +1,114 @@
+Title: Alternate Descriptors
+As of OpenEJB 3.1.1, you have the ability to specify an alternate set of
+deployment descriptors to use for a given environment.	This is focused
+mostly on testing where it is often desirable to use a slightly different
+configuration for a set of tests or even a specific test.
+
+# When nothing else does the trick
+
+Note that this approach was added as a catch-all for when one of the
+simpler overriding techniques will not work.  For the common case of
+needing to tweak your persistence.xml, see the [Configuring PersistenceUnits in Tests](configuring-persistenceunits-in-tests.html)
+ page for a simpler approach.
+
+For many reasons it is very inconvenient to have to maintain two sets of
+descriptors, one for production and one for testing.  We aggressively add
+features based on user feedback and questions.	If you are looking for a
+way to solve a problem without duplicating entire descriptors, please let
+us know.  You should never have to go the long way to do something simple.
+
+<a name="AlternateDescriptors-openejb.altdd.prefix"></a>
+# openejb.altdd.prefix
+
+To use this functionality, just set the new "openejb.altdd.prefix" system
+property or `InitialContext` property to something like "_test_", then any
+descriptors in your META-INF/ directory that start with "_test._" will
+override the regular descriptor.  So for example with an app like this:
+
+ - META-INF/ejb-jar.xml
+ - META-INF/*test*.ejb-jar.xml
+ - META-INF/persistence.xml
+ - META-INF/*test*.env-entry.properties
+
+Just initialize your test case like so:
+
+
+     Properties properties = new Properties();
+     properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,
+          "org.apache.openejb.client.LocalInitialContextFactory");
+     properties.setProperty("openejb.altdd.prefix", "test");
+    
+     InitialContext initialContext = new InitialContext(properties);
+
+
+The logical result will be the prefixed file replacing the non-prefixed
+file as the active descriptor:
+
+ - META-INF/ejb-jar.xml -> *test*.ejb-jar.xml
+ - META-INF/persistence.xml
+ - META-INF/env-entry.properties -> *test*.env-entry.properties
+
+This will work in any environment in which OpenEJB works (embedded,
+standalone, tomcat, geronimo, etc.).
+
+Note that there does *not* have to be an equivalent non-prefixed version of
+the file.  In the example above, only a "test.env-entry.properties" file
+exists and there is no equivalent plain "env-entry.properties" file.  This
+prefixing works for any deployment descriptor in the META-INF/ directory or
+WEB-INF/ directory.  The prefix does not have to be "test" and could be
+anything you choose.  You can also have as many prefixed files as you need
+and could even go as far as to have one prefix per individual test.
+
+<a name="AlternateDescriptors-Morethanoneprefix"></a>
+# More than one prefix
+
+It is possible to have several prefixes, specified in order of preference,
+so that it is possible to avoid duplicating descriptors that are used in
+more than one "profile".  For example, the "foo" test case uses the same
+"env-entries.properties" file as the "bar" test case, but both have their
+own ejb-jar.xml files:
+
+ - META-INF/ejb-jar.xml
+ - META-INF/test.ejb-jar.xml
+ - META-INF/footest.ejb-jar.xml
+ - META-INF/bartest.ejb-jar.xml
+ - META-INF/persistence.xml
+ - META-INF/test.env-entry.properties
+
+The "foo" test case could set the _openejb.altdd.prefix_ as follows:
+
+
+     //...
+     properties.setProperty("openejb.altdd.prefix", "footest, test");
+    
+     InitialContext initialContext = new InitialContext(properties);
+
+
+Resulting the following logical view of the app:
+
+ - META-INF/ejb-jar.xml -> *footest*.ejb-jar.xml
+ - META-INF/persistence.xml
+ - META-INF/env-entry.properties -> test.env-entry.properties
+
+And the "bar" test case could set the  _openejb.altdd.prefix_ as follows:
+
+
+     //...
+     properties.setProperty("openejb.altdd.prefix", "footest, test");
+    
+     InitialContext initialContext = new InitialContext(properties);
+
+
+Resulting the following logical view of the app:
+
+ - META-INF/ejb-jar.xml -> *bartest*.ejb-jar.xml
+ - META-INF/persistence.xml
+ - META-INF/env-entry.properties -> test.env-entry.properties
+
+In both scenarios the same env-entry.properties file
+(test.env-entry.properties) is shared.
+
+Note that there is a "test.ejb-jar.xml" file that is present, however in
+both cases it is not used as the order of preference in the list is "left
+to right" meaning most preferred first.
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/annotations,-xml-and-defaults.mdtext
----------------------------------------------------------------------
diff --git a/docs/annotations,-xml-and-defaults.mdtext b/docs/annotations,-xml-and-defaults.mdtext
new file mode 100644
index 0000000..a7d1fe1
--- /dev/null
+++ b/docs/annotations,-xml-and-defaults.mdtext
@@ -0,0 +1,565 @@
+Title: Annotations, XML and Defaults
+
+
+
+<div id="PageContent">
+              <p>The following is a list of all annotations and their attributes, the xml tags that correspond to them (for overriding), and what the default values are when left unspecified.</p>
+
+<div >
+<table ><tbody>
+<tr>
+<th > Annotation </th>
+<th > xml element(s) </th>
+<th > default value </th>
+</tr>
+<tr>
+<td "> @Stateless </td>
+<td "><ul>
+	<li>&lt;session&gt;</li>
+	<li>&lt;ejb-class&gt;</li>
+	<li>&lt;session-type&gt;Stateless&lt;/session-type&gt;</li>
+</ul>
+</td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>name</li>
+</ul>
+</td>
+<td "> &lt;ejb-name&gt; </td>
+<td "> The simple name of the bean class. For <em>org.acme.superfun.WidgetBean</em> the ejb-name will be <b>WidgetBean</b> </td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>description</li>
+</ul>
+</td>
+<td "> &lt;description&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>mappedName</li>
+</ul>
+</td>
+<td "> &lt;mapped-name&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @Stateful </td>
+<td "><ul>
+	<li>&lt;session&gt;</li>
+	<li>&lt;ejb-class&gt;</li>
+	<li>&lt;session-type&gt;Stateful&lt;/session-type&gt;</li>
+</ul>
+</td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>name</li>
+</ul>
+</td>
+<td "> &lt;ejb-name&gt; </td>
+<td "> The simple name of the bean class. For <em>org.acme.superfun.WidgetBean</em> the ejb-name will be <b>WidgetBean</b> </td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>description</li>
+</ul>
+</td>
+<td "> &lt;description&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>mappedName</li>
+</ul>
+</td>
+<td "> &lt;mapped-name&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @MessageDriven </td>
+<td "><ul>
+	<li>&lt;message-driven&gt;</li>
+	<li>&lt;ejb-class&gt;</li>
+	<li>&lt;session-type&gt;Stateful&lt;/session-type&gt;</li>
+</ul>
+</td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>name</li>
+</ul>
+</td>
+<td "> &lt;ejb-name&gt; </td>
+<td "> The simple name of the bean class. For <em>org.acme.superfun.WidgetBean</em> the ejb-name will be <b>WidgetBean</b> </td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>description</li>
+</ul>
+</td>
+<td "> &lt;description&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>mappedName</li>
+</ul>
+</td>
+<td "> &lt;mapped-name&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>messageListenerInterface</li>
+</ul>
+</td>
+<td "> &lt;messaging-type&gt; </td>
+<td "> The interface the bean class implements.  When relying upon the default is illegal for the bean to implement more than one interface </td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>activationConfig[]</li>
+</ul>
+</td>
+<td "> &lt;activation-config&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @ActivationConfigProperty </td>
+<td "> &lt;activation-config-property&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>propertyName</li>
+</ul>
+</td>
+<td "> &lt;activation-config-property-name&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>propertyValue</li>
+</ul>
+</td>
+<td "> &lt;activation-config-property-value&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @RemoteHome </td>
+<td "><ul>
+	<li>&lt;home&gt;</li>
+	<li>&lt;remote&gt;</li>
+</ul>
+</td>
+<td "> The home is inspected to determine the value of &lt;remote&gt;</td>
+</tr>
+<tr>
+<td "> @LocalHome </td>
+<td "><ul>
+	<li>&lt;local-home&gt;</li>
+	<li>&lt;local&gt;</li>
+</ul>
+</td>
+<td "> The local-home is inspected to determine the value of &lt;local&gt; </td>
+</tr>
+<tr>
+<td "> @TransactionManagement </td>
+<td "> &lt;transaction-type&gt; </td>
+<td "> TransactionManagementType.CONTAINER (xml value "Container") </td>
+</tr>
+<tr>
+<td "> @TransactionAttribute </td>
+<td "><ul>
+	<li>&lt;container-transaction&gt;</li>
+	<li>&lt;transaction-attribute&gt;</li>
+</ul>
+</td>
+<td "> All method default to TransactionAttributeType.REQUIRED (xml value "Required") </td>
+</tr>
+<tr>
+<td "> @RolesAllowed </td>
+<td "><ul>
+	<li>&lt;method-permission&gt;</li>
+	<li>&lt;role-name&gt;</li>
+</ul>
+</td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @PermitAll </td>
+<td "><ul>
+	<li>&lt;method-permission&gt;</li>
+	<li>&lt;unchecked&gt;</li>
+</ul>
+</td>
+<td "> All methods default to unchecked </td>
+</tr>
+<tr>
+<td "> @DenyAll </td>
+<td "> &lt;exclude-list&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @RunAs </td>
+<td "><ul>
+	<li>&lt;security-identity&gt;</li>
+	<li>&lt;run-as&gt;</li>
+	<li>&lt;role-name&gt;</li>
+</ul>
+</td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @DeclareRoles </td>
+<td "> &lt;security-role-ref&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @Interceptors </td>
+<td "><ul>
+	<li>&lt;interceptor&gt;</li>
+	<li>&lt;interceptor-binding&gt;</li>
+	<li>&lt;interceptor-class&gt;</li>
+</ul>
+</td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @ExcludeDefaultInterceptors </td>
+<td "><ul>
+	<li>&lt;interceptor-binding&gt;</li>
+	<li>&lt;exclude-default-interceptors&gt;</li>
+</ul>
+</td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @ExcludeClassInterceptors </td>
+<td "><ul>
+	<li>&lt;interceptor-binding&gt;</li>
+	<li>&lt;exclude-class-interceptors&gt;</li>
+</ul>
+</td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @AroundInvoke </td>
+<td "> &lt;around-invoke&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @PostConstruct </td>
+<td "> &lt;post-construct&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @PreDestroy </td>
+<td "> &lt;pre-destroy&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @PrePassivate </td>
+<td "> &lt;pre-passivate&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @PostActivate </td>
+<td "> &lt;post-activate&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @Init </td>
+<td "> &lt;init-method&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @Remove </td>
+<td "> &lt;remove-method&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>retainIfException</li>
+</ul>
+</td>
+<td "> &lt;retain-if-exception&gt; </td>
+<td "> false </td>
+</tr>
+<tr>
+<td "> @Timeout </td>
+<td "> &lt;timeout-method&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @ApplicationException </td>
+<td "><ul>
+	<li>&lt;application-exception&gt;</li>
+	<li>&lt;exception-class&gt;</li>
+</ul>
+</td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>rollback</li>
+</ul>
+</td>
+<td "> &lt;rollback&gt; </td>
+<td "> false </td>
+</tr>
+<tr>
+<td "> @EJB </td>
+<td "><ul>
+	<li>&lt;ejb-ref&gt;</li>
+	<li>&lt;ejb-local-ref&gt;</li>
+	<li>&lt;injection-target&gt;</li>
+</ul>
+</td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>name</li>
+</ul>
+</td>
+<td "><ul>
+	<li>&lt;ejb-ref-name&gt;</li>
+</ul>
+</td>
+<td "><ul>
+	<li>on class: illegal to leave undefined</li>
+	<li>on field: {className}/{fieldName} as in <b>org.superbiz.Widget/myEjb</b></li>
+	<li>on setter: {className}/{propertyName} as in setMyEjb() defaults to <b>org.superbiz.Widget/myEjb</b></li>
+</ul>
+</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>beanInterface</li>
+</ul>
+</td>
+<td "><ul>
+	<li>&lt;home&gt;</li>
+	<li>&lt;local-home&gt;</li>
+	<li>&lt;remote&gt;</li>
+	<li>&lt;local&gt;</li>
+</ul>
+</td>
+<td "><ul>
+	<li>on class: illegal to leave undefined</li>
+	<li>on field: the data type of the field</li>
+	<li>on setter: the data type of the first method param</li>
+</ul>
+</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>beanName</li>
+</ul>
+</td>
+<td "> &lt;ejb-link&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>description</li>
+</ul>
+</td>
+<td "> &lt;description&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>mappedName</li>
+</ul>
+</td>
+<td "> &lt;mapped-name&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @Resource </td>
+<td "><ul>
+	<li>&lt;env-entry&gt;</li>
+	<li>&lt;resource-ref&gt;</li>
+	<li>&lt;resource-env-ref&gt;</li>
+	<li>&lt;injection-target&gt;</li>
+</ul>
+</td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>name</li>
+</ul>
+</td>
+<td "><ul>
+	<li>&lt;env-entry-name&gt;</li>
+	<li>&lt;res-ref-name&gt;</li>
+	<li>&lt;resource-env-ref-name&gt;</li>
+</ul>
+</td>
+<td "><ul>
+	<li>on class: illegal to leave undefined</li>
+	<li>on field: {className}/{fieldName} as in <b>org.superbiz.Widget/myDataSource</b></li>
+	<li>on setter: {className}/{propertyName} as in setMyDataSource() defaults to <b>org.superbiz.Widget/myDataSource</b></li>
+</ul>
+</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>type</li>
+</ul>
+</td>
+<td "><ul>
+	<li>&lt;env-entry-type&gt;</li>
+	<li>&lt;res-type&gt;</li>
+	<li>&lt;resource-env-ref-type&gt;</li>
+</ul>
+</td>
+<td "><ul>
+	<li>on class: illegal to leave undefined</li>
+	<li>on field: the data type of the field</li>
+	<li>on setter: the data type of the first method param</li>
+</ul>
+</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>description</li>
+</ul>
+</td>
+<td "> &lt;description&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>mappedName</li>
+</ul>
+</td>
+<td "> &lt;mapped-name&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>shareable</li>
+</ul>
+</td>
+<td "> &lt;res-sharing-scope&gt; </td>
+<td "> true (xml value "Shareable") </td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>authenticationType</li>
+</ul>
+</td>
+<td "> &lt;res-auth&gt; </td>
+<td "> AuthenticationType.CONTAINER (xml value "Container") </td>
+</tr>
+<tr>
+<td "> @PersistenceUnit </td>
+<td "><ul>
+	<li>&lt;persistence-unit-ref&gt;</li>
+	<li>&lt;injection-target&gt;</li>
+</ul>
+</td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>name</li>
+</ul>
+</td>
+<td "> &lt;persistence-unit-ref-name&gt; </td>
+<td ">on class: illegal to leave undefined
+<ul>
+	<li>on field: {className}/{fieldName} as in <b>org.superbiz.Widget/myUnit</b></li>
+	<li>on setter: {className}/{propertyName} as in setMyUnit() defaults to <b>org.superbiz.Widget/myUnit</b></li>
+</ul>
+</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>unitName</li>
+</ul>
+</td>
+<td "> &lt;persistence-unit-name&gt; </td>
+<td "> vendor specific </td>
+</tr>
+<tr>
+<td "> @PersistenceContext </td>
+<td "><ul>
+	<li>&lt;persistence-context-ref&gt;</li>
+	<li>&lt;injection-target&gt;</li>
+</ul>
+</td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>name</li>
+</ul>
+</td>
+<td "> &lt;persistence-context-ref-name&gt; </td>
+<td ">on class: illegal to leave undefined
+<ul>
+	<li>on field: {className}/{fieldName} as in <b>org.superbiz.Widget/myContext</b></li>
+	<li>on setter: {className}/{propertyName} as in setMyContext() defaults to <b>org.superbiz.Widget/myContext</b></li>
+</ul>
+</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>unitName</li>
+</ul>
+</td>
+<td "> &lt;persistence-unit-name&gt; </td>
+<td "> vendor specific </td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>type</li>
+</ul>
+</td>
+<td "> &lt;persistence-context-type&gt; </td>
+<td "> PersistenceContextType.TRANSACTION (xml value "Transaction") </td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>properties[]</li>
+</ul>
+</td>
+<td ">&nbsp;</td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "> @PersistenceProperty </td>
+<td "> &lt;persistence-property&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>name</li>
+</ul>
+</td>
+<td "> &lt;name&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+<tr>
+<td "><ul type="square" class="alternate">
+	<li>value</li>
+</ul>
+</td>
+<td "> &lt;value&gt; </td>
+<td ">&nbsp;</td>
+</tr>
+</tbody></table>
+</div>
+
+            </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/app-clients-and-jndi.mdtext
----------------------------------------------------------------------
diff --git a/docs/app-clients-and-jndi.mdtext b/docs/app-clients-and-jndi.mdtext
new file mode 100644
index 0000000..c3beda6
--- /dev/null
+++ b/docs/app-clients-and-jndi.mdtext
@@ -0,0 +1,69 @@
+Title: App Clients and JNDI
+There are some slight differences between the way OpenEJB does app clients
+and the way Geronimo does app clients
+
+
+Neither uses the names created via the openejb.jndiname.format. &nbsp;So
+changing that will (should) have no affect. &nbsp;The idea is that users
+should be able to set it to be whatever they want it to be and that should
+not break the App Client code. &nbsp;The openejb.jndiname.format is
+specifically for "plain" clients and allows them to get the names as they
+want them.
+
+Internally, we bind each EJB proxy under essentially a hardcoded and
+predictable format and then again using the user supplied format. &nbsp;So
+there are at minimum two JNDI trees with every EJB proxy. &nbsp;It used to
+be two at least. &nbsp;Now we have quite a few because of Java EE 6 global
+JNDI and the support we added for @LocalClient and allowing the same
+interface to be used as both @Local and @Remote.
+
+Basically we have:
+
+* openejb/Deployment/&lt;hardcoded internal format&gt;
+* openejb/local/&lt;strategy format&gt;
+* openejb/remote/&lt;strategy format&gt;
+
+The 'openejb/Deployment' section is the non-changing fully qualified name
+for use internally and by app clients.
+
+The 'openejb/remote' section is for "pretty" names looked up via plain
+clients using the RemoteInitialContextFactory. &nbsp;The protocol can tell
+the difference between app clients and plain clients and knows which area
+to look in.
+
+The 'openejb/local' section is for "pretty" names looked up via the
+LocalInitialContextFactory.
+
+The "pretty" names are defined by the openejb.jndiname.format and since the
+user has control of that formatting it's possible that not all proxies can
+be bound. &nbsp;Say the bean has both a local and remote interface and the
+user has just "\{deploymentId\}" or "\{ejbName\}" as the format.
+&nbsp;Hence those bind calls use the "optional" set of binding methods.
+
+The format of the internal names bound into openejb/Deployment is
+guaranteed to be unique. &nbsp;It's not pretty to look at obviously, but
+every possible proxy will be bound there guaranteed. &nbsp;For binding into
+'openejb/Deployment' we don't use the "optional" set of binding methods.
+&nbsp;If something can't be bound it's a deployment issue.
+
+The home interface is bound, but with the name of the corresponding
+business interface rather than the home interface. &nbsp;
+
+To be a little bit more clear - &nbsp;Both OpenEJB and Geronimo build their
+own JNDI trees for the App Client. &nbsp;Geronimo prefers to have its own
+JNDI tree for the App Client as there are other things in it that are not
+EJB related. &nbsp;Either way the OpenEJB EJBd protocol can carry the "id"
+of the App Client and both Geronimo and OpenEJB rely on that.
+
+In Geronimo App Clients the id is set to "Deployments" and that tells
+OpenEJB not to look in the "openejb/remote" section of JNDI as it normally
+would. &nbsp;It will instead use the "openejb/Deployments" section of JNDI
+were the names follow a predictable and unchanging format.
+
+In OpenEJB App Clients the id is set to the name of the App Client and we
+instead look in "openejb/client/<id>/" where names are formatted by the
+user via the application-client.xml.
+
+When calls are made from client to server and the App Client module id is
+not present, we look in openejb/remote/ where names are formatted using the
+openejb.jndi.format

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/application-composer/advanced.md
----------------------------------------------------------------------
diff --git a/docs/application-composer/advanced.md b/docs/application-composer/advanced.md
new file mode 100644
index 0000000..15c643d
--- /dev/null
+++ b/docs/application-composer/advanced.md
@@ -0,0 +1,90 @@
+# Application Composer Advanced
+
+[Getting Started](getting-started.html) page gives you already a lot of inputs but you caneven go further.
+
+## @Descriptors
+
+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:
+
+    // runner if needed etc...
+    @Descriptors(@Descriptor(name = "persistence.xml", path = "META-INF/persistence.xml"))
+    public class MyTest {
+       //...
+    }
+
+Note: this can be put in a `@Module` method as well.
+
+## Services
+
+If you want to test a JAXRS or JAXWS service you need to activate these services.
+
+To do so just add the needed dependency and use `@EnableServices`:
+
+    // runner if needed etc...
+    @EnableService("jaxrs") // jaxws supported as well
+    public class MyTest {
+       //...
+    }
+
+## Random port
+
+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.
+
+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`):
+
+    // runner, services if needed etc...
+    public class MyTest {
+       @RandomPort("http")
+       private int port;
+    }
+
+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).
+
+## Nice logs
+
+`@SimpleLog` annotation allows you to have one liner logs
+
+## @JaxrsProvider
+
+`@JaxrsProvider` allows you to specify on a `@Module` method the list of JAXRS provider you want to use.
+
+## Dependencies without hacky code
+
+`@Jars` allows you to add dependencies (scanned) to your application automatically (like CDI libraries):
+
+    @Module
+    @Classes(cdi = true, value = { C1.class, C2.class, E1.class })
+    @Jars("deltaspike-")
+    public WebApp app() {
+        return new WebApp();
+    }
+
+## @Default
+
+`@Default` automatically adds in the application `target/classes` as binaries and `src/main/webapp` as resources for maven projects.
+
+## @CdiExtensions
+
+This annotation allows you to control which extensions are activated during the test.
+
+## @AppResource
+
+This annotation allows injection of few particular test resources like:
+
+* the test `AppModule` (application meta)
+* the test `Context` (JNDI)
+* the test `ApplicationComposers` (underlying runner)
+* `ContextProvider`: allow to mock JAXRS contexts
+
+## @MockInjector
+
+Allows to mock EJB injections. It decorates a dedicated method returning an instance (or Class) implementing `FallbackPropertyInjector`.
+
+## @WebResource
+
+Allow for web application to add folders containing web resources.
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/application-composer/getting-started.md
----------------------------------------------------------------------
diff --git a/docs/application-composer/getting-started.md b/docs/application-composer/getting-started.md
new file mode 100644
index 0000000..13ab248
--- /dev/null
+++ b/docs/application-composer/getting-started.md
@@ -0,0 +1,188 @@
+# Application Composer Getting Started
+
+ApplicationComposer API is mainly contained in `org.apache.openejb.testing` package
+(historically, today we would have called the package `org.apache.tomee.applicationcomposer`).
+
+## Dependencies
+
+To start using ApplicationComposer you need to add some dependencies.
+
+The minimum required one is `openejb-core`:
+
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>openejb-core</artifactId>
+      <version>${openejb.version></version>
+    </dependency>
+
+If you need JAXRS services you'll add (or replace thanks to transitivity of maven) `openejb-cxf-rs`:
+
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>openejb-cxf-rs</artifactId>
+      <version>${openejb.version></version>
+    </dependency>
+
+If you need JAXWS services you'll add (or replace thanks to transitivity of maven) `openejb-cxf`:
+
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>openejb-cxf</artifactId>
+      <version>${openejb.version></version>
+    </dependency>
+
+etc...
+
+## ApplicationComposer Components
+
+### @Module
+
+An ApplicationComposer needs at minimum a module (the application you need to deploy).
+
+To do so you have two cases:
+
+* before TomEE 2.x: you can only write method(s) decorated with `@Module`
+* since TomEE 2.x: you can skip it and use `@Classes` directly on the ApplicationComposer class as a shortcut for:
+
+    @Module
+    public WebApp app() {
+        return new WebApp();
+    }
+
+The expected returned type of these methods are in `org.apache.openejb.jee` package:
+
+* `Application`: entry point to create an ear
+* `WebApp`: a web application
+* `EjbJar`: an ejb module
+* `EnterpriseBean` children: a simple EJB
+* `Persistence`: a persistence module with multiple units
+* `PersistenceUnit`: a simple unit (automatically wrapped in a `Persistence`)
+* `Connector`: a JCA connector module
+* `Beans`: a CDI module,
+* `Class[]` or `Class`: a set of classes scanned to discover annotations
+
+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:
+ 
+    @Module
+    @Classes(cdi = true, value = { C1.class, C2.class, E1.class })
+    public WebApp app() {
+        return new WebApp();
+    }
+
+### @Configuration
+
+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.
+
+Note: to simplify writing properties you can use `PropertiesBuilder` util class which is just a fluent API
+to write properties.
+
+In these properties you can reuse OpenEJB/TomEE property syntax for resources.
+
+Here is a sample:
+
+    @Configuration
+    public Properties configuration() {
+        return new PropertiesBuilder()
+            .p("db", "new://Resource?type=DataSource")
+            .p("db.JdbcUrld", "jdbc:hsqldb:mem:test")
+            .build();
+    }
+
+Since TomEE 2.x you can also put properties on ApplicationComposer class using `@ContainerProperties` API:
+
+    @ContainerProperties({
+      @ContainerProperties.Property(name = "db", value = "new://Resource?type=DataSource"),
+      @ContainerProperties.Property(name = "db.JdbcUrl", value = "jdbc:hsqldb:mem:test")
+    })
+    public class MyAppComposer() {
+      // ...
+    }
+
+### @Component
+
+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.
+
+To do so just write a method decorated with `@Component` returning the instance you desire.
+
+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:
+
+    @Component
+    public SecurityService mockSecurity() {
+        return new MySecurityService();
+    }
+
+## How to run it?
+
+### JUnit
+
+If you use JUnit you have mainly 2 solutions to run you "model" using the ApplicationComposer:
+
+* using `ApplicationComposer` runner:
+
+    @RunWith(ApplicationComposer.class)
+    public class MyTest {
+        // ...
+    }
+
+* 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);
+    }
+
+Tip: since TomEE 2.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).
+
+Finally just write `@Test` method using test class injections as if the test class was a managed bean!
+
+### TestNG
+
+TestNG integration is quite simple today and mainly `ApplicationComposerListener` class you can configure
+as a listener to get ApplicationComposer features.
+
+Finally just write TestNG `@Test` method using test class injections as if the test class was a managed bean!
+
+### Standalone
+
+Since TomEE 2.x you can also use `ApplicationComposers` to directly run you ApplicationComposer model
+as a standalone application:
+
+    public class MyApp {
+        public static void main(String[] args) {
+            ApplicationComposers.run(MyApp.class, args);
+        }
+    
+        // @Module, @Configuration etc...
+    }
+
+Tip: if `MyApp` has `@PostConstruct` 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!)
+
+## JUnit Sample
+
+    @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
+        }
+    }
+
+## Going further
+
+If you want to learn more about ApplicationComposer see [Advanced](advanced.html) page.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/application-composer/history.md
----------------------------------------------------------------------
diff --git a/docs/application-composer/history.md b/docs/application-composer/history.md
new file mode 100644
index 0000000..3deb828
--- /dev/null
+++ b/docs/application-composer/history.md
@@ -0,0 +1,38 @@
+# Application Composer History
+
+ApplicationComposer can look like a long story but following it you'll realize it is finally quite natural.
+
+## Internal tool
+
+TomEE (former OpenEJB) is an Application Server. One of the most important task writing an Application Server
+is to ensure the implemented features do what is expected. However it is hard to write N test applications, in N modules
+to ensure it works smoothly. In particular when you want to test a small part of the whole server.
+
+So you immediately think to mocking what is not needed. It works but has a big pitfall: test is often a noop or hide 
+a lot of issues.
+
+So the idea came to be able to shortcut the part we don't care much about runtime: the application packaging.
+
+Here what is the ApplicationComposer: an (originally test) API to create a EE application programmatically.
+
+## Designs
+
+ApplicationComposer design was aligned on this simple need. An ApplicationComposer "test" (browsing other pages you'll see
+it is much more than test today) is composed of mainly 2 parts:
+
+* modules: methods describing a module of an application. It can be a persistence.xml, an ejb-jar.xml, a web.xml...but all programmatically.
+* configuration: container configuration allowing to interact with container (creating resources for instance)
+
+## Test but not only
+
+ApplicationComposer was originally a JUnit only runner but was pretty quickly extended to TestNG too and
+today you can even use it to write `main(String[])` - even in a shade!
+
+API was greatly simplified and it allows you pretty easily to deploy with a simple shade a JAXRS/JAXWS/JMS service!
+
+## Going further
+
+If you want to go further you can browse:
+
+* [Getting Started](getting-started.html)
+* [Advanced](advanced.html)

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/application-composer/index.md
----------------------------------------------------------------------
diff --git a/docs/application-composer/index.md b/docs/application-composer/index.md
new file mode 100644
index 0000000..1823808
--- /dev/null
+++ b/docs/application-composer/index.md
@@ -0,0 +1,18 @@
+# Application Composer
+
+Here is the subdomain dedicated to the Application Composer.
+
+If you don't know at all what ApplicationComposer means, [History](history.html) page
+will explain you where does it come from and what it can be used to today.
+
+If you are already familiar with ApplicationComposer concept and are just looking for a sample,
+[Getting Started](getting-started.html) is designed for you.
+
+Finally if you already use ApplicationComposer and just desire to go further, [Advanced](advanced.html)
+page is the one you need to look!
+
+Children:
+
+* [History](history.html)
+* [Getting Started](getting-started.html)
+* [Advanced](advanced.html)

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/application-deployment-solutions.mdtext
----------------------------------------------------------------------
diff --git a/docs/application-deployment-solutions.mdtext b/docs/application-deployment-solutions.mdtext
new file mode 100644
index 0000000..3f21d0b
--- /dev/null
+++ b/docs/application-deployment-solutions.mdtext
@@ -0,0 +1,75 @@
+Title: Deploying An Application To TomEE Or OpenEJB
+
+# Deploying An Application To TomEE Or OpenEJB
+## How to deploy my application under TomEE
+### Description
+
+This aims to be more dynamic in the way you deploy your applications.
+It is clearly cloud oriented.
+
+### Webapp and TomEE deployment
+
+Webapp can be deployed as Tomcat does. Simply put it in webapps folder
+(or the one you configured) and start TomEE.
+
+### TomEE specific deployment
+
+By default TomEE deploys applications (ear, war, jar) contained in $CATALINA_BASE/apps
+directory at start up.
+
+### Deployer
+
+OpenEJB provides a Deployer EJB to do this task. It can be used
+in your own software looking up remotely the "openejb/DeployerBusinessRemote" EJB.
+Its interface is "org.apache.openejb.assembler.Deployer".
+The needed dependency is org.apache.openejb:openejb-core.
+
+Once you got your deployer simply invoke the "deploy" method. Give it the location
+of your application (can be a file, http, https, maven location depending on
+the way you configured your container, for more information
+have a look to TomEE provisionning).
+
+Note: the "undeploy" method exists too and take the same path.
+
+The Deployer is the base of all other solutions
+
+### Maven plugin
+
+[org.apache.openejb:tomee-maven-plugin](maven/index.html) can be used to deploy/undeploy your application. Once this plugin is added to your pom you have access to the following configuration:
+
+* tomeeHttpPort
+* tomeeHost
+
+Then simply run
+
+    mvn tomee:deploy <path>
+
+or
+
+    mvn tomee:undeploy <path>
+
+#### The Deployer through TomEE Webapp
+
+When you start TomEE you can locally access the TomEE webapps (http://host:ip/tomee/).
+
+Then simply go to JNDI tree, select the deployer in the tree, then click on "invoke this ejb",
+select the deploy (or undeploy) method, fill the path and click on "invoke".
+
+#### Cloud idea
+
+If you want to cloudify your application, you'll get a configuration database (or any
+other storage system ;)).
+
+So it means it is easy for you to get a host and a port...so it is easy
+to deploy on all your server using the deployer: simply use the maven provisioning
+then run the deployer on all your nodes and that's all!
+
+
+### Doing it with camel?
+
+If you are using a route to deploy/undeploy your applications
+you can have a look to the proposed camel-openejb component:
+
+* base code: http://svn.apache.org/repos/asf/tomee/sandbox/camel/camel-openejb/
+* proposed to be added to camel: https://issues.apache.org/jira/browse/CAMEL-4935
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/application-discovery-via-the-classpath.mdtext
----------------------------------------------------------------------
diff --git a/docs/application-discovery-via-the-classpath.mdtext b/docs/application-discovery-via-the-classpath.mdtext
new file mode 100644
index 0000000..bb818a9
--- /dev/null
+++ b/docs/application-discovery-via-the-classpath.mdtext
@@ -0,0 +1,91 @@
+Title: Application discovery via the classpath
+This document details the various ways to get OpenEJB to detect
+applications you would like deployed while in an embedded mode.
+
+<a name="Applicationdiscoveryviatheclasspath-Emptyejb-jar.xmlapproach(recommended)"></a>
+# Empty ejb-jar.xml approach (recommended)
+
+Simplify the issue of searching for annotated applications by adding an
+ejb-jar.xml like this to your app:
+
+    <ejb-jar/>
+
+
+OpenEJB will find the app in the classpath and deploy it along with any
+annotated beans it may contain.
+
+The ejb-jar.xml can contain more than just "<ejb-jar/>" as usual.
+
+This is the recommended approach for people using OpenEJB for unit testing
+as it allows OpenEJB to find your application in the classpath without the
+need for you to specify any path information which tends to complicate
+builds.
+    
+# Including/Excluding paths (advanced)
+    
+If you do not like the idea of having the ejb-jar.xml in your app or an
+openejb.xml, we can search the classpath for annotated beans (@Stateless,
+@Stateful, @MessageDriven) and load them automatically just as if they
+contained an ejb-jar.xml.
+
+This form of searching, however, is very expensive as it involves iterating
+over every path in the classpath and reading in each class definition
+contained thereunder and checking it for annotations.
+
+This approach can only be made faster by helping us trim down or pinpoint
+the paths we should search via the *openejb.deployments.classpath.include*
+property which can be specified as a _system property_ or a property passed
+into the _InitialContext_.  
+
+The value of this property is a regular expression and therefore can be
+absolute or relative.  For example the path
+"/Users/dblevins/work/swizzle/swizzle-stream/target/classes" which contains
+the class files of an application you wish to test could be included in any
+of the following values to the "openejb.deployments.classpath.include"
+property:
+    
+* "file:///Users/dblevins/work/swizzle/swizzle-stream/target/classes/" _(an absolute path)_
+* "file:///Users/dblevins/work/swizzle/.*" _(relative)_
+* ".\*swizzle-stream.\*" _(very relative)_
+* ".\*(swizzle-stream|swizzle-jira|acme-rocket-app).\*" _(including several paths)_
+* ".\*(swizzle-stream^|swizzle-jira^|acme-rocket-app).\*" _(including several paths with Win specific escapes)_
+    
+Note the filtering is done on URLs in the classpath, so forward slashes
+should always be used even on OSs using backslash ("\").
+    
+There are also the *openejb.deployments.classpath.exclude* and *openejb.exclude-include.order*
+properties if you wish to work in the opposite direction or change the processing order.
+The default values for the properties are as follows:
+    
+      openejb.exclude-include.order=include-exclude //Defines the processing order
+	   openejb.deployments.classpath.include=""      //Include nothing
+       openejb.deployments.classpath.exclude=".*"    //Exclude everything
+    
+The exclude and the include are applied separately and the results of each
+are combined together to create the list of paths OpenEJB will scrape for
+annotations.
+    
+    *Note:* by default these settings will only affect which jars OpenEJB will
+	 scan for annotated components when no descriptor is found.  If you would
+	 like to use these settings to also filter out jars that do contain
+	 descriptors, set the *openejb.deployments.classpath.filter.descriptors*
+	 property to _true_.  The default is _false_.
+    
+# Troubleshooting
+
+If the include/exclude is not being processed as you expect first try
+reversing the order to *openejb.exclude-include.order*=exclude-include
+There are a number internal filters that may result in an unexpected exclusion.
+    
+If you're having trouble determining if the META-INF/ejb-jar.xml file for
+your ejb module is in the classpath, a little debug code like this in your
+test setup will help you see what OpenEJB sees (which may be nothing):
+    
+
+    Enumeration<URL> ejbJars =
+    this.getClass().getClassLoader().getResources("META-INF/ejb-jar.xml");
+    while (ejbJars.hasMoreElements()) {
+        URL url = ejbJars.nextElement();
+        System.out.println("app = " + url);
+    }
+


[13/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/ejbd-transport.mdtext
----------------------------------------------------------------------
diff --git a/docs/ejbd-transport.mdtext b/docs/ejbd-transport.mdtext
new file mode 100644
index 0000000..f6eedb5
--- /dev/null
+++ b/docs/ejbd-transport.mdtext
@@ -0,0 +1,132 @@
+Title: Ejbd Transport
+
+The Ejbd Transport allows to remotely access EJBs that have a remote interface.
+Nevertheless it is not based on IIOP.
+
+Ejbd Transport is different using TomEE or OpenEJB.
+
+In OpenEJB it uses openejb http layer and ejbd is configured through ejbd service (same for ejbds).
+So to activate/deactivate them use conf/ejbd(s).properties files. You can set property disabled to true
+if you don't want them to be started.
+
+In TomEE the transport is the Tomcat one. It uses a servlet brought by TomEE webapp.
+Here is the servlet as defined in TomEE webapp:
+
+    <servlet>
+        <servlet-name>ServerServlet</servlet-name>
+        <servlet-class>org.apache.openejb.server.httpd.ServerServlet</servlet-class>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>ServerServlet</servlet-name>
+        <url-pattern>/ejb/*</url-pattern>
+    </servlet-mapping>
+
+
+You can easily remove it if you don't use remote EJBs. Another way is to deactivate the servlet
+using the "activated" init parameter of the servlet.
+
+Finally you can move this servlet in your own webapp if you want to use a provider url
+containing your webapp context. Simply copy paste the servlet definition in your web.xml
+and set the url mapping to what you want (let say /foo/*). Then use the provider url
+http://&lt;host&gt;:&lt;port&gt;/&lt;webapp context name&gt;/foo
+
+### Remote communication and serialization
+
+Remotely calling EJBs, independent of using Ejbd or other RMI/IIOP based protocols, involves serialization and deserialization of objects.
+Deserializing unknown content coming from an untrusted source imposes a security risk as the stream could be manipulated.
+A much publicized [vulnerability](http://www.kb.cert.org/vuls/id/576313) was found in the commons-collections library which allowed to remotely execute arbitrary code simply by deserializing instances of the class `InvokerTransformer`.
+
+To prevent this risk TomEE and the OpenEJB client since 1.7.4 before deserializing every object checks its class against a configurable blacklist and a whitelist.
+The default black list is defined as `*`, meaning that requests cannot be deserialized at all and the Ejbd transport in fact cannot be used.
+
+The blacklist and whitelist is configured via the system properties:
+
+- `tomee.serialization.class.whitelist`
+- `tomee.serialization.class.blacklist`
+
+You will also find these properties in [System Properties Listing](properties-listing.html)
+
+These rules apply for the whitelist:
+
+- The whitelist has a lower priority than the blacklist. That means a class that is part of the blacklist cannot be whitelisted and will always be refused.
+- If a whitelist is not defined, either by not defining the property at all or defining it with an empty value, every class is on the whitelist. In this case only the blacklist applies.
+- If a whitelist is defined it must be a comma separated list of prefixes of fully qualified class names. Then deserialization of an object fails if its class is not part of this whitelist. A class is on the whitelist if its fully qualified classname is prefixed by one of the values in the whitelist.
+
+These rules apply for the blacklist:
+
+- If the blacklist should be deactivated it must be configured to the value `-`. This will open your system to the serialization vulnerability if you don't configure a whitelist!
+- If the blacklist is not configured its default value is `org.codehaus.groovy.runtime.,org.apache.commons.collections.functors.,org.apache.xalan,java.lang.Process` so that for example the class `org.apache.commons.collections.functors.InvokerTransformer` cannot be deserialized.
+- If the blacklist is configured with an empty value the blacklist is effectively `*`, therefore preventing any Ejbd communication.
+- If you want to blacklist certain classes the property must be configured to a comma separated list of prefixes of fully qualified class names. A class is on the blacklist if its fully qualified classname is prefixed by one of the values in the blacklist.
+
+The default for `tomee.serialization.class.whitelist` is empty, the default for `tomee.serialization.class.blacklist` is `*` since TomEE 1.7.4.
+
+If an EJB request fails because a class is not whitelisted you will find this log entry:
+
+    WARN - "null OEJP/4.7" FAIL "Security error - foo.Bar is not whitelisted as deserializable, prevented before loading it." - Debug for StackTrace
+
+If you trust this class and want to support serialization in remote communication you have to configure these properties appropriately both on server side as well as on client side.
+
+If you only want to support serialization of the classes `foo.Bar` and `foo.Baz` you can configure the properties like this:
+
+    tomee.serialization.class.whitelist = foo.Bar,foo.Baz
+    tomee.serialization.class.blacklist = -
+
+If you trust all classes in the package `foo` define the properties like this:
+
+    tomee.serialization.class.whitelist = foo.
+    tomee.serialization.class.blacklist = -
+
+(Don't forget the trailing `.` after foo, as it will also whitelist all classes in the package `foo2` otherwise.)
+
+If you trust all classes in the package `foo` except the class `foo.Bar` you have to configure the properties like this:
+
+    tomee.serialization.class.whitelist = foo.
+    tomee.serialization.class.blacklist = foo.Bar
+
+
+
+#### Revert to behavior of TomEE 1.7.3
+
+TomEE 1.7.3 already contained a fixed blacklist that was not configurable and contained the packages org.codehaus.groovy.runtime, org.apache.commons.collections.functors and org.apache.xalan including subpackages and the class java.lang.Process.
+If you know that your applications runs on TomEE 1.7.3 but does not on TomEE 1.7.4 showing the aforementioned log message, you can define the configuration so that the serialization will work in the same way as it did with TomEE 1.7.3:
+
+    tomee.serialization.class.whitelist = 
+    tomee.serialization.class.blacklist = org.codehaus.groovy.runtime.,org.apache.commons.collections.functors.,org.apache.xalan,java.lang.Process
+
+Please note that with this configuration your server may be vulnerable to Java serialization attacks not yet identified by the Zero Day initiative. 
+Also note that the following versions of the affected libraries have been patched and approved by the Zero Day initiative and *may* be safe to deserialize.
+
+- Groovy 2.4.4
+- Commons Collections 3.2.2
+- Xalan 2.7.2
+
+As Ejbd transport is tunneled over HTTP please make sure that the `ServerServlet` is not publicly accessible.
+When the applications running on TomEE do not package the `ServerServlet` themselves ensure that the URL http://&lt;host&gt;:&lt;port&gt;/tomee/ejb is not accessible from untrusted sources.
+
+If your applications package declare it in their own web.xml make sure that the respective URL is not accessible from untrusted sources.
+
+#### Revert to behavior of TomEE 1.7.2
+
+TomEE 1.7.2 did not have any kind of blacklist when deserializing objects over Ejbd.
+If you want to revert to this behavior you can simply deactivate the blacklist with this configuration:
+
+    tomee.serialization.class.whitelist =
+    tomee.serialization.class.blacklist = -
+
+Note that this configuration makes your system highly vulnerable to serialization attacks!
+Consider your system as unsafe!
+
+#### Remote communication and Arquillian tests
+
+The mechanism described above principally also works when running Arquillian tests.
+As the Ejbd transport is already used for deploying applications all Arquillian tests would fail with the default settings.
+
+Therefore the TomEE Arquillian adapter automatically starts the container so that all classes except for a set of well-know dangerous classes are whitelisted.
+
+As Ejbd is by default disabled since TomEE 7.0.0, the TomEE Arquillian adapter automatically activates it when starting a remote container.
+
+#### Remote communication and the TomEE Maven Plugin
+
+The same mentioned above on Arquillian and TomEE is also valid when using the TomEE Maven Plugin.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/embedded-and-remotable.mdtext
----------------------------------------------------------------------
diff --git a/docs/embedded-and-remotable.mdtext b/docs/embedded-and-remotable.mdtext
new file mode 100644
index 0000000..916432c
--- /dev/null
+++ b/docs/embedded-and-remotable.mdtext
@@ -0,0 +1,179 @@
+Title: Embedded and Remotable
+<a name="EmbeddedandRemotable-Overview"></a>
+# Overview
+
+This example shows how to use OpenEJB3's remoting capabilities in an
+embedded scenario.  By remoting we mean that you wish to allow *clients in
+other vms* access your ejbs.  _Note, you do not need to go to this extreme
+to unit test ejbs with remote interfaces._
+
+The basic recipe is the same for a standard embedded scenario but with
+these added ingreditents:
+
+  * *openejb.embedded.remotable* property
+  * *openejb-ejbd* jar
+
+While creating the InitialContext, pass in the openejb.embedded.remotable
+property with the value of "true".  When this is seen by the
+LocalInitialContextFactory, it will boot up the Server ServiceManager in
+the VM which will in turn look for ServerServices in the classpath.
+
+Provided you have the openejb-ejbd jar in your classpath along with it's
+dependencies (openejb-server, openejb-client, openejb-core), then those
+services will be brought online and remote clients will be able to connect
+into your vm and invoke beans.
+
+If you want to add more ServerServices such as the http version of the ejbd
+protocol you'd simply add the openejb-httpejbd jar to your classpath.  A
+number of ServerServices are available currently:
+
+  * openejb-ejbd
+  * openejb-http
+  * openejb-telnet
+  * openejb-derbynet
+  * openejb-hsql
+  * openejb-activemq
+
+_The source for this example is in the "telephone-stateful" directory
+located in the [openejb-examples.zip](openejb:download.html)
+ available on the [download page](http://tomee.apache.org/downloads.html)._
+
+{note}
+If your goal is simply to unit test beans with remote interfaces, this is
+*not* the right example for you.  The LocalInitialContextFactory completely
+supports remote interfaces and all spec required pass-by-value
+(serialization) semantics without the need for network sockets.  This
+example shows the use of OpenEJB in an embedded environment where
+connection *outside* the 
+vm is required.{note}
+
+<a name="EmbeddedandRemotable-TheCode"></a>
+# The Code
+
+For this example we have a simple Stateful bean called TelephoneBean as
+defined below.	As a simple way of demonstrating the state we have to
+methods: speak and listen.  You call _speak_ and pass in some text, then
+you call _listen_ to get your answer.
+
+<a name="EmbeddedandRemotable-bean"></a>
+## bean
+
+{snippet:id=code|url=openejb3/examples/telephone-stateful/src/main/java/org/superbiz/telephone/TelephoneBean.java|lang=java}
+
+<a name="EmbeddedandRemotable-businessinterface"></a>
+## business interface
+
+{snippet:id=code|url=openejb3/examples/telephone-stateful/src/main/java/org/superbiz/telephone/Telephone.java|lang=java}
+
+{tip:title=EJB3 Notes}
+The bean class uses the annotation *@Remote* but does not specify a list of
+interfaces as is normally required.  Per EJB3 rules, if the bean implements
+exactly *one business interface* it may use @Remote with no other values
+and that business interface is then implied to be a remote business
+interface.  The same rule applies to identical usage of @Local.
+
+The critical thing to know is that if you add another interface the rules
+change and require that you specify both interfaces in the @Remote
+annotation as in @Remote(\{Telephone.class, SecondInterface.class\}).
+{tip}
+
+<a name="EmbeddedandRemotable-Embedding"></a>
+# Embedding
+
+We're going to embed OpenEJB3 into a plain JUnit TestCase as a simple means
+of demonstrating the remote capabilities.  We'll do the embedding in our
+test setUp method, then will make two test methods: 
+ - one for invoking the bean's remote interface via the
+*LocalInitialContextFactory* which goes straight against the embedded
+container system
+ - one for invoking the bean's remote interface via the
+*RemoteInitialContextFactory* which connects to a Socket and communicates
+to the embedded container system over the ejbd protocol.
+
+<a name="EmbeddedandRemotable-setUp"></a>
+## setUp
+
+{snippet:id=setup|url=openejb3/examples/telephone-stateful/src/test/java/org/superbiz/telephone/TelephoneTest.java|lang=java}
+
+## LocalInitialContextFactory: making in-vm calls to a remote business
+interface
+
+{snippet:id=localcontext|url=openejb3/examples/telephone-stateful/src/test/java/org/superbiz/telephone/TelephoneTest.java|lang=java}
+
+## RemoteInitialContextFactory: making networked calls to a remote
+business interface
+
+This is the part you would want to do in apps that are running a different
+VM than the one in which the ejb container is embedded.  These "client" VMs
+need only have the the *openejb-client jar* in their classpath and connect
+to OpenEJB via the RemoteInitialContextFactory like any other remote EJB
+client.
+
+{snippet:id=remotecontext|url=openejb3/examples/telephone-stateful/src/test/java/org/superbiz/telephone/TelephoneTest.java|lang=java}
+
+<a name="EmbeddedandRemotable-Mavensetup"></a>
+#  Maven setup
+
+{snippet:id=desc|url=openejb3/examples/telephone-stateful/pom.xml}
+
+{snippet:id=openejbdep|url=openejb3/examples/telephone-stateful/pom.xml|lang=xml}
+
+
+<a name="EmbeddedandRemotable-Running"></a>
+#  Running
+
+Running the example is fairly simple.  In the "telephone-stateful"
+directory of the [examples zip](openejb:download.html)
+, just run:
+
+$ mvn clean install
+
+Which should create output like the following.
+
+
+    -------------------------------------------------------
+     T E S T S
+    -------------------------------------------------------
+    Running org.superbiz.telephone.TelephoneTest
+    Apache OpenEJB 3.0    build: 20080408-04:13
+    http://tomee.apache.org/
+    INFO - openejb.home =
+/Users/dblevins/work/openejb-3.0/examples/telephone-stateful
+    INFO - openejb.base =
+/Users/dblevins/work/openejb-3.0/examples/telephone-stateful
+    INFO - Configuring Service(id=Default Security Service,
+type=SecurityService, provider-id=Default Security Service)
+    INFO - Configuring Service(id=Default Transaction Manager,
+type=TransactionManager, provider-id=Default Transaction Manager)
+    INFO - Configuring Service(id=Default JDK 1.3 ProxyFactory,
+type=ProxyFactory, provider-id=Default JDK 1.3 ProxyFactory)
+    INFO - Found EjbModule in classpath:
+/Users/dblevins/work/openejb-3.0/examples/telephone-stateful/target/classes
+    INFO - Configuring app:
+/Users/dblevins/work/openejb-3.0/examples/telephone-stateful/target/classes
+    INFO - Configuring Service(id=Default Stateful Container, type=Container,
+provider-id=Default Stateful Container)
+    INFO - Auto-creating a container for bean TelephoneBean:
+Container(type=STATEFUL, id=Default Stateful Container)
+    INFO - Loaded Module:
+/Users/dblevins/work/openejb-3.0/examples/telephone-stateful/target/classes
+    INFO - Assembling app:
+/Users/dblevins/work/openejb-3.0/examples/telephone-stateful/target/classes
+    INFO - Jndi(name=TelephoneBeanRemote) --> Ejb(deployment-id=TelephoneBean)
+    INFO - Created Ejb(deployment-id=TelephoneBean, ejb-name=TelephoneBean,
+container=Default Stateful Container)
+    INFO - Deployed
+Application(path=/Users/dblevins/work/openejb-3.0/examples/telephone-stateful/target/classes)
+      ** Starting Services **
+      NAME		       IP	       PORT  
+      ejbd		       127.0.0.1       4201  
+      admin thread	       127.0.0.1       4200  
+    -------
+    Ready!
+    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.89 sec
+    
+    Results :
+    
+    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/embedded-configuration.mdtext
----------------------------------------------------------------------
diff --git a/docs/embedded-configuration.mdtext b/docs/embedded-configuration.mdtext
new file mode 100644
index 0000000..601719d
--- /dev/null
+++ b/docs/embedded-configuration.mdtext
@@ -0,0 +1,132 @@
+Title: Embedded Configuration
+
+<a name="EmbeddedConfiguration-Defaults,OverridesandOrder"></a>
+#  Defaults, Overrides and Order
+
+When booting up OpenEJB for testing via the `LocalInitialContextFactory`
+or the newer `EJBContainer.createEJBContainer()` API part of EJB 3.1 there
+is quite a bit of flexibility to how things are configured.
+
+OpenEJB will function fine with no configuration at all and will happily
+create things as needed and select defaults for everything.  So in a real
+sense configuration is all about overriding those defaults.  There are
+several places to put your overrides and an a specific order how they are
+applied.  Here they are in order of preference; 1 = highest, 5 = lowest.
+
+{row
+{span8
+**InitialContext**
+
+1. InitialContext properties
+1. jndi.properties from the classpath
+1. System properties
+1. openejb.xml declarations/properties
+1. service-jar.xml declarations/properties (internal concept)
+}
+
+{span8
+**EJBContainer API**
+1. EJBContainer.createEJBContainer(Map) entries
+1. System properties
+1. openejb.xml declarations/properties
+1. service-jar.xml declarations/properties (internal concept)
+
+}
+}
+
+It opens up some interesting possibilities in how you configure your
+environment.  You could do 100% of your configuration in your test case via
+InitialContext propertes, or you could do say 80% in a jndi.properties file
+or openejb.xml file and 20% in your test case via InitialContext
+properties.  You can put 100% of your configuration in a `jndi.properties` or
+`openejb.xml` file and override them via `InitialContext` properties.
+
+You can manage the properties how you wish and there is no need for
+redundant definitions if you do not want them.
+
+<a name="EmbeddedConfiguration-Whatisconfigurable?"></a>
+#  What is configurable?
+
+Everything you can configure via an openejb.xml (minus the <Deployment>
+element) can be configured/overridden via properties. See [Configuring Containers in Tests](configuring-containers-in-tests.html)
+ and [Configuring DataSources in Tests](configuring-datasources-in-tests.html).
+
+Everything in your logging.properties can be configured/overridden via
+properties.  See [Configuring Logging in Tests](configuring-logging-in-tests.html).
+
+The properties of persistence units declared in a persistence.xml can be
+configured/overridden via properties.  See [Configuring PersistenceUnits in Tests](configuring-persistenceunits-in-tests.html).
+
+OpenEJB has many flags that can also be set as properties.  See [OpenEJB Properties](properties-listing.html)
+ for details on those.
+
+<a name="EmbeddedConfiguration-ExampleofusingInitialContextproperties"></a>
+# Example of using InitialContext properties
+
+
+    Properties p = new Properties();
+    
+    // set the initial context factory
+    p.put("java.naming.factory.initial ", "org.apache.openejb.client.LocalInitialContextFactory");
+    
+    // change some logging
+    p.put("log4j.category.OpenEJB.options ", " debug");
+    p.put("log4j.category.OpenEJB.startup ", " debug");
+    p.put("log4j.category.OpenEJB.startup.config ", " debug");
+    
+    // create some resources
+    p.put("movieDatabase", "new://Resource?type=DataSource");
+    p.put("movieDatabase.JdbcDriver ", " org.hsqldb.jdbcDriver");
+    p.put("movieDatabase.JdbcUrl ", " jdbc:hsqldb:mem:moviedb");
+    
+    // override properties on your "movie-unit" persistence unit
+    p.put("movie-unit.hibernate.dialect ", "org.hibernate.dialect.HSQLDialect");
+    
+    // set some openejb flags
+    p.put("openejb.jndiname.format ", " {ejbName}/{interfaceClass}");
+    p.put("openejb.descriptors.output ", " true");
+    p.put("openejb.validation.output.level ", " verbose");
+    
+    InitialContext initialContext = new InitialContext(p);
+
+
+<a name="EmbeddedConfiguration-Exampleofusingjndi.properties"></a>
+# Example of using jndi.properties
+
+Here's an example of the same properties being specified via a
+`jndi.properties file`.  This file just needs to be placed in the classpath,
+not in a subdirectory of a path in the classpath such as META-INF, but at
+the root of any of the paths in the classpath.
+
+    # set the initial context factory
+    java.naming.factory.initial = org.apache.openejb.client.LocalInitialContextFactory
+    
+    # change some logging
+    log4j.category.OpenEJB.options = debug
+    log4j.category.OpenEJB.startup = debug
+    log4j.category.OpenEJB.startup.config = debug
+    
+    # create some resources
+    movieDatabase = new://Resource?type=DataSource
+    movieDatabase.JdbcDriver = org.hsqldb.jdbcDriver
+    movieDatabase.JdbcUrl = jdbc:hsqldb:mem:moviedb
+    
+    # override properties on your "movie-unit" persistence unit
+    movie-unit.hibernate.dialect = org.hibernate.dialect.HSQLDialect
+    
+    # set some openejb flags
+    openejb.jndiname.format = {ejbName}/{interfaceClass}
+    openejb.descriptors.output = true
+    openejb.validation.output.level = verbose
+
+
+Then OpenEJB can be booted via the `InitialContext` as normal.  Properties
+can still be used to override any of the above properties:
+
+
+    Properties p = new Properties();
+    
+    p.put("openejb.validation.output.level ", " medium");
+    
+    InitialContext initialContext = new InitialContext(p);
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/embedding.mdtext
----------------------------------------------------------------------
diff --git a/docs/embedding.mdtext b/docs/embedding.mdtext
new file mode 100644
index 0000000..d6f26e2
--- /dev/null
+++ b/docs/embedding.mdtext
@@ -0,0 +1,26 @@
+Title: Embedding
+The basic process for embedding OpenEJB:
+
+1. Add the OpenEJB libraries to your classpath
+1. Ensure your EJB modules are discoverable
+1. Use the LocalInitialContextFactory to boot OpenEJB
+
+
+<a name="Embedding-Importantdocs"></a>
+## Important docs
+
+- [Application discovery via the classpath](application-discovery-via-the-classpath.html)
+- [Embedded Configuration](embedded-configuration.html)
+- [Configuring DataSources in Tests](configuring-datasources-in-tests.html)
+- [Configuring PersistenceUnits in Tests](configuring-persistenceunits-in-tests.html)
+- [Configuring Containers in Tests](configuring-containers-in-tests.html)
+- [Configuring Logging in Tests](configuring-logging-in-tests.html)
+- [Alternate Descriptors](alternate-descriptors.html)
+- [Unit Testing Transactions](unit-testing-transactions.html)
+- [TestCase with TestBean inner-class](testcase-with-testbean-inner-class.html)
+- [TestCase Injection (@LocalClient)](local-client-injection.html)
+
+<a name="Embedding-Examples"></a>
+## Examples
+
+{include:Examples Table}

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/failover-logging.mdtext
----------------------------------------------------------------------
diff --git a/docs/failover-logging.mdtext b/docs/failover-logging.mdtext
new file mode 100644
index 0000000..160069c
--- /dev/null
+++ b/docs/failover-logging.mdtext
@@ -0,0 +1,38 @@
+Setting the following logging category to "debug" will open up some new logging information.
+
+    log4j.category.OpenEJB.server.discovery = debug
+
+Or more specifically as:
+
+    log4j.category.OpenEJB.server.discovery.multipoint = debug
+    log4j.category.OpenEJB.server.discovery.multicast = debug
+
+The nature of the debug output is to display all configuration information at startup:
+
+    DEBUG - Using default 'heart_rate=500'
+    DEBUG - Using default 'max_missed_heartbeats=10'
+    DEBUG - Using default 'max_reconnect_delay=30000'
+    DEBUG - Using default 'reconnect_delay=5000'
+    DEBUG - Using default 'exponential_backoff=0'
+    DEBUG - Using default 'max_reconnect_attempts=10'
+    INFO - Created Tracker{group='default', groupPrefix='default:', heartRate=500, maxMissedHeartbeats=10, reconnectDelay=5000, maxReconnectDelay=30000, maxReconnectAttempts=10, exponentialBackoff=0, useExponentialBackOff=false, registeredServices=0, discoveredServices=0}
+
+Changing the configuration should reflect in the logging as follows:
+
+    INFO - Using 'heart_rate=200'
+    INFO - Using 'max_missed_heartbeats=2'
+    DEBUG - Using default 'max_reconnect_delay=30000'
+    DEBUG - Using default 'reconnect_delay=5000'
+    DEBUG - Using default 'exponential_backoff=0'
+    DEBUG - Using default 'max_reconnect_attempts=10'
+    INFO - Created Tracker{group='default', groupPrefix='default:', heartRate=200, maxMissedHeartbeats=2, reconnectDelay=5000, maxReconnectDelay=30000, maxReconnectAttempts=10, exponentialBackoff=0, useExponentialBackOff=false, registeredServices=0, discoveredServices=0}
+
+As well as any events at runtime:
+
+    DEBUG - Expired Service{uri=green://localhost:0, broadcastString='default:green://localhost:0&#39;} Timeout{lastSeen=-5005, threshold=5000}
+
+    DEBUG - Added Service{uri=green://localhost:0}
+
+    DEBUG - Removed Service{uri=green://localhost:0}
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/faq.mdtext
----------------------------------------------------------------------
diff --git a/docs/faq.mdtext b/docs/faq.mdtext
new file mode 100644
index 0000000..dea9cf5
--- /dev/null
+++ b/docs/faq.mdtext
@@ -0,0 +1,96 @@
+Title: FAQ
+<a name="FAQ-&nbsp;General"></a>
+## &nbsp;General
+
+&nbsp;
+
+<a name="FAQ-WhatspecversiondoesOpenEJBsupport?"></a>
+### What spec version does OpenEJB support?
+
+OpenEJB supports the Enterprise JavaBeans 3.0 specification and previous
+versions 2.1, 2.0 and 1.1.
+
+<a name="FAQ-Idon'tplantouseEJBs,sowhywouldIembedOpenEJBintoTomcat."></a>
+###  I don't plan to use EJBs, so why would I embed OpenEJB into Tomcat.
+
+Adding OpenEJB to Tomcat gives servlets several new Java EE 5 capabilities
+such as JPA, JAX-WS, JMS, J2EE Connectors, transactions, and more as well
+as enhancing the injection features of Tomcat 6 to now support injection of
+JavaEE objects like Topics, Queues, EntityManagers, JMS
+ConnectionFactories, JavaMail Sessions, as well as simpler data types such
+as Dates, Classes, URI, URL, List, Map, Set, Properties, and more.  In the
+case of Tomcat 5.5 which doesn't support dependency injection at all, even
+more is gained.
+
+<a name="FAQ-CanIrunOpenEJBwithaJVMforanyvendor?"></a>
+### Can I run OpenEJB with a JVM for any vendor?
+
+The Sun, Mac, and IBM vms are regularly tested, however any vm should work.
+
+<a name="FAQ-WhichversionofJavaisrequiredtorunOpenEJB?"></a>
+### Which version of Java is required to run OpenEJB?
+
+Java versions 5 or 6, aka Java 1.5 or 1.6.
+
+<a name="FAQ-DoIneedApacheMaventoworkwithOpenEJB?"></a>
+### Do I need Apache Maven to work with OpenEJB?
+
+Definitely not. Most of the examples include both Maven and Ant build
+files.	OpenEJB is usable as a plain library, much like an embedded
+database like Derby, so it is usable in any application regardless if that
+application is run via Maven, Ant, Intellij, Eclipse, NetBeans, JUnit,
+TestNG, etc.
+
+### Can I start and stop OpenEJB from an IDE? If yes, which IDE is
+supported by OpenEJB?
+
+The short answer is yes.  The basic approach for all embedding scenarios is
+to 1) add OpenEJB to your classpath, and 2) construct your InitialContext
+using org.apache.openejb.client.LocalInitialContextFactory.  The
+LocalInitialContextFactory will boot OpenEJB in your vm and all ejb
+applications visible in the classpath will be deployed. See
+http://tomee.apache.org/embedding-openejb.html for details on how to
+embed openejb in your application and IDE.  See [Application discovery via the classpath](openejbx30:application-discovery-via-the-classpath.html)
+ for various ways to have your applications discovered. 
+
+
+###  During embedded testing, how can I externalize all my DataSource
+configuration? 
+
+Create an openejb.xml file in any directory that gets added to your test
+classpath. For maven, something that winds up directly under
+"target/classes/" or "target/test-classes/" will work just fine.  Then in
+your test case do this:
+
+       protected void setUp() throws Exception {
+           Properties properties = new Properties();
+           properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, 
+"org.apache.openejb.client.LocalInitialContextFactory");
+    
+           URL config =
+this.getClass().getClassLoader().getResource("openejb.xml");
+           properties.setProperty("openejb.configuration",
+config.toExternalForm());
+    
+           initialContext = new InitialContext(properties);
+       }
+
+The file itself doesn't have to be called "openejb.xml", you could have a
+few different files like that for different testing scenarios each with a
+name that describes the basic setup.
+
+<a name="FAQ-Container-ManagedPersistence"></a>
+## Container-Managed Persistence
+
+<a name="FAQ-WhatenginedoesOpenEJBuseforCMP?"></a>
+### What engine does OpenEJB use for CMP?
+
+The CMP engine is written as a layer over JPA with OpenJPA doing the
+persistence work.
+
+<a name="FAQ-WhatistheformatfortheCMPmappingfiles?"></a>
+### What is the format for the CMP mapping files?
+
+The standard JPA mapping file and annotations are also used for CMP
+mappings.
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/faq_openejb-jar.html.mdtext
----------------------------------------------------------------------
diff --git a/docs/faq_openejb-jar.html.mdtext b/docs/faq_openejb-jar.html.mdtext
new file mode 100644
index 0000000..82b03b7
--- /dev/null
+++ b/docs/faq_openejb-jar.html.mdtext
@@ -0,0 +1,2 @@
+Title: faq_openejb-jar.html
+Need Complete stes to deploy a bean using openejb

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/features.mdtext
----------------------------------------------------------------------
diff --git a/docs/features.mdtext b/docs/features.mdtext
new file mode 100644
index 0000000..72b8e33
--- /dev/null
+++ b/docs/features.mdtext
@@ -0,0 +1 @@
+Title: Features

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/from-glassfish-to-tomee.mdtext
----------------------------------------------------------------------
diff --git a/docs/from-glassfish-to-tomee.mdtext b/docs/from-glassfish-to-tomee.mdtext
new file mode 100644
index 0000000..b6aa58d
--- /dev/null
+++ b/docs/from-glassfish-to-tomee.mdtext
@@ -0,0 +1,3 @@
+# From Glassfish Application Server to TomEE (plus)
+
+This page aims at reporting feedback from users while migrating from Glassfish to Apache TomEE.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/functional-testing-with-openejb,-jetty-and-selenium.mdtext
----------------------------------------------------------------------
diff --git a/docs/functional-testing-with-openejb,-jetty-and-selenium.mdtext b/docs/functional-testing-with-openejb,-jetty-and-selenium.mdtext
new file mode 100644
index 0000000..78a3523
--- /dev/null
+++ b/docs/functional-testing-with-openejb,-jetty-and-selenium.mdtext
@@ -0,0 +1,236 @@
+Title: Functional testing with OpenEJB, Jetty and Selenium
+Obviously, OpenEJB is great for unit testing EJBs, but I wondered whether I
+might also be able to use this embedded functionality to functionally test
+my application. You can use tools like Selenium, or HtmlUnit to run
+functional tests as if the user were sat at their browser typing text, and
+clicking links and buttons. This however means you have to have your app
+running on your app server, and you need to have consistent test data -
+otherwise a test might pass on one developers machine, but fail on another.
+Here's one approach that you could take to completely deploy your webapp
+within a test, and functionally test it with a tool like Selenium. There's
+also some sample code demonstrating this, available [here](http://people.apache.org/~jgallimore/PersonApp.zip)
+.
+
+
+<a name="FunctionaltestingwithOpenEJB,JettyandSelenium-Creatinganembeddedserver"></a>
+### Creating an embedded server
+
+I created a class to start my embedded OpenEJB and Jetty instances and
+configure them to see the EJB and WAR modules of my application:
+
+
+    public class EmbeddedServer {
+        private static EmbeddedServer instance = new EmbeddedServer();
+        private Server server;
+    
+        private EmbeddedServer() {
+    	try {
+    	    // initialize OpenEJB & add some test data
+    	    Properties properties = new Properties();
+    	    properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
+    	    InitialContext ic = new InitialContext(properties);
+    	    PeopleFacade facade = (PeopleFacade) ic.lookup("PeopleFacadeEJBRemote");
+    	    new TestFixture(facade).addTestData();
+    
+    	    // setup web app
+    	    WebAppContext context = new WebAppContext();
+    	    context.setWar(computeWarPath());
+    	    InitialContext initialContext = setupJndi(context);
+    
+    	    // start the server
+    	    context.setServletHandler(new EmbeddedServerServletHandler(initialContext));
+    	    context.setContextPath("/");
+    	    server = new Server(9091);
+    	    server.addHandler(context);
+    
+    	    server.start();
+    	} catch (Exception e) {
+    	    e.printStackTrace();
+    	}
+        }
+    
+        private InitialContext setupJndi(WebAppContext context) throws NamingException {
+    	// setup local JNDI
+    	InitialContext initialContext = new InitialContext();
+    	WebApp webApp = getWebApp(context);
+    	Collection<EjbRef> refs = webApp.getEjbRef();
+    	for (EjbRef ref : refs) {
+    	    String ejbLink = ref.getEjbLink();
+    
+    	    // get enterprise bean info
+    	    EnterpriseBeanInfo beanInfo = new EJBHelper().getEJBInfo(ejbLink);
+    	    if (beanInfo.jndiNames != null && beanInfo.jndiNames.size() > 0) {
+    		String jndiName = "java:openejb/ejb/" + beanInfo.jndiNames.get(0);
+    		initialContext.bind("java:comp/env/" + ref.getEjbRefName(), new LinkRef(jndiName));
+    	    }
+    	}
+    	return initialContext;
+        }
+    
+        private String computeWarPath() {
+    	String currentPath = new File(".").getAbsolutePath();
+    	String warPath;
+    
+            String[]  pathParts = currentPath.split("(\\\\|/)+");
+    
+    	int webPart = Arrays.asList(pathParts).indexOf("PersonWEB");
+    	if (webPart == -1) {
+    	    warPath = "PersonWEB/src/main/webapp";
+    	} else {
+    	    StringBuffer buffer = new StringBuffer();
+    
+    	    for (int i = 0; i < webPart; i++) {
+                    buffer.append(pathParts[i]);
+    		buffer.append(File.separator);
+    	    }
+    
+    	    buffer.append("PersonWEB/src/main/webapp");
+    	    warPath = buffer.toString();
+    	}
+    	return warPath;
+        }
+    
+        public static EmbeddedServer getInstance() {
+    	return instance;
+        }
+    
+        public Server getServer() {
+    	return server;
+        }
+    
+        public static void main(String[]  args) {
+    	try {
+    	    EmbeddedServer.getInstance().getServer().join();
+    	} catch (Exception e) {
+    	    e.printStackTrace();
+    	}
+        }
+    
+        private WebApp getWebApp(WebAppContext context) {
+    	WebApp webApp = null;
+    
+    	try {
+    	    FileInputStream is = new FileInputStream(new File(context.getWar() + "/WEB-INF/web.xml").getAbsolutePath());
+    	    webApp = (WebApp) JaxbJavaee.unmarshal(WebApp.class, is);
+    	} catch (Exception e) {
+    	    e.printStackTrace();
+    	}
+    	return webApp;
+        }
+    } 
+
+
+This class sets up an embedded instance of Jetty, running on port 9091.
+You'll notice the setupJndi() method. This looks through the ejb-ref
+entries in web.xml (which we deserialize using the openejb-jee library),
+and adds relevant LinkRefs to the JNDI tree, so you can lookup beans using
+the java:comp/env/bean format. I've added a main() method here for
+convenience, so you can run this straight from an IDE, and record tests
+using tools like the Selenium Firefox plugin.
+
+<a name="FunctionaltestingwithOpenEJB,JettyandSelenium-Supporting@EJBDependencyinjection"></a>
+### Supporting @EJB Dependency injection
+
+In the last code sample, we also set up a custom ServletHandler in Jetty -
+this is to perform dependency injection. The custom ServletHandler looks
+like this:
+
+
+    public class EmbeddedServerServletHandler extends ServletHandler {
+        private InitialContext initialContext;
+    
+        public EmbeddedServerServletHandler(InitialContext initialContext) {
+    	this.initialContext = initialContext;
+        }
+    
+        public Servlet customizeServlet(Servlet servlet) throws Exception {
+    	Class<? extends Servlet> servletClass = servlet.getClass();
+            Field[]
+ declaredFields = servletClass.getDeclaredFields();
+    
+    	for (Field declaredField : declaredFields) {
+                Annotation[]
+ annotations = declaredField.getAnnotations();
+    
+    	    for (Annotation annotation : annotations) {
+    		if (EJB.class.equals(annotation.annotationType())) {
+    		    // inject into this field
+    		    Class<?> fieldType = declaredField.getType();
+    		    EnterpriseBeanInfo beanInfo = getBeanFor(fieldType);
+    		    if (beanInfo == null) {
+    			continue;
+    		    }
+                       
+    		    String jndiName = "java:openejb/ejb/" + beanInfo.jndiNames.get(0);
+    		    Object o = initialContext.lookup(jndiName);
+    
+    		    declaredField.setAccessible(true);
+    		    declaredField.set(servlet, o);
+    		}
+    	    }
+    	}
+    
+    	return super.customizeServlet(servlet);
+        }
+    
+        private EnterpriseBeanInfo getBeanFor(Class<?> fieldType) {
+    	return new EJBHelper().getBeanInfo(fieldType);
+        }
+    } 
+    
+
+
+This looks up deployed beans that match the field type, and uses reflection
+to set the field.
+
+<a name="FunctionaltestingwithOpenEJB,JettyandSelenium-WritingaFunctionaltest"></a>
+### Writing a Functional test
+
+We can now write a functional test. I use a base abstract class to make
+sure the Embedded server is running, and start Selenium:
+
+
+    public abstract class FunctionalTestCase extends TestCase {
+        protected DefaultSelenium selenium;
+    
+        protected void setUp() throws Exception {
+    	super.setUp();
+    	EmbeddedServer.getInstance();
+    	selenium = new DefaultSelenium("localhost", 4444, "*iexplore", "http://localhost:9091/");
+    	selenium.start();
+        }
+    
+        protected void tearDown() throws Exception {
+    	selenium.stop();
+        }
+    }
+
+
+and I can then I write a test like this:
+
+
+    public class AddPersonTest extends FunctionalTestCase {
+        public void testShouldAddAPerson() throws Exception {
+    	selenium.open("/People");
+    	selenium.type("firstname", "Jonathan");
+    	selenium.type("lastname", "Gallimore");
+            selenium.click("//input[@name='add' and @value='Add']");
+    	selenium.waitForPageToLoad("30000");
+    	selenium.type("filter", "gallimore");
+    	selenium.click("submit");
+    	selenium.waitForPageToLoad("30000");
+            assertEquals(1, selenium.getXpathCount("//div[@id='people']/ul/li").intValue());
+            assertEquals("Jonathan Gallimore", selenium.getText("//div[@id='people']/ul/li[1]"));
+    
+        }
+    } 
+
+
+<a name="FunctionaltestingwithOpenEJB,JettyandSelenium-Samplecode"></a>
+### Sample code
+
+I've made a sample project which demonstrates this, source is available [here](http://people.apache.org/~jgallimore/PersonApp.zip)
+. You'll need Maven to build it, and you can build it and run the tests by
+running 'mvn clean install'. If want to run the tests from your IDE, you'll
+need to have a Selenium server running, which you can do by running 'mvn
+selenium:start-server'. 

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/generating-ejb-3-annotations.mdtext
----------------------------------------------------------------------
diff --git a/docs/generating-ejb-3-annotations.mdtext b/docs/generating-ejb-3-annotations.mdtext
new file mode 100644
index 0000000..4f849f8
--- /dev/null
+++ b/docs/generating-ejb-3-annotations.mdtext
@@ -0,0 +1,57 @@
+Title: Generating EJB 3 annotations
+<a name="GeneratingEJB3annotations-GeneratingEJB3annotations"></a>
+# Generating EJB 3 annotations
+
+The OpenEJB Eclipse plugin is able to provide some assistance in helping
+you migrate EJB 2.x projects to EJB 3.0, by analyzing your ejb-jar.xml
+file, and adding EJB annotations to your source code. This page will show
+you how to use this functionality.
+
+First of all you will need to add the EJB 3.0 API jars to the classpath of
+your project. If you are using Maven, you can add the following to your POM
+(you will need to update your Eclipse project using mvn eclipse:eclipse
+afterwards)
+
+
+      <dependencies>
+        ...
+        <dependency>
+          <groupId>org.apache.openejb</groupId>
+          <artifactId>javaee-api</artifactId>
+          <version>5.0-1</version>
+          <scope>provided</scope>
+        </dependency>
+      </dependencies>
+
+
+Alternatively, import the API jars into your project, and add them to your
+build path.
+
+Next, click the 'OpenEJB' menu on the menubar, and select 'Generate
+Annotations'.
+
+!http://www.jrg.me.uk/openejb/annotations_step_1.jpg!
+
+Select the project you would like to work with, if it isn't already
+selected. Click 'Next'.
+
+!http://www.jrg.me.uk/openejb/annotations_step_2.jpg!
+
+Select your ejb-jar.xml and (optionally) your openejb-jar.xml files. Select
+or deselect the other options as appropriate, and select 'Next'.
+
+Options:
+
+    * Alter SessionBean interfaces - This option makes your session beans
+implement your remote / local interfaces as opposed to
+javax.ejb.SessionBean, and stops your remote / local interfaces extending
+javax.ejb.EJBObject.
+    * Add @Remote and @RemoteHome annotations - This adds @Remote and
+@RemoteHome annotations appropriately
+    * Convert entity beans to POJOs - This options converts abstract CMP
+classes to POJOs generating simple getters and setters.
+
+!http://www.jrg.me.uk/openejb/annotations_step_3.jpg!
+
+Review the changes that the plugin will make to your source code. Uncheck
+any changes you don't want to apply, and click 'Finish'.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/getting-started.mdtext
----------------------------------------------------------------------
diff --git a/docs/getting-started.mdtext b/docs/getting-started.mdtext
new file mode 100644
index 0000000..e3b8ab1
--- /dev/null
+++ b/docs/getting-started.mdtext
@@ -0,0 +1,169 @@
+Title: Getting Started
+##The following instructions are written using Eclipse 3.2. We will
+refer to the install location of OpenEJB as OPENEJB_HOME
+
+Here are some basic steps you need to perform to get started with OpenEJB
+1. Download and install OpenEJB
+1. Setup your development environment
+1. Write an EJB
+1. Write an EJB client
+1. Start the server
+1. Deploy the EJB
+1. Run the client
+1. Stop the server
+
+> 
+
+<a name="GettingStarted-&nbsp;1.DownloadandInstallOpenEJB"></a>
+##1. Download and Install OpenEJB
+
+Follow these&nbsp;[instructions](http://cwiki.apache.org/confluence/display/OPENEJB/Quickstart)
+
+<a name="GettingStarted-&nbsp;2.Setupyourdevelopmentenvironment"></a>
+##2. Setup your development environment
+
+
+<a name="GettingStarted-&nbsp;Eclipse"></a>
+###Eclipse
+
+- Open eclipse and create a new java project. Name it EJBProject
+- Add the following jars to the build path of your project
+-- OPENEJB_HOME/lib/geronimo-ejb_3.0_spec-1.0.jar
+- Now create another project named EJBClient. This is where we will write a test client
+- Add the following jars to the build path of this project
+-- OPENEJB_HOME/lib/openejb-client-3.0.0-SNAPSHOT.jar
+- Add the EJBProject to the classpath of the EJBClient project
+
+<a name="GettingStarted-&nbsp;3.StarttheServer"></a>
+##3. Start the Server
+
+Open the command prompt and run the following command:
+
+    d:\openejb-3.0.0-SNAPSHOT\bin\openejb start
+
+You will get the following message on the console:
+
+    D:\openejb-3.0.0-SNAPSHOT>bin\openejb start
+    Apache OpenEJB 3.0.0-SNAPSHOT	 build: 20070830-07:53
+    http://tomee.apache.org/
+    OpenEJB ready.
+    [OPENEJB:init]
+     OpenEJB Remote Server
+          ** Starting Services **
+          NAME		       IP	       PORT
+          httpejbd	       0.0.0.0	       4204
+          admin thread	       0.0.0.0	       4200
+          ejbd		       0.0.0.0	       4201
+          hsql		       0.0.0.0	       9001
+          telnet	       0.0.0.0	       4202
+        -------
+        Ready!
+
+
+<a name="GettingStarted-&nbsp;4.WriteanEJB"></a>
+##4. Write an EJB
+
+In the EJB project create a new interface named Greeting
+
+    package com.myejbs;
+    
+    import javax.ejb.Remote;
+    
+    @Remote
+    public interface Greeting {
+      public String greet();
+    }
+
+Now create a new class named GreetingBean which implements the above
+interface (shown below)
+
+    package com.myejbs;
+    
+    import javax.ejb.Stateless;
+    
+    @Stateless
+    public class GreetingBean implements Greeting {
+    
+    	public String greet() {
+    		return "My First Remote Stateless Session Bean";
+    	}
+    
+    }
+
+
+<a name="GettingStarted-&nbsp;5.DeploytheEJB"></a>
+## 5. Deploy the EJB
+
+1. Export the EJBProject as a jar file. Name it greeting.jar and put it in
+the OPENEJB_HOME/apps directory.
+1. Open the command prompt and type in the following command:
+
+
+    d:\openejb-3.0.0-SNAPSHOT > bin\openejb deploy apps\greeting.jar
+
+This should give you the following output:
+
+    D:\openejb-3.0.0-SNAPSHOT>bin\openejb deploy apps\greeting.jar
+    
+    Application deployed successfully at \{0\}
+    
+    App(id=D:\openejb-3.0.0-SNAPSHOT\apps\greeting.jar)
+    
+        EjbJar(id=greeting.jar, path=D:\openejb-3.0.0-SNAPSHOT\apps\greeting.jar)
+    
+    	Ejb(ejb-name=GreetingBean, id=GreetingBean)
+    
+    	    Jndi(name=GreetingBeanRemote)
+
+{color:#330000}{*}Notice the Jndi(name=GreetingBeanRemote) information.
+Keep this handy as this is the JNDI name of the bean which the client will
+use for lookup{*}{color}
+
+<a name="GettingStarted-&nbsp;6.WritetheClient"></a>
+##6. Write the Client
+
+In the EJBClient project, create a class named Client (shown below)
+
+    package com.myclient;
+    
+    import com.myejbs.Greeting;
+    
+    import javax.naming.InitialContext;
+    import java.util.Properties;
+    
+    public class Client {
+        public static void main(String[] args) {
+    
+            try {
+                Properties p = new Properties();
+                p.put("java.naming.factory.initial", "org.openejb.client.RemoteInitialContextFactory");
+                p.put("java.naming.provider.url", "ejbd://127.0.0.1:4201");
+                InitialContext ctx = new InitialContext(p);
+                Greeting greeter = (Greeting) ctx.lookup("GreetingBeanRemote");
+                String message = greeter.greet();
+                System.out.println(message);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+
+<a name="GettingStarted-&nbsp;7.RuntheClient"></a>
+##7. Run the Client
+
+Open Client.java in eclipse and run it as a java application. You should
+see the following message in the console view:
+
+    My First Remote Stateless Session Bean
+
+
+<a name="GettingStarted-&nbsp;8.Stoptheserver"></a>
+##8. Stop the server
+
+There are two ways to stop the server:
+1. You can press Ctrl+c on the command prompt to stop the server
+1. On the command prompt type in the following command:
+
+    D:\openejb-3.0.0-SNAPSHOT>bin\openejb stop
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/hello-world.mdtext
----------------------------------------------------------------------
diff --git a/docs/hello-world.mdtext b/docs/hello-world.mdtext
new file mode 100644
index 0000000..ab23e37
--- /dev/null
+++ b/docs/hello-world.mdtext
@@ -0,0 +1,246 @@
+Title: Hello World
+This page shows the basic steps required to create, build, and run an EJB
+and EJB client in its most minimum form.  It does not hide steps or rely on
+special build tools or IDEs and is about the most stripped down you can
+get.
+
+_See the [Examples](examples.html)
+ page for a full list of examples that range from [@Stateles|Simple Stateless Example]
+ and [@Stateful|Simple Stateful Example]
+ beans, to [Dependency Injection|Injection of env-entry Example]
+, JDBC [DataSources|Injection of DataSource Example]
+, JPA [EntityManagers|Injection of EntityManager Example]
+ and more._
+
+<a name="HelloWorld-AbasicEJBexample"></a>
+## A basic EJB example
+
+Here are some basic steps you need to perform to get started with OpenEJB
+
+1. Download and install OpenEJB
+1. Setup your development environment
+1. Write an EJB
+1. Write an EJB client
+1. Start the server
+1. Deploy the EJB
+1. Run the client
+1. Stop the server
+
+<a name="HelloWorld-DownloadandinstallOpenEJB"></a>
+## Download and install OpenEJB
+
+This example pertains to OpenEJB 3.0 which can be [downloaded here](http://archive.apache.org/dist/openejb/3.0)
+.  Once you have downloaded OpenEJB, you can then simply extract the
+contents of the downloaded file to whichever directory you want to install
+OpenEJB in. 
+
+After extracting the file contents, you should now see a directory named
+openejb-3.0. If you look under this directory, you will find a few more
+directories:
+- *bin*: Contains commands to start/stop the server (You can also do a lot
+of other stuff like deploy/undeploy, but we will just talk about things
+needed to get you started)
+- *lib*: Contains several jar files (you only need of few of these jars in
+your classpath to do EJB development)
+- *apps*: Once you create your EJB's and jar them up, you can place your
+jar file in this directory and start the server. The server will
+automatically deploy all the EJB's contained in this JAR.
+- *conf*: This directory contains all the configuration files. Although you
+may not see any file except for a README.txt file right now, but after you
+start the server, the required configuration files will be automatically
+created. It is highly recommeded to read the README.txt file under this
+directory
+- *logs*: Contains log files. 
+
+<a name="HelloWorld-Setupyourdevelopmentenvironment"></a>
+## Setup your development environment
+
+<a name="HelloWorld-Createaworkingdirectory"></a>
+### Create a working directory
+Assuming you are in your home directory, create a directory named projects
+
+    karan@poweredge:~$ mkdir projects
+
+Go to the projects directory
+
+    karan@poweredge:~$ cd projects
+
+We will do all our work in this directory.
+<a name="HelloWorld-InstallJava"></a>
+### Install Java
+Download and install Java (version 5 or higher). Also set it up so that you
+can run the java and javac commands from any directory
+<a name="HelloWorld-SetOPENEJB_HOME"></a>
+### Set OPENEJB_HOME
+We will setup this variable to refer to the openejb install location.
+
+    karan@poweredge:~/projects$ export
+OPENEJB_HOME=/home/karan/install/openejb-3.0
+
+<a name="HelloWorld-WriteanEJB"></a>
+## Write an EJB
+Whatever files you create should be placed under the projects directory
+<a name="HelloWorld-CreatetheRemoteInterface"></a>
+### Create the Remote Interface
+Using your favorite editor, create a file named Hello.java (shown below)
+
+    package org.acme;
+    import javax.ejb.Remote;
+    @Remote
+    public interface Hello{
+    	public String sayHello();
+    }
+    
+
+<a name="HelloWorld-CreatetheBeanClass"></a>
+### Create the Bean Class
+Now create a file named HelloBean.java (shown below)
+
+    package org.acme;
+    import javax.ejb.Stateless;
+    @Stateless
+    public class HelloBean implements Hello{
+    	public String sayHello(){
+    		return "Hello World!!!!";
+    	}
+    }
+    
+
+<a name="HelloWorld-Compilethesourcecode"></a>
+### Compile the source code
+Since we have imported the javax.ejb.Stateless and javax.ejb.Remote
+annotations, we need these in our classpath to compile our source code.
+These annotations can be found in the $OPENEJB_HOME/lib/javaee-5.0-1.jar.
+Lets compile our source (make sure you are in the projects directory)
+
+    karan@poweredge:~/projects$ javac -cp $OPENEJB_HOME/lib/javaee-5.0-1.jar -d
+. *.java
+
+The above will compile all the .java files and also create the required
+packages. You should now see a package named org under the projects
+directory. All class files should be under org/acme directory.
+<a name="HelloWorld-PackagetheEJB"></a>
+### Package the EJB
+To package the EJB into a JAR, run the following command while you are in
+the projects directory
+
+    karan@poweredge:~/projects$ jar cvf hello.jar org
+
+The above command will package everything under the org directory
+(including the org directory itself) into a jar file named hello.jar. Below
+is the output from running the above command:
+
+    karan@poweredge:~/projects$ jar cvf hello.jar org
+    added manifest
+    adding: org/(in = 0) (out= 0)(stored 0%)
+    adding: org/acme/(in = 0) (out= 0)(stored 0%)
+    adding: org/acme/Hello.class(in = 203) (out= 168)(deflated 17%)
+    adding: org/acme/HelloBean.class(in = 383) (out= 275)(deflated 28%)
+
+<a name="HelloWorld-WriteanEJBClient"></a>
+## Write an EJB Client
+Now we will write a Client class which will lookup the EJB , invoke the
+sayHello() business method and print the value returned from the method.
+While you are in the projects directory, create a new file named
+HelloClient.java . Add the following to this file:
+
+    package org.acme;
+    import java.util.Properties;
+    import javax.naming.InitialContext;
+    import javax.naming.Context;
+    import javax.rmi.PortableRemoteObject;
+    public class HelloClient{
+            public static void main(String[]
+ args) throws Exception{
+    		Properties props = new Properties();
+    	       
+props.put(Context.INITIAL_CONTEXT_FACTORY,"org.apache.openejb.client.RemoteInitialContextFactory");
+    		props.put(Context.PROVIDER_URL,"ejbd://127.0.0.1:4201");
+    		Context ctx = new InitialContext(props);
+    		Object ref = ctx.lookup("HelloBeanRemote");
+    		Hello h =
+(Hello)PortableRemoteObject.narrow(ref,Hello.class);
+    		String result = h.sayHello();
+    		System.out.println(result);
+    	}
+    }
+    
+
+<a name="HelloWorld-CompileHelloClient.java"></a>
+### Compile HelloClient.java
+Run the following command:
+
+    karan@poweredge:~/projects$ javac  -d . HelloClient.java
+
+<a name="HelloWorld-StarttheServer"></a>
+## Start the Server
+Go to the OpenEJB install directory (i.e. OPENEJB_HOME) and run the
+following command:
+
+    karan@poweredge:~/install/openejb-3.0$ bin/openejb start
+
+Once the Server starts, you will see an output similar to the below in your
+console:
+
+    karan@poweredge:~/install/openejb-3.0$ bin/openejb start
+    Apache OpenEJB 3.0    build: 20070926-12:34
+    http://tomee.apache.org/
+    OpenEJB ready.
+    [OPENEJB:init]
+ OpenEJB Remote Server
+      ** Starting Services **
+      NAME		       IP	       PORT  
+      httpejbd	       0.0.0.0	       4204  
+      telnet	       0.0.0.0	       4202  
+      ejbd		       0.0.0.0	       4201  
+      hsql		       0.0.0.0	       9001  
+      admin thread	       0.0.0.0	       4200  
+    -------
+    Ready!
+
+Take out a minute to browse through the conf and logs directories. You
+should now see some configuration and log files under the respective
+directories. 
+<a name="HelloWorld-DeploytheEJB"></a>
+## Deploy the EJB
+We will now use the deploy command to deploy the EJB in hello.jar. While
+you are in the projects directory, run the following command:
+
+    karan@poweredge:~/projects$ $OPENEJB_HOME/bin/openejb deploy hello.jar
+
+The above command should give you the following output:
+
+    karan@poweredge:~/projects$ $OPENEJB_HOME/bin/openejb deploy hello.jar
+    Application deployed successfully at "hello.jar"
+    App(id=/home/karan/projects/hello.jar)
+        EjbJar(id=hello.jar, path=/home/karan/projects/hello.jar)
+    	Ejb(ejb-name=HelloBean, id=HelloBean)
+    	    Jndi(name=HelloBeanRemote)
+
+Notice how the output neatly lays out various deployment details. One thing
+you might want to note from the output is the JNDI name. This is the JNDI
+name we used in the client to lookup the EJB
+<a name="HelloWorld-RuntheClient"></a>
+## Run the Client
+While you are in the projects directory, run the following command to run
+the client:
+
+    karan@poweredge:~/projects$ java -cp
+$OPENEJB_HOME/lib/openejb-client-3.0.jar:$OPENEJB_HOME/lib/javaee-5.0-1.jar:.
+ org.acme.HelloClient
+
+The above should give you the following output:
+
+    Hello World!!!!
+
+<a name="HelloWorld-Help!,itdidn'tworkforme!!."></a>
+## Help! , it didn't work for me!!.
+No problem, we are here to help. Just send us an email at
+users@tomee.apache.org. If possible, send us the contents of
+logs/openejb.log file in the email. 
+
+<a name="HelloWorld-Lookingformore?"></a>
+#  Looking for more?
+
+More EJB 3.0 examples, sample applications, tutorials and howtos available [here](examples.html)
+.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/hibernate.mdtext
----------------------------------------------------------------------
diff --git a/docs/hibernate.mdtext b/docs/hibernate.mdtext
new file mode 100644
index 0000000..f56a1b3
--- /dev/null
+++ b/docs/hibernate.mdtext
@@ -0,0 +1,94 @@
+Title: Hibernate
+<a name="Hibernate-Samplepersistence.xml"></a>
+# Sample persistence.xml
+
+For a unit called "movie-unit" using two datasources called "movieDatabase"
+and "movieDatabaseUnmanaged" the following persistence.xml would work.
+
+    <persistence version="1.0"
+           xmlns="http://java.sun.com/xml/ns/persistence"
+           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+           xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
+           http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
+
+      <persistence-unit name="movie-unit">
+        <provider>org.hibernate.ejb.HibernatePersistence</provider>
+        <jta-data-source>movieDatabase</jta-data-source>
+        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+
+        <properties>
+          <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+          <property name="hibernate.transaction.manager_lookup_class"
+                    value="org.apache.openejb.hibernate.TransactionManagerLookup"/>
+        </properties>
+      </persistence-unit>
+    </persistence>
+
+    
+Note that as of OpenEJB 3.1 you do not need to set the
+`hibernate.transaction.manager_lookup_class` as it will be set for you
+automatically and will overwrite any "org.hibernate.transaction." strategy
+class already set while leaving any custom strategy class you may have
+implemented untouched.
+
+The result is that you can leave your
+`hibernate.transaction.manager_lookup_class` property configured to your
+production environment and OpenEJB will update it just for the scope
+testing.  On the other hand if you have implemented a custom
+`org.hibernate.transaction.TransactionManagerLookup` strategy it will
+always be used and never replaced by OpenEJB.
+
+Note that if you need more functionality in this area we are always happy
+to add it.
+    
+# Not using OpenEJB in production?
+    
+If you're using OpenEJB 3.0 which does not support the dynamic switching of
+the `hibernate.transaction.manager_lookup_class` this is one way to achieve
+it.
+
+A custom implementation of Hibernate's *TransactionManagerLookup* strategy
+like the following will do the trick.  This
+"DynamicTransactionManagerLookup" class can be packed in your jar and
+deployed with your app.
+    
+    import org.hibernate.HibernateException;
+    import org.hibernate.transaction.TransactionManagerLookup;
+    import javax.transaction.TransactionManager;
+    import java.util.Properties;
+
+    public class DynamicTransactionManagerLookup implements TransactionManagerLookup {
+
+        private TransactionManagerLookup impl;
+
+        public DynamicTransactionManagerLookup() {
+            String[] strategies = {
+                    "org.apache.openejb.hibernate.TransactionManagerLookup",
+                    "org.hibernate.transaction.JBossTransactionManagerLookup"
+            };
+
+            for (String className : strategies) {
+                try {
+                    Class<?> clazz = this.getClass().getClassLoader().loadClass(className);
+                    impl = (TransactionManagerLookup) clazz.newInstance();
+                    break;
+                } catch (Exception e) {
+                }
+            }
+
+            if (impl == null) throw new IllegalStateException("No TransactionManagerLookup available");
+        }
+
+        public TransactionManager getTransactionManager(Properties properties) throws HibernateException {
+            return impl.getTransactionManager(properties);
+        }
+
+        public String getUserTransactionName() {
+            return impl.getUserTransactionName();
+        }
+    }
+
+
+Then set the Hibernate specific configuration property
+*hibernate.transaction.manager_lookup_class* to the name of the factory
+that you just created.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/initialcontext-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/initialcontext-config.mdtext b/docs/initialcontext-config.mdtext
new file mode 100644
index 0000000..e9a1bad
--- /dev/null
+++ b/docs/initialcontext-config.mdtext
@@ -0,0 +1,24 @@
+Title: InitialContext Configuration
+
+
+A InitialContext can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <JndiProvider id="myInitialContext" type="javax.naming.InitialContext">
+    </JndiProvider>
+
+Alternatively, a InitialContext can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    myInitialContext = new://JndiProvider?type=javax.naming.InitialContext
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared InitialContext a warning will be logged.  If a InitialContext is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple InitialContext declarations are allowed.
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+</table>
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/installation-drop-in-war.mdtext
----------------------------------------------------------------------
diff --git a/docs/installation-drop-in-war.mdtext b/docs/installation-drop-in-war.mdtext
new file mode 100644
index 0000000..34a3d42
--- /dev/null
+++ b/docs/installation-drop-in-war.mdtext
@@ -0,0 +1,41 @@
+Title: Installing TomEE using the drop-in .war approach
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+If you prefer, TomEE can be setup by deploying a .war file into an existing Tomcat 7.x installation, as opposed to using the all-in-one bundle. This guide provides a set of step-by-step instructions to this approach. Please note that TomEE 1.7.x does not recommend Tomcat versions less than 7.0.54. Tomcat 8 is not currently supported in the released version, but you can check out the developer branch to see progress [here](dev/source-code.html).
+
+ - Download the Apache Tomcat 7.0.55 server. <a href="http://tomcat.apache.org/download-70.cgi" target="_blank">http://tomcat.apache.org/download-70.cgi</a>
+ - Unzip the Tomcat distribution file.
+ - Update $CATALINA_HOME/conf/tomcat-users.xml to add a tomee user to allow access to the installer page.
+
+        <!-- Activate/create these lines to get access to TomEE GUI -->
+    	<role rolename="tomee-admin" />
+    	<user username="tomee" password="tomee" roles="tomee-admin" />
+
+ - Download the .war file you wish to use - either the tomee-webapp-1.7.1.war (for the webprofile installation) or tomee-webapp-plus-1.7.1.war (for the plus version).
+ - Copy and rename the .war file to $CATALINA_HOME/webapps/tomee.war (the .war filename is important).
+ - Start Tomcat.
+ - Go to the TomEE installer webapp (<a href="http://localhost:8080/tomee/">http://localhost:8080/tomee/</a>) and login with the user you added to tomcat-users.xml.
+ - Verify the values and click "Confirm".
+
+  ![alt text][1]
+ 
+ - Restart Tomcat.
+ - Your TomEE installation is now complete!
+
+
+  [1]: http://people.apache.org/~tveronezi/tomee/tomee_site/tomee_installer.png
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/installation.mdtext
----------------------------------------------------------------------
diff --git a/docs/installation.mdtext b/docs/installation.mdtext
new file mode 100644
index 0000000..609a8ee
--- /dev/null
+++ b/docs/installation.mdtext
@@ -0,0 +1,30 @@
+Title: Installation
+<a name="Installation-Installation"></a>
+# Installation
+
+Installation is easiest from an update site. In Eclipse, select Help,
+Software Updates, Find and install...
+
+!http://jrg.me.uk/openejb/install_step_1.jpg!
+
+Select 'Search for new features to install'
+
+!http://jrg.me.uk/openejb/install_step_2.jpg!
+
+Select 'New Remote site'. Enter 'OpenEJB' for the name and
+http://people.apache.org/~jgallimore/update-site/ for the URL. Click 'Ok'
+and make sure your new update site is selected. Then select 'Finish'
+
+!http://jrg.me.uk/openejb/install_step_3.jpg!
+
+Check the box to install the OpenEJB feature. Click 'Next'
+
+!http://jrg.me.uk/openejb/install_step_4.jpg!
+
+
+Read and make sure you're happy with the license agreement.
+
+Check the installation location, and change it if you wish to. Select
+'Finish'.
+
+Restarting the workbench when the installation is finished is recommended.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/installing-tomee.mdtext
----------------------------------------------------------------------
diff --git a/docs/installing-tomee.mdtext b/docs/installing-tomee.mdtext
new file mode 100644
index 0000000..948208d
--- /dev/null
+++ b/docs/installing-tomee.mdtext
@@ -0,0 +1,67 @@
+Title: Installing TomEE
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+# Downloading a Distribution Archive
+
+Download a distribution archive of the latest TomEE release from the [Downloads](downloads.html) page. 
+If you are not sure which one to use, take apache-tomee-webprofile-x.y.z.zip.
+
+If you want to try out the latest development snapshot (e.g. to test a bugfix which has not yet been released), then download an
+archive directly from the [Apache Maven Snapshots Repository][1] instead.
+
+The instructions on this page work with the webprofile distribution but apply to all TomEE distributions (webprofile, jaxrs or plus). 
+If you work with the jaxrs or plus distribution, simply replace the name where appropriate.
+
+# Unpacking the Archive
+
+Unpack the archive in any directory. The top-level directory of the unpacked archive is called apache-tomee-webprofile-x.y.z/.
+We refer to this directory as $CATALINA_HOME in the following.
+
+# Prerequisites for Running TomEE
+
+* A Java 6 or 7 runtime environment is in your PATH.
+* TCP ports 8080, 8005 and 8009 are free.
+
+# Starting TomEE
+
+To start TomEE as a background process, invoke
+
+    $CATALINA_HOME/bin/startup.sh
+
+To start TomEE in foreground, invoke
+
+    $CATALINA_HOME/bin/catalina.sh run
+
+# Log Messages
+
+When running TomEE in foreground, it will print all log messages to the console.
+
+When running TomEE in background, it will only print a couple of environment variables. The log messages go to a file
+
+    $CATALINA_HOME/logs/catalina.out
+
+# Stopping TomEE
+
+To stop TomEE, invoke
+
+    $CATALINA_HOME/bin/shutdown.sh
+
+If you started TomEE in foreground via `catalina.sh run`, it is safe to simply type `Ctrl-C`. 
+
+
+  [1]: https://repository.apache.org/content/groups/snapshots/org/apache/openejb/apache-tomee
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/java7.mdtext
----------------------------------------------------------------------
diff --git a/docs/java7.mdtext b/docs/java7.mdtext
new file mode 100644
index 0000000..1db752f
--- /dev/null
+++ b/docs/java7.mdtext
@@ -0,0 +1,36 @@
+Title: TomEE and Java 7
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+If you compile your applications on JDK7 you have to run Apache TomEE 1.0 on jdk7
+
+Configuring TomEE to use JDK7
+-------
+If you have multiple JDK installed on your system you should set JAVA_HOME in your stratup scripts.
+For example if your `JAVA_HOME` is `/usr/local/java/current` edit `catalina.sh`
+and add a line
+
+`JAVA_HOME=/usr/local/java/current/bin`
+
+Alternatively, set `JAVA_HOME` as an environment variable prior to calling `<tomee-home>/bin/startup.sh`
+
+Endorsed libraries directory
+-------
+TomEE 1.0 package comes with and "endorsed" direcotry which contains updates for core JDK6 libraries.
+If you are running JDK7 you should remove al files in this directory.
+
+TomEE 1.1  will detect JDK7 and will not load those files

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/javaagent-with-maven-surefire.mdtext
----------------------------------------------------------------------
diff --git a/docs/javaagent-with-maven-surefire.mdtext b/docs/javaagent-with-maven-surefire.mdtext
new file mode 100644
index 0000000..5429d6b
--- /dev/null
+++ b/docs/javaagent-with-maven-surefire.mdtext
@@ -0,0 +1,54 @@
+Title: JavaAgent with Maven Surefire
+<a name="JavaAgentwithMavenSurefire-Maven2"></a>
+##  Maven2
+
+In maven2 you can enable the javaagent for your tests by adding this to
+your pom.xml file:
+
+
+    <build>
+      <plugins>
+        <!-- this configures the surefire plugin to run your tests with the
+javaagent enabled -->
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-surefire-plugin</artifactId>
+          <configuration>
+    	<forkMode>pertest</forkMode>
+           
+<argLine>-javaagent:${basedir}/target/openejb-javaagent-3.0.jar</argLine>
+    	<workingDirectory>${basedir}/target</workingDirectory>
+          </configuration>
+        </plugin>
+    
+        <!-- this tells maven to copy the openejb-javaagent jar into your
+target/ directory -->
+        <!-- where surefire can see it -->
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-dependency-plugin</artifactId>
+          <executions>
+    	<execution>
+    	  <id>copy</id>
+    	  <phase>process-resources</phase>
+    	  <goals>
+    	    <goal>copy</goal>
+    	  </goals>
+    	  <configuration>
+    	    <artifactItems>
+    	      <artifactItem>
+    		<groupId>org.apache.openejb</groupId>
+    		<artifactId>openejb-javaagent</artifactId>
+    		<version>3.0</version>
+    	       
+<outputDirectory>${project.build.directory}</outputDirectory>
+    	      </artifactItem>
+    	    </artifactItems>
+    	  </configuration>
+    	</execution>
+          </executions>
+        </plugin>
+    
+      </plugins>
+    </build>
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/javaagent.mdtext
----------------------------------------------------------------------
diff --git a/docs/javaagent.mdtext b/docs/javaagent.mdtext
new file mode 100644
index 0000000..0469c98
--- /dev/null
+++ b/docs/javaagent.mdtext
@@ -0,0 +1,57 @@
+Title: JavaAgent
+
+<a name="JavaAgent-AddingaJavaAgent"></a>
+#  Adding a JavaAgent
+
+NOTE: The java agent is only required if using OpenJPA as your persistence
+provider or if using CMP.
+
+Adding a java agent is done via a vm parameter as follows:
+
+    java -javaagent:openejb-javaagent-4.6.0.jar _\[other params...](other-params....html)
+
+<a name="JavaAgent-Maven2"></a>
+##  Maven2
+
+In maven2 you can enable the javaagent for your tests by adding this to
+your pom.xml file:
+
+    <build>
+      <plugins>
+        <!-- this configures the surefire plugin to run your tests with the javaagent enabled -->
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-surefire-plugin</artifactId>
+          <configuration>
+            <forkMode>pertest</forkMode>
+            <argLine>-javaagent:${project.basedir}/target/openejb-javaagent-4.6.0.jar</argLine>
+            <workingDirectory>${project.basedir}/target</workingDirectory>
+          </configuration>
+        </plugin>
+        <!-- this tells maven to copy the openejb-javaagent jar into your target/ directory -->
+        <!-- where surefire can see it -->
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-dependency-plugin</artifactId>
+          <executions>
+            <execution>
+              <id>copy</id>
+              <phase>process-resources</phase>
+              <goals>
+                <goal>copy</goal>
+              </goals>
+              <configuration>
+                <artifactItems>
+                  <artifactItem>
+                    <groupId>org.apache.openejb</groupId>
+                    <artifactId>openejb-javaagent</artifactId>
+                    <version>4.6.0</version>
+                    <outputDirectory>${project.build.directory}</outputDirectory>
+                  </artifactItem>
+                </artifactItems>
+              </configuration>
+            </execution>
+          </executions>
+        </plugin>
+      </plugins>
+    </build>

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/javaee7-status.mdtext
----------------------------------------------------------------------
diff --git a/docs/javaee7-status.mdtext b/docs/javaee7-status.mdtext
new file mode 100644
index 0000000..bbd0504
--- /dev/null
+++ b/docs/javaee7-status.mdtext
@@ -0,0 +1,182 @@
+Title: Java EE 7 Implementation Status
+
+This page shows the current implementation status for the Java EE 7 specification compabitility of Apache Tomme 7.0.0-M1. Currently, we are working on the certification for Java EE 7.
+
+<table>
+    <tr>
+        <th></th>
+        <th>Version</th>
+        <th>JSR</th>
+        <th>TomEE</th>
+        <th>TomEE+</th>
+    </tr>
+
+    <tr>
+        <td>Java Servlets</td>
+        <td>3.1</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=340">340</a></td>
+        <td>(/)</td>
+        <td>(/)</td>
+    </tr>
+
+    <tr>
+        <td>JavaServer Pages (JSP)</td>
+        <td>2.3</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=245">245</a></td>
+        <td>(/)</td>
+        <td>(/)</td>
+    </tr>
+
+    <tr>
+        <td>Expression Language (EL)</td>
+        <td>3.0</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=341">341</a></td>
+        <td>(/)</td>
+        <td>(/)</td>
+    </tr>
+
+    <tr>
+        <td>JavaServer Faces (JSF)</td>
+        <td>2.2</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=344">344</a></td>
+        <td>(/)</td>
+        <td>(/)</td>
+    </tr>
+
+    <tr>
+        <td>Java API for Websocket</td>
+        <td>1.0</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=356">356</a></td>
+        <td>(/)</td>
+        <td>(/)</td>
+    </tr>
+
+    <tr>
+        <td>Java API for JSON Processing (JSON-P)</td>
+        <td>1.0</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=353">353</a></td>
+        <td>(/)</td>
+        <td>(/)</td>
+    </tr>
+
+    <tr>
+        <td>Batch Applications for the Java Platform</td>
+        <td>1.0</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=352">352</a></td>
+        <td></td>
+        <td>(/)</td>
+    </tr>
+
+    <tr>
+        <td>Concurrency Utilities for Java EE</td>
+        <td>1.0</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=236">236</a></td>
+        <td></td>
+        <td>(/)</td>
+    </tr>
+
+    <tr>
+        <td>Contexts and Dependency Injection (CDI)</td>
+        <td>1.1</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=346">346</a></td>
+        <td>(/)</td>
+        <td>(/)</td>
+    </tr>
+
+    <tr>
+        <td>Bean Validation</td>
+        <td>1.1</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=349">349</a></td>
+        <td>(/)</td>
+        <td>(/)</td>
+    </tr>
+
+    <tr>
+        <td>Enterprise JavaBeans (EJB)</td>
+        <td>3.2</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=345">345</a></td>
+        <td>(/)</td>
+        <td>(/)</td>
+    </tr>
+
+    <tr>
+        <td>Interceptors</td>
+        <td>1.2</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=318">318</a></td>
+        <td>(/)</td>
+        <td>(/)</td>
+    </tr>
+
+    <tr>
+        <td>Java EE Connector Architecture</td>
+        <td>1.6</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=322">322</a></td>
+        <td></td>
+        <td>1.7 not supported yet</td>
+    </tr>
+
+    <tr>
+        <td>Java Persistence API (JPA)</td>
+        <td>2.1</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=338">338</a></td>
+        <td>API 2.1 supported, default provider still 2.0.</td>
+        <td>API 2.1 supported, default provider still 2.0.</td>
+    </tr>
+
+    <tr>
+        <td>Java Messaging Service (JMS)</td>
+        <td>1.1</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=343">343</a></td>
+        <td></td>
+        <td>2.0 not supported yet.</td>
+    </tr>
+
+    <tr>
+        <td>Java Transaction API (JTA)</td>
+        <td>1.2</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=907">907</a></td>
+        <td>(/)</td>
+        <td>(/)</td>
+    </tr>
+
+    <tr>
+        <td>JavaMail API</td>
+        <td>1.5</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=919">919</a></td>
+        <td>(/)</td>
+        <td>(/)</td>
+    </tr>
+
+    <tr>
+        <td>Java API for RESTful Web Services (JAX-RS)</td>
+        <td>2.0</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=339">339</a></td>
+        <td>(/)</td>
+        <td>(/)</td>
+    </tr>
+
+    <tr>
+        <td>Java API for XML Web Services (JAX-WS)</td>
+        <td>2.2</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=224">224</a></td>
+        <td></td>
+        <td>(/)</td>
+    </tr>
+
+    <tr>
+        <td>Java Authentication Service Provider Interface for Containers (JAAS)</td>
+        <td>1.1</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=196">196</a></td>
+        <td>(/)</td>
+        <td>(/)</td>
+    </tr>
+
+    <tr>
+        <td>Java Authorization Contract for Coners (JACC)</td>
+        <td>1.5</td>
+        <td><a href="http://jcp.org/en/jsr/detail?id=115">115</a></td>
+        <td>(/)</td>
+        <td>(/)</td>
+    </tr>
+</table>
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/javamailsession-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/javamailsession-config.mdtext b/docs/javamailsession-config.mdtext
new file mode 100644
index 0000000..f4920a1
--- /dev/null
+++ b/docs/javamailsession-config.mdtext
@@ -0,0 +1,24 @@
+Title: JavaMailSession Configuration
+
+
+A JavaMailSession can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <Resource id="myJavaMailSession" type="javax.mail.Session">
+    </Resource>
+
+Alternatively, a JavaMailSession can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    myJavaMailSession = new://Resource?type=javax.mail.Session
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared JavaMailSession a warning will be logged.  If a JavaMailSession is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple JavaMailSession declarations are allowed.
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+</table>
+
+


[11/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/maven/build-mojo.mdtext
----------------------------------------------------------------------
diff --git a/docs/maven/build-mojo.mdtext b/docs/maven/build-mojo.mdtext
new file mode 100644
index 0000000..a2e02d3
--- /dev/null
+++ b/docs/maven/build-mojo.mdtext
@@ -0,0 +1,1422 @@
+<div class="section">
+<h2>tomee:build<a name="tomee:build"></a></h2>
+      
+<p><b>Full name</b>:</p>
+      
+<p>org.apache.openejb.maven:tomee-maven-plugin[:Current Version]:build</p>
+      
+<p><b>Description</b>:</p>
+      
+<div>Create but not run a TomEE.</div>
+      
+<p><b>Attributes</b>:</p>
+      
+<ul>
+        
+<li>Requires a Maven project to be executed.</li>
+        
+<li>Requires dependency resolution of artifacts in scope: <tt>runtime+system</tt>.</li>
+        
+<li>Requires dependency collection of artifacts in scope: <tt>runtime</tt>.</li>
+      </ul>
+      
+<div class="section">
+<h3>Optional Parameters<a name="Optional_Parameters"></a></h3>
+        
+<table class="bodyTable" border="0">
+          
+<tr class="a">
+            
+<th>Name</th>
+            
+<th>Type</th>
+            
+<th>Since</th>
+            
+<th>Description</th>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#apacheRepos">apacheRepos</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>snapshots</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.apache-repos</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#appDir">appDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>apps</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#apps">apps</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#args">args</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.args</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#attach">attach</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.attach</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#bin">bin</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/bin</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.bin</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#catalinaBase">catalinaBase</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/apache-tomee</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.catalina-base</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#checkStarted">checkStarted</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.check-started</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#classifier">classifier</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.classifier</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#classpaths">classpaths</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#config">config</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/conf</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.conf</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#context">context</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>rename the current artifact<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#debug">debug</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.debug</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#debugPort">debugPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>5005</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.debugPort</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#deployOpenEjbApplication">deployOpenEjbApplication</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.deploy-openejb-internal-application</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#docBases">docBases</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>for TomEE and wars only, which docBase to use for this war.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#ejbRemote">ejbRemote</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.ejb-remote</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#externalRepositories">externalRepositories</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>for TomEE and wars only, add some external repositories to
+classloader.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#forceReloadable">forceReloadable</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>force webapp to be reloadable<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.force-reloadable</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#javaagents">javaagents</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#keepServerXmlAsthis">keepServerXmlAsthis</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(Removed since 7.0.0)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.keep-server-xml</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#lib">lib</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/lib</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.lib</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#libDir">libDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>lib</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#libs">libs</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>supported formats: --&gt; groupId:artifactId:version... --&gt;
+unzip:groupId:artifactId:version... --&gt; remove:prefix (often
+prefix = artifactId)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#mainDir">mainDir</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#password">password</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.pwd</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#quickSession">quickSession</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>use a real random instead of secure random. saves few ms at
+startup.<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.quick-session</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#realm">realm</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.realm</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#removeDefaultWebapps">removeDefaultWebapps</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.remove-default-webapps</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#removeTomeeWebapp">removeTomeeWebapp</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.remove-tomee-webapps</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#simpleLog">simpleLog</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.simple-log</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#skipCurrentProject">skipCurrentProject</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.skipCurrentProject</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#skipWarResources">skipWarResources</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>when you set docBases to src/main/webapp setting it to true will
+allow hot refresh.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.skipWarResources</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#systemVariables">systemVariables</a></b></td>
+            
+<td><tt>Map</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#target">target</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeAjpPort">tomeeAjpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8009</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.ajp</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeAlreadyInstalled">tomeeAlreadyInstalled</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.exiting</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeArtifactId">tomeeArtifactId</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>apache-tomee</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.artifactId</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeClassifier">tomeeClassifier</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>webprofile</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.classifier</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeGroupId">tomeeGroupId</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>org.apache.openejb</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.groupId</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeHost">tomeeHost</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>localhost</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.host</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeHttpPort">tomeeHttpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8080</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.http</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeHttpsPort">tomeeHttpsPort</a></b></td>
+            
+<td><tt>Integer</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.https</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeShutdownCommand">tomeeShutdownCommand</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>SHUTDOWN</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.shutdown-command</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeShutdownPort">tomeeShutdownPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8005</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.shutdown</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeVersion">tomeeVersion</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>-1</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.version</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#useConsole">useConsole</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.use-console</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#useOpenEJB">useOpenEJB</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>use openejb-standalone automatically instead of TomEE<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.openejb</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#user">user</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.user</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#warFile">warFile</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/${project.build.finalName}.${project.packaging}</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#webappClasses">webappClasses</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.outputDirectory}</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappClasses</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webappDefaultConfig">webappDefaultConfig</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>forcing nice default for war development (WEB-INF/classes and web
+resources)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappDefaultConfig</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#webappDir">webappDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>webapps</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webappResources">webappResources</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/webapp</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappResources</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#webapps">webapps</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#zip">zip</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.zip</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#zipFile">zipFile</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/${project.build.finalName}.zip</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.zip-file</tt>.</td>
+          </tr>
+        </table>
+      </div>
+      
+<div class="section">
+<h3>Parameter Details<a name="Parameter_Details"></a></h3>
+        
+<p><b><a name="apacheRepos">apacheRepos</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.apache-repos</tt></li>
+          
+<li><b>Default</b>: <tt>snapshots</tt></li>
+        </ul><hr />
+<p><b><a name="appDir">appDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>apps</tt></li>
+        </ul><hr />
+<p><b><a name="apps">apps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="args">args</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.args</tt></li>
+        </ul><hr />
+<p><b><a name="attach">attach</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.attach</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="bin">bin</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.bin</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/bin</tt></li>
+        </ul><hr />
+<p><b><a name="catalinaBase">catalinaBase</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.catalina-base</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/apache-tomee</tt></li>
+        </ul><hr />
+<p><b><a name="checkStarted">checkStarted</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.check-started</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="classifier">classifier</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.classifier</tt></li>
+        </ul><hr />
+<p><b><a name="classpaths">classpaths</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="config">config</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.conf</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/conf</tt></li>
+        </ul><hr />
+<p><b><a name="context">context</a>:</b></p>
+        
+<div>rename the current artifact</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="debug">debug</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.debug</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="debugPort">debugPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.debugPort</tt></li>
+          
+<li><b>Default</b>: <tt>5005</tt></li>
+        </ul><hr />
+<p><b><a name="deployOpenEjbApplication">deployOpenEjbApplication</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.deploy-openejb-internal-application</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="docBases">docBases</a>:</b></p>
+        
+<div>for TomEE and wars only, which docBase to use for this war.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="ejbRemote">ejbRemote</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.ejb-remote</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="externalRepositories">externalRepositories</a>:</b></p>
+        
+<div>for TomEE and wars only, add some external repositories to
+classloader.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="forceReloadable">forceReloadable</a>:</b></p>
+        
+<div>force webapp to be reloadable</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.force-reloadable</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="javaagents">javaagents</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="keepServerXmlAsthis">keepServerXmlAsthis</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.keep-server-xml</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="lib">lib</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.lib</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/lib</tt></li>
+        </ul><hr />
+<p><b><a name="libDir">libDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>lib</tt></li>
+        </ul><hr />
+<p><b><a name="libs">libs</a>:</b></p>
+        
+<div>supported formats: --&gt; groupId:artifactId:version... --&gt;
+unzip:groupId:artifactId:version... --&gt; remove:prefix (often
+prefix = artifactId)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="mainDir">mainDir</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main</tt></li>
+        </ul><hr />
+<p><b><a name="password">password</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.pwd</tt></li>
+        </ul><hr />
+<p><b><a name="quickSession">quickSession</a>:</b></p>
+        
+<div>use a real random instead of secure random. saves few ms at
+startup.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.quick-session</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="realm">realm</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.realm</tt></li>
+        </ul><hr />
+<p><b><a name="removeDefaultWebapps">removeDefaultWebapps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.remove-default-webapps</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="removeTomeeWebapp">removeTomeeWebapp</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.remove-tomee-webapps</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="simpleLog">simpleLog</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.simple-log</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="skipCurrentProject">skipCurrentProject</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.skipCurrentProject</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="skipWarResources">skipWarResources</a>:</b></p>
+        
+<div>when you set docBases to src/main/webapp setting it to true will
+allow hot refresh.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.skipWarResources</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="systemVariables">systemVariables</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.Map</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="target">target</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeAjpPort">tomeeAjpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.ajp</tt></li>
+          
+<li><b>Default</b>: <tt>8009</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeAlreadyInstalled">tomeeAlreadyInstalled</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.exiting</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeArtifactId">tomeeArtifactId</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.artifactId</tt></li>
+          
+<li><b>Default</b>: <tt>apache-tomee</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeClassifier">tomeeClassifier</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.classifier</tt></li>
+          
+<li><b>Default</b>: <tt>webprofile</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeGroupId">tomeeGroupId</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.groupId</tt></li>
+          
+<li><b>Default</b>: <tt>org.apache.openejb</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHost">tomeeHost</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.host</tt></li>
+          
+<li><b>Default</b>: <tt>localhost</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHttpPort">tomeeHttpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.http</tt></li>
+          
+<li><b>Default</b>: <tt>8080</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHttpsPort">tomeeHttpsPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.Integer</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.https</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeShutdownCommand">tomeeShutdownCommand</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.shutdown-command</tt></li>
+          
+<li><b>Default</b>: <tt>SHUTDOWN</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeShutdownPort">tomeeShutdownPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.shutdown</tt></li>
+          
+<li><b>Default</b>: <tt>8005</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeVersion">tomeeVersion</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.version</tt></li>
+          
+<li><b>Default</b>: <tt>-1</tt></li>
+        </ul><hr />
+<p><b><a name="useConsole">useConsole</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.use-console</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="useOpenEJB">useOpenEJB</a>:</b></p>
+        
+<div>use openejb-standalone automatically instead of TomEE</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.openejb</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="user">user</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.user</tt></li>
+        </ul><hr />
+<p><b><a name="warFile">warFile</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/${project.build.finalName}.${project.packaging}</tt></li>
+        </ul><hr />
+<p><b><a name="webappClasses">webappClasses</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappClasses</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.outputDirectory}</tt></li>
+        </ul><hr />
+<p><b><a name="webappDefaultConfig">webappDefaultConfig</a>:</b></p>
+        
+<div>forcing nice default for war development (WEB-INF/classes and web
+resources)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappDefaultConfig</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="webappDir">webappDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>webapps</tt></li>
+        </ul><hr />
+<p><b><a name="webappResources">webappResources</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappResources</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/webapp</tt></li>
+        </ul><hr />
+<p><b><a name="webapps">webapps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="zip">zip</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.zip</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="zipFile">zipFile</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.zip-file</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/${project.build.finalName}.zip</tt></li>
+        </ul>
+      </div>
+    </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/maven/configtest-mojo.mdtext
----------------------------------------------------------------------
diff --git a/docs/maven/configtest-mojo.mdtext b/docs/maven/configtest-mojo.mdtext
new file mode 100644
index 0000000..f5402b7
--- /dev/null
+++ b/docs/maven/configtest-mojo.mdtext
@@ -0,0 +1,1324 @@
+<div class="section">
+<h2>tomee:configtest<a name="tomee:configtest"></a></h2>
+      
+<p><b>Full name</b>:</p>
+      
+<p>org.apache.openejb.maven:tomee-maven-plugin[:Current Version]:configtest</p>
+      
+<p><b>Description</b>:</p>
+      
+<div>Run configtest Tomcat command.</div>
+      
+<p><b>Attributes</b>:</p>
+      
+<ul>
+        
+<li>Requires a Maven project to be executed.</li>
+        
+<li>Requires dependency resolution of artifacts in scope: <tt>runtime+system</tt>.</li>
+        
+<li>Requires dependency collection of artifacts in scope: <tt>runtime</tt>.</li>
+      </ul>
+      
+<div class="section">
+<h3>Optional Parameters<a name="Optional_Parameters"></a></h3>
+        
+<table class="bodyTable" border="0">
+          
+<tr class="a">
+            
+<th>Name</th>
+            
+<th>Type</th>
+            
+<th>Since</th>
+            
+<th>Description</th>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#apacheRepos">apacheRepos</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>snapshots</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.apache-repos</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#appDir">appDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>apps</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#apps">apps</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#args">args</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.args</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#bin">bin</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/bin</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.bin</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#catalinaBase">catalinaBase</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/apache-tomee</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.catalina-base</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#checkStarted">checkStarted</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.check-started</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#classpaths">classpaths</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#config">config</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/conf</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.conf</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#context">context</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>rename the current artifact<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#debug">debug</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.debug</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#debugPort">debugPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>5005</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.debugPort</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#deployOpenEjbApplication">deployOpenEjbApplication</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.deploy-openejb-internal-application</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#docBases">docBases</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>for TomEE and wars only, which docBase to use for this war.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#ejbRemote">ejbRemote</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.ejb-remote</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#externalRepositories">externalRepositories</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>for TomEE and wars only, add some external repositories to
+classloader.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#forceReloadable">forceReloadable</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>force webapp to be reloadable<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.force-reloadable</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#javaagents">javaagents</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#keepServerXmlAsthis">keepServerXmlAsthis</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(Removed since 7.0.0)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.keep-server-xml</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#lib">lib</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/lib</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.lib</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#libDir">libDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>lib</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#libs">libs</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>supported formats: --&gt; groupId:artifactId:version... --&gt;
+unzip:groupId:artifactId:version... --&gt; remove:prefix (often
+prefix = artifactId)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#mainDir">mainDir</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#password">password</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.pwd</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#quickSession">quickSession</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>use a real random instead of secure random. saves few ms at
+startup.<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.quick-session</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#realm">realm</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.realm</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#removeDefaultWebapps">removeDefaultWebapps</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.remove-default-webapps</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#removeTomeeWebapp">removeTomeeWebapp</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.remove-tomee-webapps</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#simpleLog">simpleLog</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.simple-log</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#skipCurrentProject">skipCurrentProject</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.skipCurrentProject</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#skipWarResources">skipWarResources</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>when you set docBases to src/main/webapp setting it to true will
+allow hot refresh.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.skipWarResources</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#systemVariables">systemVariables</a></b></td>
+            
+<td><tt>Map</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#target">target</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeAjpPort">tomeeAjpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8009</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.ajp</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeAlreadyInstalled">tomeeAlreadyInstalled</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.exiting</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeArtifactId">tomeeArtifactId</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>apache-tomee</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.artifactId</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeClassifier">tomeeClassifier</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>webprofile</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.classifier</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeGroupId">tomeeGroupId</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>org.apache.openejb</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.groupId</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeHost">tomeeHost</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>localhost</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.host</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeHttpPort">tomeeHttpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8080</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.http</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeHttpsPort">tomeeHttpsPort</a></b></td>
+            
+<td><tt>Integer</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.https</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeShutdownCommand">tomeeShutdownCommand</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>SHUTDOWN</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.shutdown-command</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeShutdownPort">tomeeShutdownPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8005</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.shutdown</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeVersion">tomeeVersion</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>-1</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.version</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#useConsole">useConsole</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.use-console</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#useOpenEJB">useOpenEJB</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>use openejb-standalone automatically instead of TomEE<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.openejb</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#user">user</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.user</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#warFile">warFile</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/${project.build.finalName}.${project.packaging}</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#webappClasses">webappClasses</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.outputDirectory}</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappClasses</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webappDefaultConfig">webappDefaultConfig</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>forcing nice default for war development (WEB-INF/classes and web
+resources)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappDefaultConfig</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#webappDir">webappDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>webapps</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webappResources">webappResources</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/webapp</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappResources</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#webapps">webapps</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+        </table>
+      </div>
+      
+<div class="section">
+<h3>Parameter Details<a name="Parameter_Details"></a></h3>
+        
+<p><b><a name="apacheRepos">apacheRepos</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.apache-repos</tt></li>
+          
+<li><b>Default</b>: <tt>snapshots</tt></li>
+        </ul><hr />
+<p><b><a name="appDir">appDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>apps</tt></li>
+        </ul><hr />
+<p><b><a name="apps">apps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="args">args</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.args</tt></li>
+        </ul><hr />
+<p><b><a name="bin">bin</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.bin</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/bin</tt></li>
+        </ul><hr />
+<p><b><a name="catalinaBase">catalinaBase</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.catalina-base</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/apache-tomee</tt></li>
+        </ul><hr />
+<p><b><a name="checkStarted">checkStarted</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.check-started</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="classpaths">classpaths</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="config">config</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.conf</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/conf</tt></li>
+        </ul><hr />
+<p><b><a name="context">context</a>:</b></p>
+        
+<div>rename the current artifact</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="debug">debug</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.debug</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="debugPort">debugPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.debugPort</tt></li>
+          
+<li><b>Default</b>: <tt>5005</tt></li>
+        </ul><hr />
+<p><b><a name="deployOpenEjbApplication">deployOpenEjbApplication</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.deploy-openejb-internal-application</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="docBases">docBases</a>:</b></p>
+        
+<div>for TomEE and wars only, which docBase to use for this war.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="ejbRemote">ejbRemote</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.ejb-remote</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="externalRepositories">externalRepositories</a>:</b></p>
+        
+<div>for TomEE and wars only, add some external repositories to
+classloader.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="forceReloadable">forceReloadable</a>:</b></p>
+        
+<div>force webapp to be reloadable</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.force-reloadable</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="javaagents">javaagents</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="keepServerXmlAsthis">keepServerXmlAsthis</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.keep-server-xml</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="lib">lib</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.lib</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/lib</tt></li>
+        </ul><hr />
+<p><b><a name="libDir">libDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>lib</tt></li>
+        </ul><hr />
+<p><b><a name="libs">libs</a>:</b></p>
+        
+<div>supported formats: --&gt; groupId:artifactId:version... --&gt;
+unzip:groupId:artifactId:version... --&gt; remove:prefix (often
+prefix = artifactId)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="mainDir">mainDir</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main</tt></li>
+        </ul><hr />
+<p><b><a name="password">password</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.pwd</tt></li>
+        </ul><hr />
+<p><b><a name="quickSession">quickSession</a>:</b></p>
+        
+<div>use a real random instead of secure random. saves few ms at
+startup.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.quick-session</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="realm">realm</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.realm</tt></li>
+        </ul><hr />
+<p><b><a name="removeDefaultWebapps">removeDefaultWebapps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.remove-default-webapps</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="removeTomeeWebapp">removeTomeeWebapp</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.remove-tomee-webapps</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="simpleLog">simpleLog</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.simple-log</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="skipCurrentProject">skipCurrentProject</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.skipCurrentProject</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="skipWarResources">skipWarResources</a>:</b></p>
+        
+<div>when you set docBases to src/main/webapp setting it to true will
+allow hot refresh.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.skipWarResources</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="systemVariables">systemVariables</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.Map</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="target">target</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeAjpPort">tomeeAjpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.ajp</tt></li>
+          
+<li><b>Default</b>: <tt>8009</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeAlreadyInstalled">tomeeAlreadyInstalled</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.exiting</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeArtifactId">tomeeArtifactId</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.artifactId</tt></li>
+          
+<li><b>Default</b>: <tt>apache-tomee</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeClassifier">tomeeClassifier</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.classifier</tt></li>
+          
+<li><b>Default</b>: <tt>webprofile</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeGroupId">tomeeGroupId</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.groupId</tt></li>
+          
+<li><b>Default</b>: <tt>org.apache.openejb</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHost">tomeeHost</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.host</tt></li>
+          
+<li><b>Default</b>: <tt>localhost</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHttpPort">tomeeHttpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.http</tt></li>
+          
+<li><b>Default</b>: <tt>8080</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHttpsPort">tomeeHttpsPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.Integer</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.https</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeShutdownCommand">tomeeShutdownCommand</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.shutdown-command</tt></li>
+          
+<li><b>Default</b>: <tt>SHUTDOWN</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeShutdownPort">tomeeShutdownPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.shutdown</tt></li>
+          
+<li><b>Default</b>: <tt>8005</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeVersion">tomeeVersion</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.version</tt></li>
+          
+<li><b>Default</b>: <tt>-1</tt></li>
+        </ul><hr />
+<p><b><a name="useConsole">useConsole</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.use-console</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="useOpenEJB">useOpenEJB</a>:</b></p>
+        
+<div>use openejb-standalone automatically instead of TomEE</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.openejb</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="user">user</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.user</tt></li>
+        </ul><hr />
+<p><b><a name="warFile">warFile</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/${project.build.finalName}.${project.packaging}</tt></li>
+        </ul><hr />
+<p><b><a name="webappClasses">webappClasses</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappClasses</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.outputDirectory}</tt></li>
+        </ul><hr />
+<p><b><a name="webappDefaultConfig">webappDefaultConfig</a>:</b></p>
+        
+<div>forcing nice default for war development (WEB-INF/classes and web
+resources)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappDefaultConfig</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="webappDir">webappDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>webapps</tt></li>
+        </ul><hr />
+<p><b><a name="webappResources">webappResources</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappResources</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/webapp</tt></li>
+        </ul><hr />
+<p><b><a name="webapps">webapps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul>
+      </div>
+    </div>
\ No newline at end of file


[08/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/maven/start-mojo.mdtext
----------------------------------------------------------------------
diff --git a/docs/maven/start-mojo.mdtext b/docs/maven/start-mojo.mdtext
new file mode 100644
index 0000000..0d9fac8
--- /dev/null
+++ b/docs/maven/start-mojo.mdtext
@@ -0,0 +1,1391 @@
+<div class="section">
+<h2>tomee:start<a name="tomee:start"></a></h2>
+      
+<p><b>Full name</b>:</p>
+      
+<p>org.apache.openejb.maven:tomee-maven-plugin[:Current Version]:start</p>
+      
+<p><b>Description</b>:</p>
+      
+<div>Start and forget TomEE.</div>
+      
+<p><b>Attributes</b>:</p>
+      
+<ul>
+        
+<li>Requires a Maven project to be executed.</li>
+        
+<li>Requires dependency resolution of artifacts in scope: <tt>runtime+system</tt>.</li>
+        
+<li>Requires dependency collection of artifacts in scope: <tt>runtime</tt>.</li>
+      </ul>
+      
+<div class="section">
+<h3>Optional Parameters<a name="Optional_Parameters"></a></h3>
+        
+<table class="bodyTable" border="0">
+          
+<tr class="a">
+            
+<th>Name</th>
+            
+<th>Type</th>
+            
+<th>Since</th>
+            
+<th>Description</th>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#apacheRepos">apacheRepos</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>snapshots</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.apache-repos</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#appDir">appDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>apps</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#apps">apps</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#args">args</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.args</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#bin">bin</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/bin</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.bin</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#catalinaBase">catalinaBase</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/apache-tomee</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.catalina-base</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#checkStarted">checkStarted</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.check-started</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#classpaths">classpaths</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#config">config</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/conf</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.conf</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#context">context</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>rename the current artifact<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#debug">debug</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.debug</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#debugPort">debugPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>5005</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.debugPort</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#deployOpenEjbApplication">deployOpenEjbApplication</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.deploy-openejb-internal-application</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#docBases">docBases</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>for TomEE and wars only, which docBase to use for this war.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#ejbRemote">ejbRemote</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.ejb-remote</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#externalRepositories">externalRepositories</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>for TomEE and wars only, add some external repositories to
+classloader.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#forceReloadable">forceReloadable</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>force webapp to be reloadable<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.force-reloadable</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#javaagents">javaagents</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#keepServerXmlAsthis">keepServerXmlAsthis</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(Removed since 7.0.0)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.keep-server-xml</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#lib">lib</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/lib</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.lib</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#libDir">libDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>lib</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#libs">libs</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>supported formats: --&gt; groupId:artifactId:version... --&gt;
+unzip:groupId:artifactId:version... --&gt; remove:prefix (often
+prefix = artifactId)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#mainDir">mainDir</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#password">password</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.pwd</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#quickSession">quickSession</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>use a real random instead of secure random. saves few ms at
+startup.<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.quick-session</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#realm">realm</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.realm</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#reloadOnUpdate">reloadOnUpdate</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.reload-on-update</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#removeDefaultWebapps">removeDefaultWebapps</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.remove-default-webapps</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#removeTomeeWebapp">removeTomeeWebapp</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.remove-tomee-webapps</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#simpleLog">simpleLog</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.simple-log</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#skipCurrentProject">skipCurrentProject</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.skipCurrentProject</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#skipWarResources">skipWarResources</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>when you set docBases to src/main/webapp setting it to true will
+allow hot refresh.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.skipWarResources</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#synchronization">synchronization</a></b></td>
+            
+<td><tt>Synchronization</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#synchronizations">synchronizations</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#systemVariables">systemVariables</a></b></td>
+            
+<td><tt>Map</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#target">target</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeAjpPort">tomeeAjpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8009</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.ajp</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeAlreadyInstalled">tomeeAlreadyInstalled</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.exiting</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeArtifactId">tomeeArtifactId</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>apache-tomee</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.artifactId</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeClassifier">tomeeClassifier</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>webprofile</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.classifier</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeGroupId">tomeeGroupId</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>org.apache.openejb</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.groupId</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeHost">tomeeHost</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>localhost</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.host</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeHttpPort">tomeeHttpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8080</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.http</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeHttpsPort">tomeeHttpsPort</a></b></td>
+            
+<td><tt>Integer</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.https</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeShutdownCommand">tomeeShutdownCommand</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>SHUTDOWN</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.shutdown-command</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeShutdownPort">tomeeShutdownPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8005</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.shutdown</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeVersion">tomeeVersion</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>-1</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.version</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#useConsole">useConsole</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.use-console</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#useOpenEJB">useOpenEJB</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>use openejb-standalone automatically instead of TomEE<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.openejb</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#user">user</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.user</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#warFile">warFile</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/${project.build.finalName}.${project.packaging}</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webappClasses">webappClasses</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.outputDirectory}</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappClasses</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#webappDefaultConfig">webappDefaultConfig</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>forcing nice default for war development (WEB-INF/classes and web
+resources)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappDefaultConfig</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webappDir">webappDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>webapps</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#webappResources">webappResources</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/webapp</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappResources</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webapps">webapps</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+        </table>
+      </div>
+      
+<div class="section">
+<h3>Parameter Details<a name="Parameter_Details"></a></h3>
+        
+<p><b><a name="apacheRepos">apacheRepos</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.apache-repos</tt></li>
+          
+<li><b>Default</b>: <tt>snapshots</tt></li>
+        </ul><hr />
+<p><b><a name="appDir">appDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>apps</tt></li>
+        </ul><hr />
+<p><b><a name="apps">apps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="args">args</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.args</tt></li>
+        </ul><hr />
+<p><b><a name="bin">bin</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.bin</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/bin</tt></li>
+        </ul><hr />
+<p><b><a name="catalinaBase">catalinaBase</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.catalina-base</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/apache-tomee</tt></li>
+        </ul><hr />
+<p><b><a name="checkStarted">checkStarted</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.check-started</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="classpaths">classpaths</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="config">config</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.conf</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/conf</tt></li>
+        </ul><hr />
+<p><b><a name="context">context</a>:</b></p>
+        
+<div>rename the current artifact</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="debug">debug</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.debug</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="debugPort">debugPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.debugPort</tt></li>
+          
+<li><b>Default</b>: <tt>5005</tt></li>
+        </ul><hr />
+<p><b><a name="deployOpenEjbApplication">deployOpenEjbApplication</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.deploy-openejb-internal-application</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="docBases">docBases</a>:</b></p>
+        
+<div>for TomEE and wars only, which docBase to use for this war.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="ejbRemote">ejbRemote</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.ejb-remote</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="externalRepositories">externalRepositories</a>:</b></p>
+        
+<div>for TomEE and wars only, add some external repositories to
+classloader.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="forceReloadable">forceReloadable</a>:</b></p>
+        
+<div>force webapp to be reloadable</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.force-reloadable</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="javaagents">javaagents</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="keepServerXmlAsthis">keepServerXmlAsthis</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.keep-server-xml</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="lib">lib</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.lib</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/lib</tt></li>
+        </ul><hr />
+<p><b><a name="libDir">libDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>lib</tt></li>
+        </ul><hr />
+<p><b><a name="libs">libs</a>:</b></p>
+        
+<div>supported formats: --&gt; groupId:artifactId:version... --&gt;
+unzip:groupId:artifactId:version... --&gt; remove:prefix (often
+prefix = artifactId)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="mainDir">mainDir</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main</tt></li>
+        </ul><hr />
+<p><b><a name="password">password</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.pwd</tt></li>
+        </ul><hr />
+<p><b><a name="quickSession">quickSession</a>:</b></p>
+        
+<div>use a real random instead of secure random. saves few ms at
+startup.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.quick-session</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="realm">realm</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.realm</tt></li>
+        </ul><hr />
+<p><b><a name="reloadOnUpdate">reloadOnUpdate</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.reload-on-update</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="removeDefaultWebapps">removeDefaultWebapps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.remove-default-webapps</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="removeTomeeWebapp">removeTomeeWebapp</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.remove-tomee-webapps</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="simpleLog">simpleLog</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.simple-log</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="skipCurrentProject">skipCurrentProject</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.skipCurrentProject</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="skipWarResources">skipWarResources</a>:</b></p>
+        
+<div>when you set docBases to src/main/webapp setting it to true will
+allow hot refresh.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.skipWarResources</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="synchronization">synchronization</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>org.apache.openejb.maven.plugin.Synchronization</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="synchronizations">synchronizations</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="systemVariables">systemVariables</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.Map</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="target">target</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeAjpPort">tomeeAjpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.ajp</tt></li>
+          
+<li><b>Default</b>: <tt>8009</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeAlreadyInstalled">tomeeAlreadyInstalled</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.exiting</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeArtifactId">tomeeArtifactId</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.artifactId</tt></li>
+          
+<li><b>Default</b>: <tt>apache-tomee</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeClassifier">tomeeClassifier</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.classifier</tt></li>
+          
+<li><b>Default</b>: <tt>webprofile</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeGroupId">tomeeGroupId</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.groupId</tt></li>
+          
+<li><b>Default</b>: <tt>org.apache.openejb</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHost">tomeeHost</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.host</tt></li>
+          
+<li><b>Default</b>: <tt>localhost</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHttpPort">tomeeHttpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.http</tt></li>
+          
+<li><b>Default</b>: <tt>8080</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHttpsPort">tomeeHttpsPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.Integer</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.https</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeShutdownCommand">tomeeShutdownCommand</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.shutdown-command</tt></li>
+          
+<li><b>Default</b>: <tt>SHUTDOWN</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeShutdownPort">tomeeShutdownPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.shutdown</tt></li>
+          
+<li><b>Default</b>: <tt>8005</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeVersion">tomeeVersion</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.version</tt></li>
+          
+<li><b>Default</b>: <tt>-1</tt></li>
+        </ul><hr />
+<p><b><a name="useConsole">useConsole</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.use-console</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="useOpenEJB">useOpenEJB</a>:</b></p>
+        
+<div>use openejb-standalone automatically instead of TomEE</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.openejb</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="user">user</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.user</tt></li>
+        </ul><hr />
+<p><b><a name="warFile">warFile</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/${project.build.finalName}.${project.packaging}</tt></li>
+        </ul><hr />
+<p><b><a name="webappClasses">webappClasses</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappClasses</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.outputDirectory}</tt></li>
+        </ul><hr />
+<p><b><a name="webappDefaultConfig">webappDefaultConfig</a>:</b></p>
+        
+<div>forcing nice default for war development (WEB-INF/classes and web
+resources)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappDefaultConfig</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="webappDir">webappDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>webapps</tt></li>
+        </ul><hr />
+<p><b><a name="webappResources">webappResources</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappResources</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/webapp</tt></li>
+        </ul><hr />
+<p><b><a name="webapps">webapps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul>
+      </div>
+    </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/maven/stop-mojo.mdtext
----------------------------------------------------------------------
diff --git a/docs/maven/stop-mojo.mdtext b/docs/maven/stop-mojo.mdtext
new file mode 100644
index 0000000..2df7721
--- /dev/null
+++ b/docs/maven/stop-mojo.mdtext
@@ -0,0 +1,1324 @@
+<div class="section">
+<h2>tomee:stop<a name="tomee:stop"></a></h2>
+      
+<p><b>Full name</b>:</p>
+      
+<p>org.apache.openejb.maven:tomee-maven-plugin[:Current Version]:stop</p>
+      
+<p><b>Description</b>:</p>
+      
+<div>Stop a TomEE started with start command.</div>
+      
+<p><b>Attributes</b>:</p>
+      
+<ul>
+        
+<li>Requires a Maven project to be executed.</li>
+        
+<li>Requires dependency resolution of artifacts in scope: <tt>runtime+system</tt>.</li>
+        
+<li>Requires dependency collection of artifacts in scope: <tt>runtime</tt>.</li>
+      </ul>
+      
+<div class="section">
+<h3>Optional Parameters<a name="Optional_Parameters"></a></h3>
+        
+<table class="bodyTable" border="0">
+          
+<tr class="a">
+            
+<th>Name</th>
+            
+<th>Type</th>
+            
+<th>Since</th>
+            
+<th>Description</th>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#apacheRepos">apacheRepos</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>snapshots</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.apache-repos</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#appDir">appDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>apps</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#apps">apps</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#args">args</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.args</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#bin">bin</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/bin</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.bin</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#catalinaBase">catalinaBase</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/apache-tomee</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.catalina-base</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#checkStarted">checkStarted</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.check-started</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#classpaths">classpaths</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#config">config</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/conf</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.conf</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#context">context</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>rename the current artifact<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#debug">debug</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.debug</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#debugPort">debugPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>5005</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.debugPort</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#deployOpenEjbApplication">deployOpenEjbApplication</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.deploy-openejb-internal-application</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#docBases">docBases</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>for TomEE and wars only, which docBase to use for this war.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#ejbRemote">ejbRemote</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.ejb-remote</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#externalRepositories">externalRepositories</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>for TomEE and wars only, add some external repositories to
+classloader.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#forceReloadable">forceReloadable</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>force webapp to be reloadable<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.force-reloadable</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#javaagents">javaagents</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#keepServerXmlAsthis">keepServerXmlAsthis</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(Removed since 7.0.0)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.keep-server-xml</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#lib">lib</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/lib</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.lib</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#libDir">libDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>lib</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#libs">libs</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>supported formats: --&gt; groupId:artifactId:version... --&gt;
+unzip:groupId:artifactId:version... --&gt; remove:prefix (often
+prefix = artifactId)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#mainDir">mainDir</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#password">password</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.pwd</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#quickSession">quickSession</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>use a real random instead of secure random. saves few ms at
+startup.<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.quick-session</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#realm">realm</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.realm</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#removeDefaultWebapps">removeDefaultWebapps</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.remove-default-webapps</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#removeTomeeWebapp">removeTomeeWebapp</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.remove-tomee-webapps</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#simpleLog">simpleLog</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.simple-log</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#skipCurrentProject">skipCurrentProject</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.skipCurrentProject</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#skipWarResources">skipWarResources</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>when you set docBases to src/main/webapp setting it to true will
+allow hot refresh.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.skipWarResources</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#systemVariables">systemVariables</a></b></td>
+            
+<td><tt>Map</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#target">target</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeAjpPort">tomeeAjpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8009</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.ajp</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeAlreadyInstalled">tomeeAlreadyInstalled</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.exiting</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeArtifactId">tomeeArtifactId</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>apache-tomee</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.artifactId</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeClassifier">tomeeClassifier</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>webprofile</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.classifier</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeGroupId">tomeeGroupId</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>org.apache.openejb</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.groupId</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeHost">tomeeHost</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>localhost</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.host</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeHttpPort">tomeeHttpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8080</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.http</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeHttpsPort">tomeeHttpsPort</a></b></td>
+            
+<td><tt>Integer</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.https</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeShutdownCommand">tomeeShutdownCommand</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>SHUTDOWN</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.shutdown-command</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeShutdownPort">tomeeShutdownPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8005</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.shutdown</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeVersion">tomeeVersion</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>-1</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.version</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#useConsole">useConsole</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.use-console</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#useOpenEJB">useOpenEJB</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>use openejb-standalone automatically instead of TomEE<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.openejb</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#user">user</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.user</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#warFile">warFile</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/${project.build.finalName}.${project.packaging}</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#webappClasses">webappClasses</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.outputDirectory}</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappClasses</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webappDefaultConfig">webappDefaultConfig</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>forcing nice default for war development (WEB-INF/classes and web
+resources)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappDefaultConfig</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#webappDir">webappDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>webapps</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webappResources">webappResources</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/webapp</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappResources</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#webapps">webapps</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+        </table>
+      </div>
+      
+<div class="section">
+<h3>Parameter Details<a name="Parameter_Details"></a></h3>
+        
+<p><b><a name="apacheRepos">apacheRepos</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.apache-repos</tt></li>
+          
+<li><b>Default</b>: <tt>snapshots</tt></li>
+        </ul><hr />
+<p><b><a name="appDir">appDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>apps</tt></li>
+        </ul><hr />
+<p><b><a name="apps">apps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="args">args</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.args</tt></li>
+        </ul><hr />
+<p><b><a name="bin">bin</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.bin</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/bin</tt></li>
+        </ul><hr />
+<p><b><a name="catalinaBase">catalinaBase</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.catalina-base</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/apache-tomee</tt></li>
+        </ul><hr />
+<p><b><a name="checkStarted">checkStarted</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.check-started</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="classpaths">classpaths</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="config">config</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.conf</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/conf</tt></li>
+        </ul><hr />
+<p><b><a name="context">context</a>:</b></p>
+        
+<div>rename the current artifact</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="debug">debug</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.debug</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="debugPort">debugPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.debugPort</tt></li>
+          
+<li><b>Default</b>: <tt>5005</tt></li>
+        </ul><hr />
+<p><b><a name="deployOpenEjbApplication">deployOpenEjbApplication</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.deploy-openejb-internal-application</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="docBases">docBases</a>:</b></p>
+        
+<div>for TomEE and wars only, which docBase to use for this war.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="ejbRemote">ejbRemote</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.ejb-remote</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="externalRepositories">externalRepositories</a>:</b></p>
+        
+<div>for TomEE and wars only, add some external repositories to
+classloader.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="forceReloadable">forceReloadable</a>:</b></p>
+        
+<div>force webapp to be reloadable</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.force-reloadable</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="javaagents">javaagents</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="keepServerXmlAsthis">keepServerXmlAsthis</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.keep-server-xml</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="lib">lib</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.lib</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/lib</tt></li>
+        </ul><hr />
+<p><b><a name="libDir">libDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>lib</tt></li>
+        </ul><hr />
+<p><b><a name="libs">libs</a>:</b></p>
+        
+<div>supported formats: --&gt; groupId:artifactId:version... --&gt;
+unzip:groupId:artifactId:version... --&gt; remove:prefix (often
+prefix = artifactId)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="mainDir">mainDir</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main</tt></li>
+        </ul><hr />
+<p><b><a name="password">password</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.pwd</tt></li>
+        </ul><hr />
+<p><b><a name="quickSession">quickSession</a>:</b></p>
+        
+<div>use a real random instead of secure random. saves few ms at
+startup.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.quick-session</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="realm">realm</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.realm</tt></li>
+        </ul><hr />
+<p><b><a name="removeDefaultWebapps">removeDefaultWebapps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.remove-default-webapps</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="removeTomeeWebapp">removeTomeeWebapp</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.remove-tomee-webapps</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="simpleLog">simpleLog</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.simple-log</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="skipCurrentProject">skipCurrentProject</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.skipCurrentProject</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="skipWarResources">skipWarResources</a>:</b></p>
+        
+<div>when you set docBases to src/main/webapp setting it to true will
+allow hot refresh.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.skipWarResources</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="systemVariables">systemVariables</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.Map</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="target">target</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeAjpPort">tomeeAjpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.ajp</tt></li>
+          
+<li><b>Default</b>: <tt>8009</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeAlreadyInstalled">tomeeAlreadyInstalled</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.exiting</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeArtifactId">tomeeArtifactId</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.artifactId</tt></li>
+          
+<li><b>Default</b>: <tt>apache-tomee</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeClassifier">tomeeClassifier</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.classifier</tt></li>
+          
+<li><b>Default</b>: <tt>webprofile</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeGroupId">tomeeGroupId</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.groupId</tt></li>
+          
+<li><b>Default</b>: <tt>org.apache.openejb</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHost">tomeeHost</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.host</tt></li>
+          
+<li><b>Default</b>: <tt>localhost</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHttpPort">tomeeHttpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.http</tt></li>
+          
+<li><b>Default</b>: <tt>8080</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHttpsPort">tomeeHttpsPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.Integer</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.https</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeShutdownCommand">tomeeShutdownCommand</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.shutdown-command</tt></li>
+          
+<li><b>Default</b>: <tt>SHUTDOWN</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeShutdownPort">tomeeShutdownPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.shutdown</tt></li>
+          
+<li><b>Default</b>: <tt>8005</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeVersion">tomeeVersion</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.version</tt></li>
+          
+<li><b>Default</b>: <tt>-1</tt></li>
+        </ul><hr />
+<p><b><a name="useConsole">useConsole</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.use-console</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="useOpenEJB">useOpenEJB</a>:</b></p>
+        
+<div>use openejb-standalone automatically instead of TomEE</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.openejb</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="user">user</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.user</tt></li>
+        </ul><hr />
+<p><b><a name="warFile">warFile</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/${project.build.finalName}.${project.packaging}</tt></li>
+        </ul><hr />
+<p><b><a name="webappClasses">webappClasses</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappClasses</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.outputDirectory}</tt></li>
+        </ul><hr />
+<p><b><a name="webappDefaultConfig">webappDefaultConfig</a>:</b></p>
+        
+<div>forcing nice default for war development (WEB-INF/classes and web
+resources)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappDefaultConfig</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="webappDir">webappDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>webapps</tt></li>
+        </ul><hr />
+<p><b><a name="webappResources">webappResources</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappResources</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/webapp</tt></li>
+        </ul><hr />
+<p><b><a name="webapps">webapps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul>
+      </div>
+    </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/maven/undeploy-mojo.mdtext
----------------------------------------------------------------------
diff --git a/docs/maven/undeploy-mojo.mdtext b/docs/maven/undeploy-mojo.mdtext
new file mode 100644
index 0000000..f73ec20
--- /dev/null
+++ b/docs/maven/undeploy-mojo.mdtext
@@ -0,0 +1,205 @@
+<div class="section">
+<h2>tomee:undeploy<a name="tomee:undeploy"></a></h2>
+      
+<p><b>Full name</b>:</p>
+      
+<p>org.apache.openejb.maven:tomee-maven-plugin[:Current Version]:undeploy</p>
+      
+<p><b>Description</b>:</p>
+      
+<div>Simply undeploy an application in a running TomEE</div>
+      
+<p><b>Attributes</b>:</p>
+      
+<ul>
+        
+<li>Requires a Maven project to be executed.</li>
+        
+<li>Requires dependency resolution of artifacts in scope: <tt>runtime</tt>.</li>
+        
+<li>Requires dependency collection of artifacts in scope: <tt>runtime</tt>.</li>
+      </ul>
+      
+<div class="section">
+<h3>Required Parameters<a name="Required_Parameters"></a></h3>
+        
+<table class="bodyTable" border="0">
+          
+<tr class="a">
+            
+<th>Name</th>
+            
+<th>Type</th>
+            
+<th>Since</th>
+            
+<th>Description</th>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#path">path</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.archive</tt>.</td>
+          </tr>
+        </table>
+      </div>
+      
+<div class="section">
+<h3>Optional Parameters<a name="Optional_Parameters"></a></h3>
+        
+<table class="bodyTable" border="0">
+          
+<tr class="a">
+            
+<th>Name</th>
+            
+<th>Type</th>
+            
+<th>Since</th>
+            
+<th>Description</th>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#password">password</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.pwd</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#realm">realm</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.realm</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeHost">tomeeHost</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>localhost</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.host</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeHttpPort">tomeeHttpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8080</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.http</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#user">user</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.user</tt>.</td>
+          </tr>
+        </table>
+      </div>
+      
+<div class="section">
+<h3>Parameter Details<a name="Parameter_Details"></a></h3>
+        
+<p><b><a name="password">password</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.pwd</tt></li>
+        </ul><hr />
+<p><b><a name="path">path</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>Yes</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.archive</tt></li>
+        </ul><hr />
+<p><b><a name="realm">realm</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.realm</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHost">tomeeHost</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.host</tt></li>
+          
+<li><b>Default</b>: <tt>localhost</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHttpPort">tomeeHttpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.http</tt></li>
+          
+<li><b>Default</b>: <tt>8080</tt></li>
+        </ul><hr />
+<p><b><a name="user">user</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.user</tt></li>
+        </ul>
+      </div>
+    </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/messagedrivencontainer-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/messagedrivencontainer-config.mdtext b/docs/messagedrivencontainer-config.mdtext
new file mode 100644
index 0000000..4ebe454
--- /dev/null
+++ b/docs/messagedrivencontainer-config.mdtext
@@ -0,0 +1,65 @@
+Title: MessageDrivenContainer Configuration
+
+
+A MessageDrivenContainer can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <Container id="myMessageDrivenContainer" type="MESSAGE">
+        activationSpecClass = org.apache.activemq.ra.ActiveMQActivationSpec
+        instanceLimit = 10
+        messageListenerInterface = javax.jms.MessageListener
+        resourceAdapter = Default JMS Resource Adapter
+    </Container>
+
+Alternatively, a MessageDrivenContainer can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    myMessageDrivenContainer = new://Container?type=MESSAGE
+    myMessageDrivenContainer.activationSpecClass = org.apache.activemq.ra.ActiveMQActivationSpec
+    myMessageDrivenContainer.instanceLimit = 10
+    myMessageDrivenContainer.messageListenerInterface = javax.jms.MessageListener
+    myMessageDrivenContainer.resourceAdapter = Default JMS Resource Adapter
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared MessageDrivenContainer a warning will be logged.  If a MessageDrivenContainer is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple MessageDrivenContainer declarations are allowed.
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+<tr>
+  <td>activationSpecClass</td>
+  <td>String</td>
+  <td>org.apache.activemq.ra.ActiveMQActivationSpec</td>
+  <td>
+Specifies the activation spec class
+</td>
+</tr>
+<tr>
+  <td>instanceLimit</td>
+  <td>int</td>
+  <td>10</td>
+  <td>
+Specifies the maximum number of bean instances that are
+allowed to exist for each MDB deployment.
+</td>
+</tr>
+<tr>
+  <td>messageListenerInterface</td>
+  <td>String</td>
+  <td>javax.jms.MessageListener</td>
+  <td>
+Specifies the message listener interface handled by this container
+</td>
+</tr>
+<tr>
+  <td>resourceAdapter</td>
+  <td>String</td>
+  <td>Default&nbsp;JMS&nbsp;Resource&nbsp;Adapter</td>
+  <td>
+The resource adapter delivers messages to the container
+</td>
+</tr>
+</table>
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/multicast-discovery.mdtext
----------------------------------------------------------------------
diff --git a/docs/multicast-discovery.mdtext b/docs/multicast-discovery.mdtext
new file mode 100644
index 0000000..3257b59
--- /dev/null
+++ b/docs/multicast-discovery.mdtext
@@ -0,0 +1,79 @@
+Title: Multicast (UDP) Discovery
+
+Multicast is the preferred way to broadcast the heartbeat on the network. 
+The simple technique of broadcasting a non-changing service URI on the
+network has specific advantages to multicast.  The URI itself is
+essentially stateless and there is no "i'm alive" URI or an "i'm dead" URI.
+
+In this way the issues with UDP being unordered and unreliable melt away as
+state is no longer a concern and packet sizes are always small. 
+Complicated libraries that ride atop UDP and attempt to offer reliability
+(retransmission) and ordering on UDP can be avoided.  As well the
+advantages UDP has over TCP are retained as there are no java layers
+attempting to force UDP communication to be more TCP-like.  The simple
+design means UDP/Multicast is only used for discovery and from there on out
+critical information is transmitted over TCP/IP which is obviously going to
+do a better job at ensuring reliability and ordering.
+
+# Server Configuration
+
+When you boot the server there should be a `conf/multicast.properties` file
+containing:
+
+
+    server	    = org.apache.openejb.server.discovery.MulticastDiscoveryAgent
+    bind	    = 239.255.2.3
+    port	    = 6142
+    disabled    = true
+    group	    = default
+
+
+Just need to enable that by setting `disabled=false`.  All of the above
+settings except `server` can be changed.  The `port` and `bind` must
+be valid for general multicast/udp network communication.
+
+The `group` setting can be changed to further group servers that may use
+the same multicast channel.  As shown below the client also has a `group`
+setting which can be used to select an appropriate server from the
+multicast channel.
+
+# Multicast Client
+
+The multicast functionality is not just for servers to find each other in a
+cluster, it can also be used for EJB clients to discover a server.  A
+special `multicast://` URL can be used in the `InitialContext` properties to
+signify that multicast should be used to seed the connection process.  Such
+as:
+
+    Properties p = new Properties();
+    p.put(Context.INITIAL_CONTEXT_FACTORY,
+    "org.apache.openejb.client.RemoteInitialContextFactory");
+    p.put(Context.PROVIDER_URL, "multicast://239.255.2.3:6142?group=default");
+    InitialContext remoteContext = new InitialContext(p);
+
+The URL has optional query parameters such as `schemes` and `group` and
+`timeout` which allow you to zero in on a particular type of service of a
+particular cluster group as well as set how long you are willing to wait in
+the discovery process till finally giving up.  The first matching service
+that it sees "flowing" around on the UDP stream is the one it picks and
+sticks to for that and subsequent requests, ensuring UDP is only used when
+there are no other servers to talk to.
+    
+Note that EJB clients do not need to use multicast to find a server.  If
+the client knows the URL of a server in the cluster, it may use it and
+connect directly to that server, at which point that server will share the
+full list of its peers.
+    
+# Multicast Servers with TCP Clients
+    
+Note that clients do not need to use multicast to communicate with servers.
+Servers can use multicast to discover each other, but clients are still
+free to connect to servers in the network using the server's TCP address.
+    
+    Properties p = new Properties();
+    p.put(Context.INITIAL_CONTEXT_FACTORY,  "org.apache.openejb.client.RemoteInitialContextFactory");
+    p.put(Context.PROVIDER_URL, "ejbd://192.168.1.30:4201");
+    InitialContext remoteContext = new InitialContext(p);
+
+When the client connects, the server will send the URLs of all the servers
+in the group and failover will take place normally.


[05/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/refcard/js/jquery.min.js
----------------------------------------------------------------------
diff --git a/docs/refcard/js/jquery.min.js b/docs/refcard/js/jquery.min.js
new file mode 100644
index 0000000..006e953
--- /dev/null
+++ b/docs/refcard/js/jquery.min.js
@@ -0,0 +1,5 @@
+/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery.min.map
+*/(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e)
 {if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:funct
 ion(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:fun
 ction(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;r
 eturn!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},node
 Name:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r
 &&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEv
 entListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(
 ){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r
 ={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--
 i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,check
 On:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bub
 bles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1
 %;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;
 if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[
 b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data
 -"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>a
 rguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend(
 {attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&
 (n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==
 o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length|
 |(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",col
 span:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specif
 ied?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e
 ){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.eve
 nts={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort
 (),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)
 "+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c
 =b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,han
 dlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documen
 tElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.r
 emoveEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagati
 on()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;
+return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add
 (this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r
 ,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===
 arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F
 +")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){re
 turn t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m
 =V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="<a name='"+x+"'><
 /a><div name='"+x+"'></div>",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!=
 =A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="<input type='hidden' i=''/>",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").leng
 th||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l
 =[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expressi
 on: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{
 },relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttr
 ibute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]
 ={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+
 e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},bu
 tton:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W,"
  ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r))
 ,i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&&gt(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),
 o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[
 1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++
 )b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var 
 n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentD
 ocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){retur
 n b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Nt=/^(?:checkbox|radio)$/i,Ct=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></tab
 le>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b
 .isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n
 )));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;
 n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return thi
 s}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&
 &(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.supp
 ort.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i
 =o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l)
+}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+
 ")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.
 length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"
 ),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle
 },Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parse
 Float(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=ln(e,t),Pt.detach()),Gt[e]=n),n}function ln(e,t){var n=b(t.createElement(e)).appendTo(t.body),r=b.css(n[0],"display");return n.remove(),r}b.each(["height","width"],function(e,n){b.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(b.css(e,"display"))?b.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,i),i):0)}}}),b.support.opacity||(b.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":"
 "},set:function(e,t){var n=e.style,r=e.currentStyle,i=b.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===b.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),b(function(){b.support.reliableMarginRight||(b.cssHooks.marginRight={get:function(e,n){return n?b.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!b.support.pixelPosition&&b.fn.position&&b.each(["top","left"],function(e,n){b.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?b(e).position()[n]+"px":r):t}}})}),b.expr&&b.expr.filters&&(b.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!b.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||b.css(e,"display"))},b.expr.filters.visible=function(e){return!b.expr.filters.hidden(e)}),b.each({margin:"",padding:"",border:"Width"},function(e,t){b.cssHooks[e+t]={expand:function(n){var
  r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(b.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=b.prop(this,"elements");return e?b.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!b(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Nt.test(e))}).map(function(e,t){var n=b(this).val();return null==n?null:b.isArray(n)?b.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),b.param=function(e,n){var r,i=[],o=function(e,t){t=b.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=b.ajaxSettings&&b.ajaxSettings.traditional),b.isArra
 y(e)||e.jquery&&!b.isPlainObject(e))b.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(b.isArray(t))b.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==b.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}b.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){b.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),b.fn.hover=function(e,t){return this.mouseenter(e).mouseleave(t||e)};var mn,yn,vn=b.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Nn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Cn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=b.fn
 .load,An={},jn={},Dn="*/".concat("*");try{yn=a.href}catch(Ln){yn=o.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(b.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(u){var l;return o[u]=!0,b.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||a||o[c]?a?!(l=c):t:(n.dataTypes.unshift(c),s(c),!1)}),l}return s(n.dataTypes[0])||!o["*"]&&s("*")}function Mn(e,n){var r,i,o=b.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&b.extend(!0,e,r),e}b.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),b.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&b.ajax({
 url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?b("<div>").append(b.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},b.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){b.fn[t]=function(e){return this.on(t,e)}}),b.each(["get","post"],function(e,n){b[n]=function(e,r,i,o){return b.isFunction(r)&&(o=o||i,i=r,r=t),b.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Nn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":b.parseJSON,"text xml":b.parseXML}
 ,flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Mn(Mn(e,b.ajaxSettings),t):Mn(b.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,u,l,c,p=b.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?b(f):b.event,h=b.Deferred(),g=b.Callbacks("once memory"),m=p.statusCode||{},y={},v={},x=0,T="canceled",N={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)m[t]=[m[t],e[t]];else N.always(e[N.status]);return this},abort:function(e){var t=e||T;return l&&l.abort(t),k(0,t),this}};if(h.promise(N).complete=g.add,N.success=N.d
 one,N.error=N.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=b.trim(p.dataType||"*").toLowerCase().match(w)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?80:443))==(mn[3]||("http:"===mn[1]?80:443)))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=b.param(p.data,p.traditional)),qn(An,p,n,N),2===x)return N;u=p.global,u&&0===b.active++&&b.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Cn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(b.lastModified[o]&&N.setRequestHeader("If-Modified-Since",b.lastModified[o]),b.etag[o]&&N.setRequestHeader("If-None-Match",b.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&N.setRequestHeader(
 "Content-Type",p.contentType),N.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)N.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,N,p)===!1||2===x))return N.abort();T="abort";for(i in{success:1,error:1,complete:1})N[i](p[i]);if(l=qn(jn,p,n,N)){N.readyState=1,u&&d.trigger("ajaxSend",[N,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){N.abort("timeout")},p.timeout));try{x=1,l.send(y,k)}catch(C){if(!(2>x))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,C=n;2!==x&&(x=2,s&&clearTimeout(s),l=t,a=i||"",N.readyState=e>0?4:0,r&&(w=_n(p,N,r)),e>=200&&300>e||304===e?(p.ifModified&&(T=N.getResponseHeader("Last-Modified"),T&&(b.lastModified[o]=T),T=N.getResponseHeader("etag"),T&&(b.etag[o]=T)),204===e?(c=!0,C="nocontent"):304===e?(c=!0,C="notmodified"):(c=Fn(p,w),C=c.state,y=c.data,v=c.error,c=!v)):(v=C,(e||!C)&&(C="er
 ror",0>e&&(e=0))),N.status=e,N.statusText=(n||C)+"",c?h.resolveWith(f,[y,C,N]):h.rejectWith(f,[N,C,v]),N.statusCode(m),m=t,u&&d.trigger(c?"ajaxSuccess":"ajaxError",[N,p,c?y:v]),g.fireWith(f,[N,C]),u&&(d.trigger("ajaxComplete",[N,p]),--b.active||b.event.trigger("ajaxStop")))}return N},getScript:function(e,n){return b.get(e,t,n,"script")},getJSON:function(e,t,n){return b.get(e,t,n,"json")}});function _n(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(s in c)s in r&&(n[c[s]]=r[s]);while("*"===l[0])l.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in u)if(u[s]&&u[s].test(o)){l.unshift(s);break}if(l[0]in r)a=l[0];else{for(s in r){if(!l[0]||e.converters[s+" "+l[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function Fn(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u[1])for(i in e.converters)a[i.toLowerCase()]=e.converters[i];for(;r=u[++s];)if("*"!==r){if("*"
 !==l&&l!==r){if(i=a[l+" "+r]||a["* "+r],!i)for(n in a)if(o=n.split(" "),o[1]===r&&(i=a[l+" "+o[0]]||a["* "+o[0]])){i===!0?i=a[n]:a[n]!==!0&&(r=o[0],u.splice(s--,0,r));break}if(i!==!0)if(i&&e["throws"])t=i(t);else try{t=i(t)}catch(c){return{state:"parsererror",error:i?c:"No conversion from "+l+" to "+r}}}l=r}return{state:"success",data:t}}b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),b.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=o.head||b("head")[0]||o.documentElement;return{send:function(t,i){n=o.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readySta
 te))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var On=[],Bn=/(=)\?(?=&|$)|\?\?/;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=On.pop()||b.expando+"_"+vn++;return this[e]=!0,e}}),b.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,u=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=b.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||b.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,On.push(o)),s&&b.isFunction(a)&&a(s[0
 ]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}b.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=b.ajaxSettings.xhr(),b.support.cors=!!Rn&&"withCredentials"in Rn,Rn=b.support.ajax=!!Rn,Rn&&b.ajaxTransport(function(n){if(!n.crossDomain||b.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,p;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=b.n
 oop,$n&&delete Pn[a]),i)4!==u.readyState&&u.abort();else{p={},s=u.status,l=u.getAllResponseHeaders(),"string"==typeof u.responseText&&(p.text=u.responseText);try{c=u.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,l)},n.async?4===u.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},b(e).unload($n)),Pn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+x+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=Yn.exec(t),a=i.cur(),s=+a||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(b.cssNumber[e]?"":"px"),"px"!==r&&s){s=b.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,b.style(i.elem,e,s+r);while(u!==(u=i.cur()/a)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=b.now()}function Zn(e,t){b.each(t,function(t,n){var r=(Qn[t]||[]).concat
 (Qn["*"]),i=0,o=r.length;for(;o>i;i++)if(r[i].call(e,t,n))return})}function er(e,t,n){var r,i,o=0,a=Gn.length,s=b.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;for(;u>a;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),1>o&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:b.extend({},t),opts:b.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=b.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(tr(c,l.opts.specialEasing);a>o;o++)if(r=Gn[o].call(l,e,c,l.opts))return r;return Zn(l,c),b.isFunction(l.opts.start)&&l.opts.start.call(e,l),b.fx.tim
 er(b.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function tr(e,t){var n,r,i,o,a;for(i in e)if(r=b.camelCase(i),o=t[r],n=e[i],b.isArray(n)&&(o=n[1],n=e[i]=n[0]),i!==r&&(e[r]=n,delete e[i]),a=b.cssHooks[r],a&&"expand"in a){n=a.expand(n),delete e[r];for(i in n)i in e||(e[i]=n[i],t[i]=o)}else t[r]=o}b.Animation=b.extend(er,{tweener:function(e,t){b.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,u,l,c,p,f=this,d=e.style,h={},g=[],m=e.nodeType&&nn(e);n.queue||(c=b._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,p=c.empty.fire,c.empty.fire=function(){c.unqueued||p()}),c.unqueued++,f.always(function(){f.always(function(){c.unqueued--,b.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overfl
 ow=[d.overflow,d.overflowX,d.overflowY],"inline"===b.css(e,"display")&&"none"===b.css(e,"float")&&(b.support.inlineBlockNeedsLayout&&"inline"!==un(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",b.support.shrinkWrapBlocks||f.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(a=t[i],Vn.exec(a)){if(delete t[i],u=u||"toggle"===a,a===(m?"hide":"show"))continue;g.push(i)}if(o=g.length){s=b._data(e,"fxshow")||b._data(e,"fxshow",{}),"hidden"in s&&(m=s.hidden),u&&(s.hidden=!m),m?b(e).show():f.done(function(){b(e).hide()}),f.done(function(){var t;b._removeData(e,"fxshow");for(t in h)b.style(e,t,h[t])});for(i=0;o>i;i++)r=g[i],l=f.createTween(r,m?s[r]:0),h[r]=s[r]||b.style(e,r),r in s||(s[r]=l.start,m&&(l.end=l.start,l.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}b.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this
 .prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=b.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[b.cssProps[e.prop]]||b.cssHooks[e.prop])?b.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scroll
 Top=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.each(["toggle","show","hide"],function(e,t){var n=b.fn[t];b.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),b.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=b.isEmptyObject(e),o=b.speed(t,n,r),a=function(){var t=er(this,b.extend({},e),o);a.finish=function(){t.stop(!0)},(i||b._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=b.timers,a=b._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].ele
 m!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&b.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=b._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=b.timers,a=r?r.length:0;for(n.finish=!0,b.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}b.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){b.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),b.speed=function(e,t,n){var r=e&&"object"==typeof e?b.extend({},e):{complete:n||!n&&t||b.isFunction(e)&&e,duration:e,easing:n&&t

<TRUNCATED>

[20/20] tomee git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tomee into tomee-8.0.x-docs

Posted by db...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tomee into tomee-8.0.x-docs


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/d5fcddc9
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/d5fcddc9
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/d5fcddc9

Branch: refs/heads/master
Commit: d5fcddc9c557026e6d0fe3581402e43bde2dc087
Parents: f779264 3f07dc9
Author: dblevins <da...@gmail.com>
Authored: Fri Nov 30 14:30:21 2018 -0800
Committer: dblevins <da...@gmail.com>
Committed: Fri Nov 30 14:30:21 2018 -0800

----------------------------------------------------------------------
 .../openejb/assembler/classic/Assembler.java    |    7 +-
 .../openejb/config/AnnotationDeployer.java      |    8 +-
 .../apache/openejb/config/DeploymentLoader.java |    2 +-
 .../apache/openejb/config/SunConversion.java    |   12 +-
 .../openejb/monitoring/ObjectNameBuilder.java   |    2 +-
 .../openejb/resource/AutoConnectionTracker.java |    2 +-
 .../logging/LoggingPreparedSqlStatement.java    |   26 +-
 .../loader/provisining/MavenResolver.java       |    2 +-
 .../cdi-alternative-and-stereotypes/README.md   |   24 +-
 examples/cdi-basic/README.md                    |    6 +-
 examples/cdi-events/README.md                   |    2 +-
 examples/cdi-interceptors/README.md             |   13 +-
 examples/cdi-produces-disposes/README.md        |   15 +-
 examples/cdi-produces-disposes/README.txt       |   18 -
 examples/cdi-produces-field/README.md           |   11 +
 examples/cdi-request-scope/README.md            |    2 +-
 examples/mp-metrics-counted/pom.xml             |   26 +-
 .../org/superbiz/rest/WeatherServiceTest.java   |   75 +-
 examples/mp-metrics-timed/README.md             |  151 +++
 examples/mp-metrics-timed/pom.xml               |   88 ++
 .../src/main/java/WeatherService.java           |   42 +
 .../src/test/java/WeatherServiceTest.java       |  215 ++++
 .../src/test/resources/arquillian.xml           |   30 +
 examples/pom.xml                                |    2 +
 examples/websocket-tls-basic-auth/README.md     |   19 +
 examples/websocket-tls-basic-auth/pom.xml       |  123 ++
 .../src/main/conf/keystore.jks                  |  Bin 0 -> 2245 bytes
 .../src/main/conf/server.xml                    |  166 +++
 .../src/main/conf/tomcat-users.xml              |   45 +
 .../superbiz/websockets/WebSocketResource.java  |   32 +
 .../src/main/webapp/WEB-INF/beans.xml           |   20 +
 .../src/main/webapp/WEB-INF/web.xml             |   35 +
 .../websockets/WebSocketResourceTest.java       |  135 ++
 .../src/test/resources/arquillian.xml           |   41 +
 pom.xml                                         |    2 +-
 tomee/pom.xml                                   |    2 +-
 .../org/apache/tomee/installer/Installer.java   |    2 +-
 tomee/tomee-microprofile-webapp/pom.xml         |  201 ---
 .../src/main/assembly/war.xml                   |   92 --
 .../src/main/resources/META-INF/LICENSE         | 1197 ------------------
 .../src/main/resources/META-INF/NOTICE          |  171 ---
 tomee/tomee-microprofile/mp-common/pom.xml      |   52 +
 ...ilsafeContainerExecutionManagerProvider.java |   67 +
 ...feContainerExecutionManagerProviderTest.java |   75 ++
 tomee/tomee-microprofile/pom.xml                |   38 +
 .../tomee-microprofile-webapp/pom.xml           |  208 +++
 .../src/main/assembly/war.xml                   |   92 ++
 .../src/main/resources/META-INF/LICENSE         | 1197 ++++++++++++++++++
 .../src/main/resources/META-INF/NOTICE          |  171 +++
 .../webapp/installer/InstallerServlet.java      |    2 +-
 50 files changed, 3196 insertions(+), 1770 deletions(-)
----------------------------------------------------------------------



[14/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/developer/testing/arquillian/index.adoc
----------------------------------------------------------------------
diff --git a/docs/developer/testing/arquillian/index.adoc b/docs/developer/testing/arquillian/index.adoc
new file mode 100755
index 0000000..16f0538
--- /dev/null
+++ b/docs/developer/testing/arquillian/index.adoc
@@ -0,0 +1,421 @@
+= TomEE and Arquillian
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE has several arquillian adapter flavors:
+
+- openejb-embedded: a plain embedded OpenEJB supporting most of EE features
+- tomee-embedded: a full TomEE running in the same JVM
+- tomee-remote: a standard TomEE running in its own process as in production
+- tomee-webapp (not recommanded): an adapter starting from a Tomcat and installing tomee-webapp
+
+=== Embedded or Remote?
+
+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:
+
+- JVM resources are available where it will likely not be the case in war mode (src/main/resources typically)
+- You can mix server and client side features when writing a test
+- Classloading is a bit different by design and less isolated (test dependencies) so you can get runtime surprises when really deploying
+
+To summarize: the choice is the trade off you choose between easiness and reality of the simulation.
+
+TIP: 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.
+
+NOTE: all configurations have defaults
+
+=== OpenEJB Embedded
+
+==== Coordinates
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.tomee</groupId>
+  <artifactId>arquillian-openejb-embedded</artifactId>
+  <version>${tomee7.version}
+</dependency>
+----
+
+==== arquillian.xml
+
+|===
+|Name|Description
+|properties|container properties, as in conf/system.properties (not in xml format)
+|preloadClasses|some class to load (ie enforce static block initialization)
+|startDefaultScopes|should CDI default scopes be started (includes @RequestScoped)
+|singleDeploymentByArchiveName |names of archives (or true for all) to dploy a single time
+|===
+
+Sample:
+
+[source,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>
+----
+
+=== TomEE Embedded
+
+==== Coordinates
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.tomee</groupId>
+  <artifactId>arquillian-tomee-embedded</artifactId>
+  <version>${tomee7.version}
+</dependency>
+----
+
+==== Configuration
+
+|===
+|Name|Description
+| exportConfAsSystemProperty|export system properties with adapter prefix(es) (ex: httpPort will be set as tomee.httpPort)
+| httpsPort | the HTTPS port
+| httpPort  | the HTTP port
+| stopPort   | the shutdown port
+| dir    | where to create the TomEE work dir (a fake file layout is created for Tomcat needs)
+| appWorkingDir     | where to dump applications (`@Deployment`)
+| host      | which host to use
+| stopHost       | which port to use to shutdown TomEE (port on Server configuration)
+| stopCommand       | which command to use to shutdown TomEE
+| serverXml       | where is the provided server.xml
+| portRange        | when port are set to -1 TomEE adapter will generate an available port, if specified the range will be used
+| preloadClasses        | which classes to initialize during container startup
+| quickSession         | should the session use a Random instead of SecureRandom (useful when the machine doesn't have a lot of entropy)
+| unsafeEjbd         | should EJB allow all classes
+| unpackWars          | unpackWARs value in server.xml
+| properties           | container properties
+| webContextToUseWithEars           |sometimes you can need this to adjust which context the adapter uses to find the ArquillianServletRunner
+| keepServerXmlAsThis           |don't replace ports etc in server.xml and use it like it has been provided when serverXml is set
+| singleDumpByArchiveName           | dump only once `@Deployment` archives using the name as key
+| singleDeploymentByArchiveName            |deploy only once `@Deployment` archives using the name as key
+|ssl| should https be activated
+|withEjbRemote| should EJBd remote be activated
+|keystoreFile | if ssl is set to true the keystore location
+|keystorePass | if ssl is set to true the keystore password
+|keystoreType  | if ssl is set to true the keystore type
+|clientAuth  |should SSL connector use clientAuth
+|keyAlias  | if ssl is set to true the key to use
+|sslProtocol  | if ssl is set to true the protocol to use
+|users  |a map of users (properties syntax)
+|roles  |user roles (properties syntax)
+|webResourcesCached   |should resources be cached or not (`DefaultServlet` caching)
+|===
+
+
+Sample:
+
+[source,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>
+----
+
+=== TomEE Remote
+
+IMPORTANT: if a server is already started on host:port then it will be used instead of starting the configured TomEE type.
+
+To use a custom instance with arquillian ensure to have ejbd and tomee webapp activated. A way is to have in `conf/system.properties` these entries:
+
+[source]
+----
+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
+----
+
+For really remote instances (= not on localhost) you need the `deployerProperties` of previous snippet too:
+
+[source,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>
+----
+
+==== Coordinates
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.tomee</groupId>
+  <artifactId>arquillian-tomee-remote</artifactId>
+  <version>${tomee7.version}
+</dependency>
+----
+
+==== Configuration
+
+|===
+|Name|Description
+| exportConfAsSystemProperty|export system properties with adapter prefix(es) (ex: httpPort will be set as tomee.httpPort)
+| httpsPort | the HTTPS port
+| httpPort  | the HTTP port
+| stopPort   | the shutdown port
+| dir    | where to create the TomEE work dir (a fake file layout is created for Tomcat needs)
+| appWorkingDir     | where to dump applications (`@Deployment`)
+| host      | which host to use
+| stopHost       | which port to use to shutdown TomEE (port on Server configuration)
+| stopCommand       | which command to use to shutdown TomEE
+| serverXml       | where is the provided server.xml
+| portRange        | when port are set to -1 TomEE adapter will generate an available port, if specified the range will be used
+| preloadClasses        | which classes to initialize during container startup
+| quickSession         | should the session use a Random instead of SecureRandom (useful when the machine doesn't have a lot of entropy)
+| unsafeEjbd         | should EJB allow all classes
+| unpackWars          | unpackWARs value in server.xml
+| properties           | container properties
+| webContextToUseWithEars           |sometimes you can need this to adjust which context the adapter uses to find the ArquillianServletRunner
+| keepServerXmlAsThis           |don't replace ports etc in server.xml and use it like it has been provided when serverXml is set
+| singleDumpByArchiveName           | dump only once `@Deployment` archives using the name as key
+| singleDeploymentByArchiveName            |deploy only once `@Deployment` archives using the name as key
+|groupId|the maven groupId of the TomEE (or not) artifact
+|artifactId|the maven artifactId of the TomEE (or not) artifact
+|version |the maven version of the TomEE (or not) artifact
+|classifier |the maven classifier of the TomEE (or not) artifact
+|type  |the maven type of the TomEE (or not) artifact (should be zip)
+|removeUnusedWebapps   |should default webapps (ROOT, manager, ...) be removed
+|ajpPort   |the ajp port if used
+|conf  |a folder to synchronize with TomEE conf folder
+|bin  |a folder to synchronize with TomEE bin folder
+|lib  |a folder to synchronize with TomEE lib folder
+|endorsed   |a folder to synchronize with TomEE endorsed folder
+|javaagent   |a list (flat format) of javaagent to add when launching tomee, can use maven coordinates if prefixed with `mvn:`
+|additionalLibs   |a list (flat format) of library to add to TomEE libraries, can use paths of maven coordinates when prefixed with `mvn:`
+|cleanOnStartUp   |should TomEE folder be deleted on startup if exists
+|debug   |should the container run in debug mode (`-Dopenejb.server.debug=true` activates it without touching the configuration)
+|debugPort   |if activated which port to use to debug
+|catalina_opts   |equivalent to `CATALINA_OPTS` environment variable
+|simple_log   |should logs be inline
+|deployerProperties    |deployer properties, useful when not deploying on an instance managed by the build (remote instance typically)
+|===
+
+
+Sample:
+
+[source,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>
+----
+
+=== Multiple instances
+
+With arquillian you can create cluster or isolated instances. Here is a sample `arquillian.xml`:
+
+[source,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>
+----
+
+Then in your test just specify the container you are testing against:
+
+[source,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
+ }
+}
+----

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/developer/testing/index.adoc
----------------------------------------------------------------------
diff --git a/docs/developer/testing/index.adoc b/docs/developer/testing/index.adoc
new file mode 100755
index 0000000..8b277e6
--- /dev/null
+++ b/docs/developer/testing/index.adoc
@@ -0,0 +1,9 @@
+= Unit Testing
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+- link:applicationcomposer/index.html[ApplicationComposer]: Lightweight tests
+- link:arquillian/index.html[Arquillian]: The standard for EE tests
+- link:other/index.html[Going futher]: OpenEJB JUnit, TomEE Embedded...

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/developer/testing/other/index.adoc
----------------------------------------------------------------------
diff --git a/docs/developer/testing/other/index.adoc b/docs/developer/testing/other/index.adoc
new file mode 100755
index 0000000..b1d41b1
--- /dev/null
+++ b/docs/developer/testing/other/index.adoc
@@ -0,0 +1,134 @@
+= Other Testing Techniques
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+=== EJBContainer
+
+The `EJBContainer` API is a JavaEE API enriched by some OpenEJB features to make the testing easier.
+
+It starts a container (embedded for case we are interested in) scanning the classpath. This operation can be
+slow and if you go with this solution maybe think to start it only once for all tests.
+
+==== Sample
+
+[source,java]
+----
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.inject.Inject;
+import javax.naming.NamingException;
+
+import static org.junit.Assert.assertTrue;
+
+public class ATest {
+    @Inject
+    private MyCDIBean aBean;
+
+    @PersistenceContext
+    private EntityManager em;
+
+    @Resource
+    private DataSource ds;
+
+    @BeforeClass
+    public static void start() throws NamingException {
+        container = EJBContainer.createEJBContainer();
+    }
+
+    @AfterClass
+    public static void shutdown() {
+        if (container != null) {
+            container.close();
+        }
+    }
+
+    @Before
+    public void inject() throws NamingException {
+        container.getContext().bind("inject", this);
+    }
+
+    @After
+    public void reset() throws NamingException {
+        container.getContext().unbind("inject");
+    }
+
+    @Test
+    public void aTest() {
+        // ...
+    }
+}
+----
+
+It will use `createEJBContainer()` method to start the container and application, and `close()` to shutdown it.
+
+OpenEJB provides the `bind("inject")` hack to be able to get injection in the test class.
+
+=== OpenEJB JUnit
+
+`openejb-junit` is another artifact providing some facilities for testing.
+
+==== EJBContainer Rule
+
+[source,java]
+----
+@Properties({
+    @Property(key = DeploymentFilterable.CLASSPATH_EXCLUDE, value = "jar:.*"),
+    @Property(key = DeploymentFilterable.CLASSPATH_INCLUDE, value = ".*openejb-junit.*")
+})
+public class TestEJBContainerDefaultConfig {
+    @Rule
+    public final EJBContainerRule containerRule = new EJBContainerRule(this);
+
+    @org.apache.openejb.junit.jee.resources.TestResource
+    private Context ctx;
+
+    @org.apache.openejb.junit.jee.resources.TestResource
+    private java.util.Properties props;
+
+    @org.apache.openejb.junit.jee.resources.TestResource
+    private EJBContainer container;
+
+
+    @Test
+    public void configIsHere() {
+        // ...
+    }
+}
+
+----
+
+TIP: there is the equivalent runner: `@RunWith(EJBContainerRunner.class)`
+
+==== InjectRule: injections for EJBContainerRule
+
+[source,java]
+----
+@Properties({
+    @Property(key = DeploymentFilterable.CLASSPATH_EXCLUDE, value = "jar:.*"),
+    @Property(key = DeploymentFilterable.CLASSPATH_INCLUDE, value = ".*myjar.*")
+})
+public class TestEJBContainerRule {
+    @ClassRule
+    public static final EJBContainerRule CONTAINER_RULE = new EJBContainerRule();
+
+    @Rule
+    public final InjectRule injectRule = new InjectRule(this, CONTAINER_RULE);
+
+    @EJB
+    private BasicEjbLocal ejb;
+
+    @Test
+    public void aTest() {
+        // ...
+    }
+}
+----
+
+TIP: an alternative in `openejb-core` is to use `org.apache.openejb.Injector.inject(instance)`

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/developer/tools/gradle-plugins.adoc
----------------------------------------------------------------------
diff --git a/docs/developer/tools/gradle-plugins.adoc b/docs/developer/tools/gradle-plugins.adoc
new file mode 100755
index 0000000..fe43434
--- /dev/null
+++ b/docs/developer/tools/gradle-plugins.adoc
@@ -0,0 +1,50 @@
+= TomEE Gradle Plugin
+:jbake-date: 2016-05-31
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE provides a gradle plugin for tomee-embedded "à la Jetty".
+
+[source,java]
+----
+buildscript {
+   repositories {
+       mavenCentral()
+   }
+
+   dependencies {
+       classpath 'org.apache.tomee.gradle:tomee-embedded:7.0.0'
+   }
+}
+
+apply plugin: 'org.apache.tomee.tomee-embedded'
+
+// ...
+----
+
+Then just start tomee with:
+
+[source]
+----
+gradle tomee-embedded -i
+----
+
+== Configuration
+
+All the configuration is optional.
+
+[source,java]
+----
+// plugin setup
+def tomeeEmbedded = extensions.getByName('tomee-embedded')
+tomeeEmbedded.tomeeVersion = 'other version'
+tomeeEmbedded.skipDefaultRepository  = true // don't use central to retrieve tomee
+
+// container dependencies
+def tomeeEmbeddedDeps = configurations.getByName('tomee-embedded')
+// add dependencies you need to this configuration
+----
+
+tomee-embedded task has several more advanced configuration like tomee properties, modules to deploy etc...
+Its configuration is pretty close to link:maven/embedded.html[Embedded Maven Plugin].

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/developer/tools/index.adoc
----------------------------------------------------------------------
diff --git a/docs/developer/tools/index.adoc b/docs/developer/tools/index.adoc
new file mode 100755
index 0000000..235f774
--- /dev/null
+++ b/docs/developer/tools/index.adoc
@@ -0,0 +1,8 @@
+= Build Tools and Plugins
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+- link:maven-plugins.html[Maven Plugins]
+- link:gradle-plugins.html[Gradle Plugin]

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/developer/tools/maven-plugins.adoc
----------------------------------------------------------------------
diff --git a/docs/developer/tools/maven-plugins.adoc b/docs/developer/tools/maven-plugins.adoc
new file mode 100755
index 0000000..3f335d2
--- /dev/null
+++ b/docs/developer/tools/maven-plugins.adoc
@@ -0,0 +1,12 @@
+= TomEE Maven Plugins
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE provides several maven plugins:
+
+- one for a link:maven/tomee.html[standalone TomEE]
+- one for link:maven/embedded.html[TomEE embedded]
+- one for link:maven/applicationcomposer.html[application composer] based applications
+- Note: there is one for `EJBContainer` but this one is easily replaced by one of the previous in general

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/developer/tools/maven/applicationcomposer.adoc
----------------------------------------------------------------------
diff --git a/docs/developer/tools/maven/applicationcomposer.adoc b/docs/developer/tools/maven/applicationcomposer.adoc
new file mode 100755
index 0000000..8694c37
--- /dev/null
+++ b/docs/developer/tools/maven/applicationcomposer.adoc
@@ -0,0 +1,47 @@
+= Application Composer Maven Plugin
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+This plugin has two goal:
+
+- `applicationcomposer:run`: to start the application from mvn command line
+- `applicationcomposer:zip`: to package a zip with dependencies and start scripts
+
+IMPORTANT: the dependencies are retrieved with `MavenProject.getArtifacts()` which means you artifacts should be a `war`
+- maven doesn't populate it with a `jar` - and the compile phase - at least - should be passed to ensure it is populated.
+
+=== Run goal configuration
+
+[source]
+----
+mvn process-classes applicationcomposer:run -DskipTests
+----
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Default | Description
+| args | - | a list of application arguments
+|application|-|application qualified name
+|binaries|${project.build.outputDirectory}|where is your module code (target/classes)
+|mavenLog|true|force to use maven logging in openejb
+|===
+
+=== Zip goal configuration
+
+[source]
+----
+mvn process-classes applicationcomposer:zip -DskipTests
+----
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Default | Description
+|workDir|${project.build.directory}/${project.build.finalName}-applicationcomposer| where the container can "work" and create temp files
+|zip|${project.build.directory}/${project.build.finalName}-applicationcomposer.zip| where to create the zip
+|attach|true|attach the created artifact
+|classifier|-|artifact classifier if needed
+|application|-|application qualified name
+|binaries|${project.build.outputDirectory}|where is your module code (target/classes)
+|===

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/developer/tools/maven/embedded.adoc
----------------------------------------------------------------------
diff --git a/docs/developer/tools/maven/embedded.adoc b/docs/developer/tools/maven/embedded.adoc
new file mode 100755
index 0000000..6e27054
--- /dev/null
+++ b/docs/developer/tools/maven/embedded.adoc
@@ -0,0 +1,53 @@
+= TomEE Embedded Maven Plugin
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE Embedded Maven plugin has a single goal: `tomee-embedded:run`.
+
+=== Configuration
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Default | Description
+| warFile | ${project.build.directory}/${project.build.finalName} | where is the binary
+| httpPort | 8080 | HTTP port
+| httpsPort | 8443 | HTTPS port
+| ajpPort | 8009 | AJP port
+| stopPort | 8005 | shutdown port
+| host | localhost | the server host
+| dir | ${project.build.directory}/apache-tomee-embedded | the work directory
+| keystoreFile | - | the keystore file for the HTTPS connector
+| keystorePass | - | the keystore password for the HTTPS connector
+| keystoreType | JKS | the keystore type for the HTTPS connector
+| clientAuth | - | should HTTPS use client authentication
+| keyAlias | - | the key to use for HTTPS
+| sslProtocol | - | the protocol to use for SSL/HTTPS
+| serverXml | - | a custom server.xml
+| ssl | false | is HTTPS active
+| withEjbRemote |false | is EJBd active
+| quickSession | true | is sessions using Random instead of SecureRandom to generate id (faster but less secure, good for dev purposes)
+| skipHttp | false | don't activate HTTP connector (allow to have only HTTPS for instance)
+| classpathAsWar | false | deploy the classpath instead of the binary/war
+| useProjectClasspath | true | in previous case use the project classpath and not plugin one
+| webResourceCached | true | should web resources be cached
+| modules | ${project.build.outputDirectory} | list of module to add to the classpath of the application
+| docBase | ${project.basedir}/src/main/webapp | where is the docBase in classpath deployment mode (where are web resources)
+| context | - | which context to use for the main artifact/deployment
+| containerProperties | - | map of container properties
+| mavenLog | true | should the plugin use maven logger instead of JUL
+| keepServerXmlAsThis | false | don't apply port/host configuration to the server.xml if provided
+| users | - | map of user/password
+| roles | - | map of role/users
+| forceJspDevelopment | true | ensure JSP are in development mode (updated)
+| applications | - | list of applications to deploy
+| applicationScopes | - | scope of the artifact to take into account for the classpath (ignore PROVIDED for instance)
+| skipCurrentProject | - | don't deploy current project but only configured applications
+| applicationCopyFolder | - | a folder containing applications
+| workDir | - | tomee embedded work dir
+| inlinedServerXml | - | server.xml content directly in the pom
+| inlinedTomEEXml | - | tomee.xml content directly in the pom
+| liveReload | - | livereload configuration if activated. This is an object containing these options: {watchedFolder: 'src/main/webapp', path: '/', port: 35729}
+| withLiveReload | false | activate livereload for web resources
+|===

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/developer/tools/maven/tomee.adoc
----------------------------------------------------------------------
diff --git a/docs/developer/tools/maven/tomee.adoc b/docs/developer/tools/maven/tomee.adoc
new file mode 100755
index 0000000..e4f5896
--- /dev/null
+++ b/docs/developer/tools/maven/tomee.adoc
@@ -0,0 +1,183 @@
+= TomEE Maven Plugin
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE Maven Plugin is a set of goals for the development and to prepare to go in production:
+
+- `tomee:build`
+- `tomee:exec`
+- `tomee:configtest`
+- `tomee:debug`
+- `tomee:deploy`
+- `tomee:exec`
+- `tomee:list`
+- `tomee:run`
+- `tomee:start`
+- `tomee:stop`
+- `tomee:undeploy`
+
+=== Run
+
+The most commonly used goal, it allows to start a tomee with applications. Here is its configuration:
+
+[.table.table-bordered,options="header"]
+|===
+|Name|Default|Description
+
+|synchronization|-|a synchronization (see after the table)
+|synchronizations|-|list of synchronizations
+|reloadOnUpdate|-|should the application be redeployed when a synchronization is triggered
+
+|skipCurrentProject|false|should current project not be considered as a deployable even if its packaging is compatible (war typically)
+|tomeeVersion|auto, plugin one|which version of TomEE to use
+|tomeeGroupId|org.apache.tomee|TomEE artifact groupId
+|tomeeArtifactId|apache-tomee|TomEE artifact artifactId
+|tomeeType|zip| the type of the TomEE artifact , only zip supported at the moment
+|tomeeClassifier|webprofile|which flavor of TomEE to use (classifier)
+|tomeeShutdownPort|read from server.xml|the shutdown port
+|tomeeShutdownAttempts|60|how many times to wait for startup/shutdown (waits 1s in between)
+|tomeeShutdownCommand|SHUTDOWN|the shutdown command
+|tomeeAjpPort|read from the pom|the AJP port if needed
+|tomeeHttpsPort|read from the pom|the HTTPS port if needed
+|args|-|command line arguments (system properties, javaagent, JVM options ...)
+|debug|-|start and wait for a remote debugger to connect
+|debugPort|5005|used when debug to change the default port
+|simpleLog|false|use one line logs
+|extractWars|false|explode wars before starting
+|stripWarVersion|true|remove the version from the war name
+|stripVersion|false|remove the version from the artifact name whatever it is (even jar)
+|webappResources|${project.basedir}/src/main/webapp|where web resources are
+|webappClasses and classes|${project.build.outputDirectory}|where artifact binaries are
+|catalinaBase|${project.build.directory}/apache-tomee|where to create the tomee instance
+|context|-|name of the current artifact (rename the war from the maven name to this one)
+|webappDir|webapps|path to webapps folder from tomee.base
+|appDir|apps|path to apps folder from tomee.base
+|libDir|lib|where is lib folder
+|mainDir|${project.basedir}/src/main|used in openejb mode to change default config of conf/lib/bin folders to openejb instead of tomee
+|config|${project.basedir}/src/main/tomee/conf|a conf folder synchronized with TomEE one
+|bin|${project.basedir}/src/main/tomee/bin|a bin folder synchronized with TomEE one
+|lib|${project.basedir}/src/main/tomee/lib|a lib folder synchronized with TomEE one
+|systemVariables|-|a map of system properties
+|classpaths|-|a list of additional entries for the startup classpath
+|customizers|-|a list of customizers
+|jsCustomizers|-|a list of js customizers (js scripts)
+|groovyCustomizers|-|a list of groovy customizers (groovy scripts)
+|webappDefaultConfig|false|auto config war oriented
+|quickSession|true|session generation will use `Random` instead of `SecureRandom` (for dev)
+|forceReloadable|false|ensure TomEE supports reloading/redeployment
+|forceJspDevelopment|true|JSP will be auto-recompiled on changes
+|libs|-|dependencies to add in lib, see after this table for advanced usage
+|endorsedLibs|-|dependencies to add in endorsed, see after this table for advanced usage
+|javaagents|-|javaagents to add on the JVM, supports maven coordinates
+|persistJavaagents|false|should javaagent be saved or just use for this plugin run
+|webapps|-|additional applicatinos to deploy
+|warFile|${project.build.directory}/${project.build.finalName}.${project.packaging}|the war to deploy
+|workWarFile|${project.build.directory}/${project.build.finalName}"|the exploded war to deploy
+|removeDefaultWebapps|true| should default webapps (ROOT, docs, ...) be deleted
+|deployOpenEjbApplication|false|should openejb internal application be deployed
+|removeTomeeWebapp|true|should tomee webapp (with EJBd adapter) be deployed
+|tomeeAlreadyInstalled|false|skip all the setup configuration
+|ejbRemote|true|should EJBd be activated
+|checkStarted|false|should the plugin check the server is up (useful when used with `pre-integration` phase
+|useConsole|true|wait for the end of the execution reading inputs from the console (like `quit` command)
+|useOpenEJB|false|use openejb-standalone instead of tomee
+|inlinedServerXml|-|a server.xml content in pom.xml directly
+|inlinedTomEEXml|-|a tomee.xml content in pom.xml directly
+|overrideOnUnzip|true|if when unzipping tomee a file is already there should it be overriden
+|skipRootFolderOnUnzip|true|ignore root folder of the zip
+|keystore|-|path to keystore for HTTPS connector
+|===
+
+
+Synchronization are blocks defining a source and target folder and both are synchronized. It typically copy
+`src/main/webapp` resources in `target/apache-tomee/webapps/myapp/`.
+
+
+==== Customizers
+
+Customizers are java classes loadable by the plugin and with a main or implementing `Runnable` and taking optionally
+as constructor parameter a `File` representing `tomee.base` or no arguments.
+
+They are executed when creating the TomEE instance.
+
+There are two scripting flavors of that: js and groovy. Both will have some contextual variables:
+
+- catalinaBase: tomee base path
+- resolver: a maven resolver to get a dependency using maven. For instance: `resolver.resolve('group', 'artfact', 'version', 'type')`
+
+==== Dependencies (libs)
+
+The format can be:
+
+- a maven dependency:
+
+[source]
+----
+groupId:artifactId:version
+----
+
+- a zip dependency and extracted in lib folder:
+
+[source]
+----
+unzip:groupId:artifactId:version
+----
+
+- a matching prefix to remove:
+
+[source]
+----
+remove:prefix
+----
+
+==== Example
+
+[source,xml]
+----
+<plugin>
+  <groupId>org.apache.tomee.maven</groupId>
+  <artifactId>tomee-maven-plugin</artifactId>
+  <version>${tomee7.version}</version>
+  <configuration>
+    <tomeeClassifier>plus</tomeeClassifier>
+    <debug>false</debug>
+    <debugPort>5005</debugPort>
+    <args>-Dfoo=bar</args>
+    <config>${project.basedir}/src/test/tomee/conf</config>
+    <libs>
+      <lib>mysql:mysql-connector-java:5.1.20</lib>
+    </libs>
+    <webapps>
+       <webapp>org.superbiz:myapp:4.3?name=ROOT</webapp>
+       <webapp>org.superbiz:api:1.1</webapp>
+    </webapps>
+    <apps>
+        <app>org.superbiz:mybugapp:3.2:ear</app>
+    </apps>
+    <libs>
+        <lib>mysql:mysql-connector-java:5.1.21</lib>
+        <lib>unzip:org.superbiz:hibernate-bundle:4.1.0.Final:zip</lib>
+        <lib>remove:openjpa-</lib>
+    </libs>
+  </configuration>
+</plugin>
+----
+
+=== Build
+
+Excepted synchronization, build plugin inherit from `run` Mojo its configuration. It just adds the following:
+
+[.table.table-bordered,options="header"]
+|===
+|Name|Default|Description
+|formats|-|map of configuration, keys are format (zip, tar.gz) and value the target location
+|zip|true|create a zip from the configured instance
+|attach|true|attach created artifacts
+|skipArchiveRootFolder|false|don't add a root folder in the zip
+|===
+
+=== Tomcat like goals
+
+`configtest`, `start` and `stop` just execute these commands on the server (like on `catalina.sh`).

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/docs.adoc
----------------------------------------------------------------------
diff --git a/docs/docs.adoc b/docs/docs.adoc
new file mode 100644
index 0000000..5507038
--- /dev/null
+++ b/docs/docs.adoc
@@ -0,0 +1,26 @@
+= TomEE Documentation
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+=== Administration
+- link:admin/configuration/index.html[Server Configuration]
+- link:admin/directory-structure.html[Directory Structure]
+- link:admin/cluster/index.html[Clustering and High Availability (HA)]
+
+=== Developers
+- link:developer/ide/index.html[IDEs - Eclipse, Intellij Idea and Netbeans]
+- link:developer/testing/index.html[Unit Testing - Arquillian, OpenEJB JUnit, TomEE Embedded and ApplicationComposer]
+- link:developer/tools/index.html[Build Tools and Plugins]
+- link:developer/migration/tomee-1-to-7.html[Migrating From TomEE 1.x to 7.x]
+- link:developer/json/index.html[TomEE and Apache Johnzon - JAX-RS JSON Provider]
+- link:developer/configuration/cxf.html[Apache CXF Configuration - JAX-RS (RESTful Services) and JAX-WS (Web Services)]
+- link:developer/classloading/index.html[Understanding the TomEE ClassLoader]
+
+=== Advanced
+- link:advanced/applicationcomposer/index.html[`ApplicationComposer` with JBatch]
+- link:advanced/setup/index.html[How to Setup TomEE in Production]
+- link:advanced/shading/index.html[Fat / Uber Jar Deployment using the Maven Shade Plugin]
+- link:advanced/client/jndi.html[Java Naming and Directory Interface (JNDI)]
+- link:advanced/jms/jms-configuration.html[Why is my ActiveMQ/JMS MDB not scaling as expected?]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/documentation.mdtext
----------------------------------------------------------------------
diff --git a/docs/documentation.mdtext b/docs/documentation.mdtext
new file mode 100644
index 0000000..b0f4238
--- /dev/null
+++ b/docs/documentation.mdtext
@@ -0,0 +1,102 @@
+Title: Documentation
+
+See also the [examples page](examples-trunk/index.html) for downloadable, executable and code-focused view of Java EE and TomEE.
+You can also find us on IRC freenode.org #openejb and #tomee
+
+{row
+
+{span-one-third
+###IDE
+[Get started with Intellij](tomee-and-intellij.html), [Debugging in Intellij](contrib/debug/debug-intellij.html)  
+[Get started with Eclipse (WTP)](tomee-and-eclipse.html)  
+[Get started with Eclipse (m2e-Webby)](getting-started-with-eclipse-and-webby.html)  
+[Get started with Netbeans](tomee-and-netbeans.html)  
+
+###General Informations
+[Comparison: OpenEJB, TomEE, TomEE+](comparison.html)  
+[TomEE Directory structure](tomee-directory-structure.html)  
+[Deploying in TomEE](deploying-in-tomee.html)  
+[The 'tomee' webapp](tomee-webapp.html)  
+[TomEE Reference Card](refcard/refcard.html)  
+[ApplicationComposer](application-composer/index.html)  
+}
+{span-one-third
+###Configuration
+[System Properties](system-properties.html)  
+[Deployments](deployments.html)  
+[Configuring Resources](Configuring-in-tomee.html)  
+[Configuring DataSources](configuring-datasources.html)  
+[Containers and Resources](containers-and-resources.html)  
+[JMS Resources and MDB Container](jms-resources-and-mdb-container.html)  
+[Configuring JavaMail](configuring-javamail.html)  
+[TomEE Security](tomee-and-security.html)  
+[Security How To](security.html)  
+[EJB Clients](clients.html)  
+[EJB over SSL](ejb-over-ssl.html)  
+[JNDI Names](jndi-names.html)  
+[Changing JMS implementations](changing-jms-implementations.html)  
+[Changing JPA to Hibernate](tomee-and-hibernate.html)  
+}
+{span-one-third
+###Testing Techniques
+[Application discovery via the classpath](application-discovery-via-the-classpath.html)  
+[Embedded Configuration](embedded-configuration.html)  
+[Configuring DataSources in Tests](configuring-datasources-in-tests.html)  
+[Configuring PersistenceUnits in Tests](configuring-persistenceunits-in-tests.html)  
+[Configuring Containers in Tests](configuring-containers-in-tests.html)  
+[Configuring Logging in Tests](configuring-logging-in-tests.html)  
+[Alternate Descriptors](alternate-descriptors.html)  
+[Unit Testing Transactions](unit-testing-transactions.html)  
+[TestCase with TestBean inner-class](testcase-with-testbean-inner-class.html)  
+[TestCase Injection (@LocalClient)](local-client-injection.html)  
+}
+}
+{row
+
+{span-one-third
+###Discovery and Failover
+[Overview](ejb-failover.html)  
+[Multicast Discovery (UDP)](multicast-discovery.html)  
+[Multipulse Discovery (UDP)](multipulse-discovery.html)  
+[Multipoint Discovery (TCP)](multipoint-discovery.html)  
+[Multipoint Considerations](multipoint-considerations.html)  
+[Multipoint Recommendations](multipoint-recommendations.html)  
+[Logging Events](failover-logging.html)  
+}
+{span-one-third
+
+###OpenEJB Standalone Server
+[Understanding the Directory Layout](understanding-the-directory-layout.html)  
+[Startup](startup.html)  
+[Deploy Tool](deploy-tool.html)  
+[Properties Tool](properties-tool.html)  
+}
+{span-one-third
+###Spring
+[Spring and OpenEJB 3.0](spring-and-openejb-3.0.html)  
+[Spring and OpenEJB 3.1 and later](spring.html)  
+[Spring, EJB and JPA example](spring-ejb-and-jpa.html)  
+}
+}
+{row
+
+{span-one-third
+###Arquillian
+[Arquillian Primer - What you need to know](arquillian-getting-started.html)  
+[Using the TomEE Arquillian adapters](arquillian-available-adapters.html)  
+}
+{span-one-third
+###TomEE Maven Plugin
+[Getting started](tomee-mp-getting-started.html)  
+[tomee-maven-plugin reference documentation](maven/index.html)  
+[tomee-embedded-maven-plugin reference documentation](tomee-embedded-maven-plugin.html)  
+[TomEE simple webapp archetype documentation](tomee-mp-getting-started.html)  
+}
+{span-one-third
+###Tips and Tricks
+[Install TomEE using the drop-in WAR](installation-drop-in-war.html)  
+[Global Concurrency Management](tip-concurrency.html)  
+[WebLogic Lookup](tip-weblogic.html)  
+[Jersey Client](tip-jersey-client.html)  
+}
+}

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/documentation.old.mdtext
----------------------------------------------------------------------
diff --git a/docs/documentation.old.mdtext b/docs/documentation.old.mdtext
new file mode 100644
index 0000000..b0f4238
--- /dev/null
+++ b/docs/documentation.old.mdtext
@@ -0,0 +1,102 @@
+Title: Documentation
+
+See also the [examples page](examples-trunk/index.html) for downloadable, executable and code-focused view of Java EE and TomEE.
+You can also find us on IRC freenode.org #openejb and #tomee
+
+{row
+
+{span-one-third
+###IDE
+[Get started with Intellij](tomee-and-intellij.html), [Debugging in Intellij](contrib/debug/debug-intellij.html)  
+[Get started with Eclipse (WTP)](tomee-and-eclipse.html)  
+[Get started with Eclipse (m2e-Webby)](getting-started-with-eclipse-and-webby.html)  
+[Get started with Netbeans](tomee-and-netbeans.html)  
+
+###General Informations
+[Comparison: OpenEJB, TomEE, TomEE+](comparison.html)  
+[TomEE Directory structure](tomee-directory-structure.html)  
+[Deploying in TomEE](deploying-in-tomee.html)  
+[The 'tomee' webapp](tomee-webapp.html)  
+[TomEE Reference Card](refcard/refcard.html)  
+[ApplicationComposer](application-composer/index.html)  
+}
+{span-one-third
+###Configuration
+[System Properties](system-properties.html)  
+[Deployments](deployments.html)  
+[Configuring Resources](Configuring-in-tomee.html)  
+[Configuring DataSources](configuring-datasources.html)  
+[Containers and Resources](containers-and-resources.html)  
+[JMS Resources and MDB Container](jms-resources-and-mdb-container.html)  
+[Configuring JavaMail](configuring-javamail.html)  
+[TomEE Security](tomee-and-security.html)  
+[Security How To](security.html)  
+[EJB Clients](clients.html)  
+[EJB over SSL](ejb-over-ssl.html)  
+[JNDI Names](jndi-names.html)  
+[Changing JMS implementations](changing-jms-implementations.html)  
+[Changing JPA to Hibernate](tomee-and-hibernate.html)  
+}
+{span-one-third
+###Testing Techniques
+[Application discovery via the classpath](application-discovery-via-the-classpath.html)  
+[Embedded Configuration](embedded-configuration.html)  
+[Configuring DataSources in Tests](configuring-datasources-in-tests.html)  
+[Configuring PersistenceUnits in Tests](configuring-persistenceunits-in-tests.html)  
+[Configuring Containers in Tests](configuring-containers-in-tests.html)  
+[Configuring Logging in Tests](configuring-logging-in-tests.html)  
+[Alternate Descriptors](alternate-descriptors.html)  
+[Unit Testing Transactions](unit-testing-transactions.html)  
+[TestCase with TestBean inner-class](testcase-with-testbean-inner-class.html)  
+[TestCase Injection (@LocalClient)](local-client-injection.html)  
+}
+}
+{row
+
+{span-one-third
+###Discovery and Failover
+[Overview](ejb-failover.html)  
+[Multicast Discovery (UDP)](multicast-discovery.html)  
+[Multipulse Discovery (UDP)](multipulse-discovery.html)  
+[Multipoint Discovery (TCP)](multipoint-discovery.html)  
+[Multipoint Considerations](multipoint-considerations.html)  
+[Multipoint Recommendations](multipoint-recommendations.html)  
+[Logging Events](failover-logging.html)  
+}
+{span-one-third
+
+###OpenEJB Standalone Server
+[Understanding the Directory Layout](understanding-the-directory-layout.html)  
+[Startup](startup.html)  
+[Deploy Tool](deploy-tool.html)  
+[Properties Tool](properties-tool.html)  
+}
+{span-one-third
+###Spring
+[Spring and OpenEJB 3.0](spring-and-openejb-3.0.html)  
+[Spring and OpenEJB 3.1 and later](spring.html)  
+[Spring, EJB and JPA example](spring-ejb-and-jpa.html)  
+}
+}
+{row
+
+{span-one-third
+###Arquillian
+[Arquillian Primer - What you need to know](arquillian-getting-started.html)  
+[Using the TomEE Arquillian adapters](arquillian-available-adapters.html)  
+}
+{span-one-third
+###TomEE Maven Plugin
+[Getting started](tomee-mp-getting-started.html)  
+[tomee-maven-plugin reference documentation](maven/index.html)  
+[tomee-embedded-maven-plugin reference documentation](tomee-embedded-maven-plugin.html)  
+[TomEE simple webapp archetype documentation](tomee-mp-getting-started.html)  
+}
+{span-one-third
+###Tips and Tricks
+[Install TomEE using the drop-in WAR](installation-drop-in-war.html)  
+[Global Concurrency Management](tip-concurrency.html)  
+[WebLogic Lookup](tip-weblogic.html)  
+[Jersey Client](tip-jersey-client.html)  
+}
+}

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/dynamic-datasource.mdtext
----------------------------------------------------------------------
diff --git a/docs/dynamic-datasource.mdtext b/docs/dynamic-datasource.mdtext
new file mode 100644
index 0000000..1b23333
--- /dev/null
+++ b/docs/dynamic-datasource.mdtext
@@ -0,0 +1,216 @@
+Title: Dynamic Datasource
+<a name="DynamicDatasource-OpenEJBdynamicdatasource"></a>
+# OpenEJB dynamic datasource
+
+<a name="DynamicDatasource-Goal"></a>
+## Goal
+
+The openejb dynamic datasource api aims to allow to use multiple data
+sources as one.
+
+It can be useful for technical reasons (load balancing for example) or
+functionnal reasons (filtering, aggregation, enriching...).
+
+<a name="DynamicDatasource-TheAPI"></a>
+## The API
+
+The interface Router (*org.apache.openejb.resource.jdbc.Router*) have
+only one method to get the datasource to use:
+
+    Router.getDataSource()
+
+The *org.apache.openejb.resource.jdbc.RoutedDataSource* wraps a classical
+data source. It has to be used to declare your datasource.
+
+You can implement all the policy you want in your Router implementation.
+
+A class called *org.apache.openejb.resource.jdbc.AbstractRouter* is
+available to ease router development.
+
+<a name="DynamicDatasource-Knownlimitation(s)"></a>
+## Known limitation(s)
+
+You have to use the same kind of databases (same version, same
+configuration...).
+
+All database have to be created when you use the router. The way to do it
+automatically can depend of your JPA provider.
+
+<a name="DynamicDatasource-OpenJPA"></a>
+### OpenJPA
+
+OpenJPA initializes its database when the entitymanager is called for the
+first time so you need to initialize all your proxied datasource before
+using the other one. It can be done using an Init EJB doing a find() on
+each proxied datasource.
+
+<a name="DynamicDatasource-Hibernate"></a>
+### Hibernate
+
+Hibernate initializes the database when it starts so if you declare a
+persistence unit by database all databases will be initialized at the start
+up.
+
+<a name="DynamicDatasource-Example"></a>
+## Example 
+
+<a name="DynamicDatasource-Thestory(theunittestexample)"></a>
+### The story (the unit test example)
+
+You want to use only one datasource in the code but you have a criteria to
+set to choose the real database to use between three.
+
+So in your code you want something like:
+
+    public class RoutedEJBBean {
+        @PersistenceContext(unitName = "router")
+        private EntityManager em;
+
+        // this router is not automatic, we
+        // need it to select the database to use
+        @Resource(name = "My Router")
+        private DeterminedRouter router;
+
+        public void persist(int id, String name, String clientDatasource) {
+            router.setDataSource(clientDatasource);
+            em.persist(new Person(id, name));
+        }
+    }
+
+
+<a name="DynamicDatasource-Therouterimplementation"></a>
+## The router implementation
+
+The router will simply manage a map to store proxied datasources and a
+field to store the datasource used in the current thread (ThreadLocal).
+
+    public class DeterminedRouter implements Router {
+        private String dataSourceNames; // used to store configuration (openejb.xml)
+        private String defaultDataSourceName; // defautl data source name
+        private Map<String, DataSource> dataSources = null; // proxied data sources
+        private ThreadLocal<DataSource> currentDataSource = new ThreadLocal<DataSource>(); // the datasource to use or null
+
+        /**
+         * @param datasourceList datasource resource name, separator is a space
+         */
+        public void setDataSourceNames(String datasourceList) {
+            dataSourceNames = datasourceList;
+        }
+
+        /**
+         * lookup datasource in openejb resources
+         */
+        private void init() { // looking up datasources declared as proxied
+            dataSources = new ConcurrentHashMap<String, DataSource>();
+            for (String ds : dataSourceNames.split(" ")) {
+                ContainerSystem containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
+
+                Object o = null;
+                Context ctx = containerSystem.getJNDIContext();
+                try {
+                    o = ctx.lookup("openejb:Resource/" + ds);
+                    if (o instanceof DataSource) {
+                        dataSources.put(ds, (DataSource) o);
+                    }
+                } catch (NamingException ignore) {
+                }
+            }
+        }
+
+        /**
+         * @return the user selected data source if it is set
+         *         or the default one
+         *  @throws IllegalArgumentException if the data source is not found
+         */
+        public DataSource getDataSource() {
+            // lazy init of routed datasources
+            if (dataSources == null) {
+                init();
+            }
+
+            // if no datasource is selected use the default one
+            if (currentDataSource.get() == null) {
+                if (dataSources.containsKey(defaultDataSourceName)) {
+                    return dataSources.get(defaultDataSourceName);
+
+                } else {
+                    throw new IllegalArgumentException("you have to specify at least one datasource");
+                }
+            }
+
+            // the developper set the datasource to use
+            return currentDataSource.get();
+        }
+
+        /**
+         *
+         * @param datasourceName data source name
+         */
+        public void setDataSource(String datasourceName) {
+            if (dataSources == null) {
+                init();
+            }
+            if (!dataSources.containsKey(datasourceName)) {
+                throw new IllegalArgumentException("data source called " + datasourceName + " can't be found.");
+            }
+            DataSource ds = dataSources.get(datasourceName);
+            currentDataSource.set(ds);
+        }
+
+        public void setDefaultDataSourceName(String name) {
+            this.defaultDataSourceName = name;
+        }
+    }
+
+
+<a name="DynamicDatasource-Creationoftheserviceproviderfortherouter"></a>
+## Creation of the service provider for the router
+
+To be able to use your router add a file called service-jar.xml under
+META-INF/<package>. For example META-INF/org.router.
+
+This file will contain something like:
+
+    <ServiceJar>
+      <ServiceProvider id="DeterminedRouter" service="Resource"
+    		   type="org.apache.openejb.resource.jdbc.Router" class-name="implementation class">
+        Param defaultValue
+        ParamWithNoDefaultValue
+      </ServiceProvider>
+    </ServiceJar>
+    
+## openejb.xml
+    
+In the openejb.xml file, you have to declare your dynamic database and in
+our example it needs the proxied datasources too:
+    
+    <Resource id="router" type="<your implementation>" provider="<your provider>">
+      Param value
+    </Resource>
+
+    <Resource id="route db" type="DataSource" provider="RoutedDataSource">
+      Router router
+    </Resource>
+
+    <!–- real databases – for our example -->
+    <Resource id="db1" type="DataSource">
+      JdbcDriver org.hsqldb.jdbcDriver
+      JdbcUrl jdbc:hsqldb:mem:db1
+      UserName sa
+      Password
+      JtaManaged true
+    </Resource>
+    <Resource id="db2" type="DataSource">
+      JdbcDriver org.hsqldb.jdbcDriver
+      JdbcUrl jdbc:hsqldb:mem:db2
+      UserName sa
+      Password
+      JtaManaged true
+    </Resource>
+    <Resource id="db3" type="DataSource">
+      JdbcDriver org.hsqldb.jdbcDriver
+      JdbcUrl jdbc:hsqldb:mem:db3
+      UserName sa
+      Password
+      JtaManaged true
+    </Resource>

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/eclipse-plugin.mdtext
----------------------------------------------------------------------
diff --git a/docs/eclipse-plugin.mdtext b/docs/eclipse-plugin.mdtext
new file mode 100644
index 0000000..fb2386d
--- /dev/null
+++ b/docs/eclipse-plugin.mdtext
@@ -0,0 +1,38 @@
+Title: Eclipse Plugin
+<a name="EclipsePlugin-Whatisit?"></a>
+#  What is it?
+
+The *OpenEJB Eclipse Plugin* will be a suite of tools made available via
+Eclipse to make EJB development with OpenEJB easier.  The initial offering
+will probably provide basic functionality by taking advantage of [WebTools](http://www.eclipse.org/webtools)
+ to allow for OpenEJB to be an available container/runtime within Eclipse. 
+This means full debugging and Eclipse project integration.  From there, the
+sky is the limit so feel free to suggest features on the [OpenEJB Dev list|Mailing Lists#MailingLists-DeveloperMailingList]
+.
+
+<a name="EclipsePlugin-Howtogetinvolved?"></a>
+#  How to get involved?
+
+Just the same as getting involved with any part of OpenEJB -- send a mail
+to the [OpenEJB Dev list](mailing-lists#mailinglists-developermailinglist.html)
+ and say "Hi!"	We're a very relaxed group so no need to be perfect or
+overly prepared.  Just dive right in, we're always happy to have more.
+
+<a name="EclipsePlugin-WheredoIgetit?"></a>
+#  Where do I get it?
+
+The initiative is just launching, but you can grab what we have right here
+and start hacking.
+
+  http://svn.apache.org/repos/asf/tomee/openejb-eclipse-plugin/trunk/
+
+<a name="EclipsePlugin-WhatdoIneedtohelp?"></a>
+#  What do I need to help?
+
+ [Eclipse](http://www.eclipse.org)
+ [Eclipse Web Tools](http://www.eclipse.org/webtools)
+
+<a name="EclipsePlugin-Resources"></a>
+#  Resources
+
+ [EclipseCon Presentation for Extending WTP](http://eclipsezilla.eclipsecon.org/show_bug.cgi?id=3581)

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/ejb-failover.mdtext
----------------------------------------------------------------------
diff --git a/docs/ejb-failover.mdtext b/docs/ejb-failover.mdtext
new file mode 100644
index 0000000..924f869
--- /dev/null
+++ b/docs/ejb-failover.mdtext
@@ -0,0 +1,88 @@
+Title: EJB Client/Server Failover
+
+OpenEJB supports stateless failover.  Specifically, the ability for an EJB
+client to failover from one server to the next if a request cannot be
+completed.  No application state information is communicated between the
+servers, so this functionality should be used only with applications that
+are inherently stateless.  A common term for this sort of setup is a server
+farm.
+
+The basic design assumption is that all servers in the same group have the
+same applications deployed and are capable of doing the same job.  Servers
+can be brought online and offline while clients are running.  As members
+join/leave this information is sent to the client as part of normal EJB
+request/response communication so active clients always have the most
+current information on servers that can process their request should
+communication with a particular server fail.
+
+# Client Behavior
+
+On each request to the server, the client will send the version number
+associated with the list of servers in the cluster it is aware of. 
+Initially this version will be zero and the list will be empty.  Only when
+the server sees the client has an old list will the server send the updated
+list.  This is an important distinction as the list is not transmitted back
+and forth on every request, only on change.  If the membership of the
+cluster is stable there is essentially no clustering overhead to the
+protocol -- 8 byte overhead to each request and 1 byte on each response --
+so you will *not* see an exponential slowdown in response times the more
+members are added to the cluster.  This new list takes affect for all
+proxies that share the same connection.
+
+When a server shuts down, more connections are refused, existing
+connections not in mid-request are closed, any remaining connections are
+closed immediately after completion of the request in progress and clients
+can failover gracefully to the next server in the list.  If a server
+crashes requests are retried on the next server in the list (or depending
+on the `ConnectionStrategy`).  This failover pattern is followed until there
+are no more servers in the list at which point the client attempts a final
+multicast search (if it was created with a `PROVIDER_URL` starting with
+`multicast://`) before abandoning the request and throwing an exception to
+the caller.
+
+By default, the failover is ordered but random selection is supported.	The
+multicast discovery aspect of the client adds a nice randomness to the
+selection of the first server.
+
+# Discovery
+
+Each discoverable service has a URI which is broadcast as a heartbeat to
+other servers in the cluster.  This URI advertises the service's type, its
+cluster group, and its location in the format of 'group:type:location'. 
+Say for example "cluster1:ejb:ejbd://thehost:4201".  The URI is sent out
+repeatedly in a pulse and its presence on the network indicates its
+availability and its absence indicates the service is no longer available.
+
+The sending of this pulse (the heartbeat) can be done via UDP or TCP:
+multicast and "multipoint" respectively.  More on that in the following
+section.  The rate at which the heartbeat is pulsed to the network can be
+specified via the 'heart_rate' property.  The default is 500 milliseconds. 
+This rate is also used when listening for services on the network.  If a
+service goes missing for the duration of 'heart_rate' multiplied by
+'max_missed_heartbeats', then the service is considered dead.
+
+The 'group' property, cluster1 in the example, is used to dissect the
+servers on the network into smaller logical clusters.  A given server will
+broadcast all it's services with the group prefixed in the URI, as well it
+will ignore any services it sees broadcast if they do not share the same
+group name.
+
+#Details
+
+Multicast
+
+ - [Multicast UDP Discovery](multicast-discovery.html)
+ - [Multipulse UDP Discovery](multipulse-discovery.html)
+
+Multipoint
+
+ - [Multipoint TCP Discovery](multipoint-discovery.html)
+ - [Considerations](multipoint-considerations.html)
+ - [Recommendations](multipoint-recommendations.html)
+
+Logging
+
+ - [Failover Logging Events](failover-logging.html)
+
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/ejb-local-ref.mdtext
----------------------------------------------------------------------
diff --git a/docs/ejb-local-ref.mdtext b/docs/ejb-local-ref.mdtext
new file mode 100644
index 0000000..986cb78
--- /dev/null
+++ b/docs/ejb-local-ref.mdtext
@@ -0,0 +1,49 @@
+Title: ejb-local-ref
+<a name="ejb-local-ref-Viaannotation"></a>
+#  Via annotation
+
+Usable by EJB, Interceptor, Servlet, Filter, or Listener
+
+    package org.superbiz.refs;
+
+    import javax.ejb.EJB;
+    import javax.ejb.Stateless;
+    import javax.naming.InitialContext;
+
+    @Stateless
+    @EJB(name = "myFooEjb", beanInterface = FooLocal.class)
+    public class MyEjbLocalRefBean implements MyBeanInterface {
+
+        @EJB
+        private BarLocal myBarEjb;
+
+        public void someBusinessMethod() throws Exception {
+            if (myBarEjb == null) throw new NullPointerException("myBarEjb not injected");
+
+            // Both can be looked up from JNDI as well
+            InitialContext context = new InitialContext();
+            FooLocal fooLocal = (FooLocal) context.lookup("java:comp/env/myFooEjb");
+            BarLocal barLocal = (BarLocal) context.lookup("java:comp/env/org.superbiz.refs.MyEjbLocalRefBean/myBarEjb");
+        }
+    }
+
+
+<a name="ejb-local-ref-Viaxml"></a>
+# Via xml
+
+The above @EJB annotation usage is 100% equivalent to the following xml.
+
+    <ejb-local-ref>
+      <ejb-ref-name>myFooEjb</ejb-ref-name>
+      <local>org.superbiz.refs.FooLocal</local>
+    </ejb-local-ref>
+
+    <ejb-local-ref>
+      <ejb-ref-name>org.superbiz.refs.MyEjbLocalRefBean/myBarEjb</ejb-ref-name>
+      <local>org.superbiz.refs.BarLocal</local>
+      <injection-target>
+        <injection-target-class>org.superbiz.refs.MyEjbLocalRefBean</injection-target-class>
+        <injection-target-name>myBarEjb</injection-target-name>
+      </injection-target>
+    </ejb-local-ref>
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/ejb-over-ssl.mdtext
----------------------------------------------------------------------
diff --git a/docs/ejb-over-ssl.mdtext b/docs/ejb-over-ssl.mdtext
new file mode 100644
index 0000000..8dd5cb9
--- /dev/null
+++ b/docs/ejb-over-ssl.mdtext
@@ -0,0 +1,96 @@
+Title: EJB over SSL
+
+It is possible to setup client/server requests over SSL.  EJB requests from a remote client can happen two different ways:
+
+ - **https** for when an EJB is running in TomEE
+ - **ejbds** for when an EJB is running in OpenEJB Standalone
+
+Note, TomEE can be setup to support **ejbds**.
+
+# https
+
+First, you'll need to setup Tomcat (TomEE) with SSL as described here:
+
+  [http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html](http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html)
+
+Once that is done and the `tomee` webapp can be accessed with `https`, an EJB client can invoke over `https` using the following
+`InitialContext` setup:
+
+
+    Properties p = new Properties();
+    p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
+    p.put("java.naming.provider.url", "https://127.0.0.1:8443/tomee/ejb");
+    // user and pass optional
+    p.put("java.naming.security.principal", "myuser");
+    p.put("java.naming.security.credentials", "mypass");
+
+    InitialContext ctx = new InitialContext(p);
+
+    MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote");
+
+If you setup Tomcat (TomEE) to use the APR (Apache Portable Runitme) implementation of SSL on the server side, and you have connection issues like connection reset, you'll have to set 'https.protocols' system property.
+'https.protocols' property must be set according to the SSLProtocol parameter of the HTTPS connector configuration :
+
+[http://tomcat.apache.org/tomcat-7.0-doc/config/http.html][1]
+
+You can also have a look a this : 
+
+[http://docs.oracle.com/javase/1.4.2/docs/guide/plugin/developer_guide/faq/troubleshooting.html][2]
+
+# ejbds
+
+The SSL version of the `ejbd` protocol is called `ejbds` and is enabled and setup in OpenEJB Standalone by default.
+
+Its configuration `conf/ejbds.properties` looks like this:
+
+    server      = org.apache.openejb.server.ejbd.EjbServer
+    bind        = 127.0.0.1
+    port        = 4203
+    disabled    = false
+    threads     = 200
+    backlog     = 200
+    secure      = true
+    discovery   = ejb:ejbds://{bind}:{port}
+
+To access this service from a remote client, the `InitialContext` would be setup like the following:
+
+    Properties p = new Properties();
+    p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
+    p.put("java.naming.provider.url", "ejbd://localhost:4201");
+    // user and pass optional
+    p.put("java.naming.security.principal", "myuser");
+    p.put("java.naming.security.credentials", "mypass");
+
+    InitialContext ctx = new InitialContext(p);
+
+    MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote");
+
+## Changing the Cipher Suite
+[This is a pending feature](https://issues.apache.org/jira/browse/OPENEJB-1856)
+By default, the ejbds protocol connects with SSL_DH_anon_WITH_RC4_128_MD5. That means your connection is encrypted and the integrity of the transmission is verified. However, this only protects your from eavesdroppers, it offers absolutely zero protection from Man in the Middle attacks. This sort of attack could be pulled off without your knowledge and the attacker has the ability to intercept, monitor, and even modify your messages. If the attacker could control a router on your connection path, this attack could be trivially pulled off with nothing more but the OpenEJB server and client.
+
+To secure your connections against this sort of attack, your client can cryptographically prove it's talking to the correct server before sending any data. To do this, simply select one or more secure cipher suites that your J2SE provider supports from [this listing](http://docs.oracle.com/cd/E19728-01/820-2550/cipher_suites.html).
+
+You must now instruct the client and server to use that suite.
+
+On the server:
+
+    server      = org.apache.openejb.server.ejbd.EjbServer
+    bind        = 127.0.0.1
+    port        = 4203
+    disabled    = false
+    threads     = 200
+    backlog     = 200
+    secure      = true
+    enabledCipherSuites = TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA
+    discovery   = ejb:ejbds://{bind}:{port}
+
+On the client, you must supply a property:
+
+    -Dopenejb.client.enabledCipherSuites=TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA
+
+The final piece is to make sure your server has available a private certificate that the the client can trust. This can be certificate from an authority or a self signed certificate. The javax.net.ssl.trustStore and javax.net.ssl.keyStore JVM properties [are used to set this up.](http://fusesource.com/docs/broker/5.3/security/SSL-SysProps.html)
+
+
+  [1]: http://tomcat.apache.org/tomcat-7.0-doc/config/http.html
+  [2]: http://docs.oracle.com/javase/1.4.2/docs/guide/plugin/developer_guide/faq/troubleshooting.html
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/ejb-ref.mdtext
----------------------------------------------------------------------
diff --git a/docs/ejb-ref.mdtext b/docs/ejb-ref.mdtext
new file mode 100644
index 0000000..01b9c3b
--- /dev/null
+++ b/docs/ejb-ref.mdtext
@@ -0,0 +1,47 @@
+Title: ejb-ref
+<a name="ejb-ref-Viaannotation"></a>
+#  Via annotation
+
+    package org.superbiz.refs;
+
+    import javax.ejb.EJB;
+    import javax.ejb.Stateless;
+    import javax.naming.InitialContext;
+
+    @Stateless
+    @EJB(name = "myFooEjb", beanInterface = FooRemote.class)
+    public class MyEjbRemoteRefBean implements MyBeanInterface {
+
+        @EJB
+        private BarRemote myBarEjb;
+
+        public void someBusinessMethod() throws Exception {
+            if (myBarEjb == null) throw new NullPointerException("myBarEjb not injected");
+
+            // Both can be looked up from JNDI as well
+            InitialContext context = new InitialContext();
+            FooRemote fooRemote = (FooRemote) context.lookup("java:comp/env/myFooEjb");
+            BarRemote barRemote = (BarRemote) context.lookup("java:comp/env/org.superbiz.refs.MyEjbRemoteRefBean/myBarEjb");
+        }
+    }
+
+
+<a name="ejb-ref-Viaxml"></a>
+# Via xml
+
+The above @EJB annotation usage is 100% equivalent to the following xml.
+
+    <ejb-ref>
+        <ejb-ref-name>myFooEjb</ejb-ref-name>
+        <remote>org.superbiz.refs.FooRemote</remote>
+    </ejb-ref>
+    <ejb-ref>
+
+    <ejb-ref-name>org.superbiz.refs.MyEjbRemoteRefBean/myBarEjb</ejb-ref-name>
+        <remote>org.superbiz.refs.BarRemote</remote>
+        <injection-target>
+          <injection-target-class>org.superbiz.refs.MyEjbRemoteRefBean</injection-target-class>
+          <injection-target-name>myBarEjb</injection-target-name>
+        </injection-target>
+    </ejb-ref>
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/ejb-refs.mdtext
----------------------------------------------------------------------
diff --git a/docs/ejb-refs.mdtext b/docs/ejb-refs.mdtext
new file mode 100644
index 0000000..c60c634
--- /dev/null
+++ b/docs/ejb-refs.mdtext
@@ -0,0 +1,174 @@
+Title: EJB Refs
+
+TomEE complains it doesn't know the container type, so I added type="javax.naming.InitialContext" and it worked (mostly).
+<a name="EJBRefs-Referencingabeaninanotherjar(withannotations)"></a>
+## Referencing a bean in another jar (with annotations)
+
+When using annotations to reference a bean from another ejb in your ear you
+have to supplement the @EJB reference with a small chunk of xml in the
+ejb-jar.xml of the referring bean.
+
+So in ejb app A colorsApp.jar you have this bean:
+
+
+    package com.foo.colors;
+    
+    import javax.ejb.Stateless;
+    
+    @Stateless
+    public class OrangeBean implements OrangeRemote {
+    }
+
+
+Then in ejb app B shapesApp.jar you have this bean with a reference to
+OrangeRemote:
+
+
+    package com.foo.shapes;
+    
+    import javax.ejb.Stateless;
+    import com.foo.colors.OrangeRemote;
+    
+    @Stateless
+    public class SquareBean implements SquareRemote {
+        @EJB OrangeRemote orangeRemote;
+    }
+
+
+To hook this reference up you need to override this ref and add more info
+in the ejb-jar.xml of shapesApp.jar as follows:
+
+
+    <ejb-jar>
+      <enterprise-beans>
+    
+        <session>
+          <ejb-name>SquareBean</ejb-name>
+          <ejb-ref>
+    	<ejb-ref-name>com.foo.shapes.SquareBean/orangeRemote</ejb-ref-name>
+    	<ejb-link>colorsApp.jar#OrangeBean</ejb-link>
+          </ejb-ref>
+        </session>
+    
+      </enterprise-beans>
+    </ejb-jar>
+
+
+<a name="EJBRefs-Referencingabeaninanotherjar(xmlonly,noannotations)"></a>
+## Referencing a bean in another jar (xml only, no annotations)
+
+The same basic approach applies and dependency injection is still possible,
+however more information must be described in the xml.
+
+
+In ejb app A colorsApp.jar you have this bean:
+
+
+    package com.foo.colors;
+    
+    import javax.ejb.Stateless;
+    
+    @Stateless
+    public class OrangeBean implements OrangeRemote {
+    }
+
+
+Then in ejb app B shapesApp.jar -- note there is no @EJB annotation:
+
+
+    package com.foo.shapes;
+    
+    import javax.ejb.Stateless;
+    import com.foo.colors.OrangeRemote;
+    
+    @Stateless
+    public class SquareBean implements SquareRemote {
+        OrangeRemote orangeRemote;
+    }
+
+
+Here's how you would hook this reference up, injection and all, with just
+xml.  The following would be added to the ejb-jar.xml of shapesApp.jar:
+
+
+    <ejb-jar>
+      <enterprise-beans>
+
+        <session>
+          <ejb-name>SquareBean</ejb-name>
+          <ejb-ref>
+            <ejb-ref-name>com.foo.shapes.SquareBean/orangeRemote</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <remote>com.foo.colors.OrangeRemote</remote>
+            <ejb-link>colorsApp.jar#OrangeBean</ejb-link>
+            <injection-target>
+              <injection-target-class>com.foo.shapes.SquareBean</injection-target-class>
+              <injection-target-name>orangeRemote</injection-target-name>
+            </injection-target>
+          </ejb-ref>
+        </session>
+
+      </enterprise-beans>
+    </ejb-jar>
+
+
+Note that the value of <ejb-ref-name> could actually be anything and the
+above example would still work as there is no annotation that needs to
+match the <ejb-ref-name> and no one will likely be looking up the EJB as
+it's injected.
+
+# Referencing a bean in another server
+
+As of OpenEJB 4.0.0-beta-3, server to server references work.
+
+First we need to configure and name the InitialContext that will be used to satisfy the lookup to the other server.
+
+In this example we are calling our InitialContext `shoe` for fun.
+
+    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+    <openejb>
+
+      <JndiProvider id="shoe" type="javax.naming.InitialContext">
+        java.naming.provider.url = ejbd://localhost:4201
+        java.naming.factory.initial = org.apache.openejb.client.RemoteInitialContextFactory
+      </JndiProvider>
+
+    </openejb>
+
+Declaring the `@EJB` reference is then done using a `mappedName`  that references the named `InitialContext`
+
+    public class BlueBean implements BlueRemote {
+
+        @EJB(mappedName = "jndi:ext://shoe/OrangeBeanRemote")
+        private OrangeRemote orangeRemote;
+
+        public void hasOrangeRemote() {
+            Assert.assertNotNull("orangeRemote is null", orangeRemote);
+            assertEquals("olleh", orangeRemote.echo("hello"));
+        }
+    }
+
+Specifically, the `mappedName` syntax is as follows:
+
+ - jndi:ext://`<contextId>`/`<jndiName>`
+
+
+## Referencing a bean in "many" servers
+
+Note the above also works with the various forms of failover that TomEE supports.
+
+If say, there are two servers that have the `OrangeBeanRemote` bean, you could expand the `<JndiProvider>` delcaration like so:
+
+      <JndiProvider id="shoe" type="javax.naming.InitialContext">
+        java.naming.provider.url = failover:ejbd://192.168.1.20:4201,ejbd://192.168.1.30:4201
+        java.naming.factory.initial = org.apache.openejb.client.RemoteInitialContextFactory
+      </JndiProvider>
+
+In the event that the `ejbd://192.168.1.20:4201` server cannot be contacted, the second server will be tried.
+
+This sort of arangement can also happen dynamicall against a list of servers that continuously grows and shrinks.  The server list is maintained behind
+the scenes using server discovery logic that can function on either UDP or TCP.  See these docs for more details on Failover and Discovery:
+
+ - [Multicast Discovery (UDP)](multicast-discovery.html)
+ - [Multipulse Discovery (TCP)](multipulse-discovery.html)
+ - [Multipoint Discovery (TCP)](multipoint-discovery.html)

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/ejb-request-logging.mdtext
----------------------------------------------------------------------
diff --git a/docs/ejb-request-logging.mdtext b/docs/ejb-request-logging.mdtext
new file mode 100644
index 0000000..76e8695
--- /dev/null
+++ b/docs/ejb-request-logging.mdtext
@@ -0,0 +1,94 @@
+Title: EJB Request Logging
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+Both client-side and server-side request logging is supported and includes various invocation times aimed at helping to identify where time
+is going in a request.
+
+## Client-side
+
+On the client requests/responses are logged on java.util.logging `FINEST` level in category `OpenEJB.client`.  The code is similar to the following:
+
+    final long time = System.nanoTime() - start;
+    final String message = String.format("Invocation %sns - %s - Request(%s) - Response(%s)", time, conn.getURI(), req, res);
+    logger.log(Level.FINEST, message);
+
+Note that the check to see if FINEST is enabled is cached for performance reasons, so it must be set at VM startup.
+
+## Server-side
+
+On the server requests/responses are logged in java.util.logging `FINE` in category`"OpenEJB.server.remote.ejb`.  The code for that
+is similar to this:
+
+    logger.fine("EJB REQUEST: " + req + " -- RESPONSE: " + res);
+
+## Request times
+
+Three times are tracked per request and logged in the above statements as part of the formatting of the EJB Response.  They're best understood in reverse:
+
+ - **Container time** -- this is the raw time of invoking the bean including its 
+interceptors and any transaction begin/commit time.  This time is effectively "business logic".
+ - **Server time** -- this timer starts the (nano)second the request is seen by the server and
+ the (nano)second the response is actually written.  The serverTime minus the containerTime will 
+effectively show you how long serialization and deserialization is taking pre request.
+ - **Client time** -- entire begin to end including attempting to contact the server and fully reading the response.  The clientTime minus the serverTime will show network latency for the most part.
+
+The container time and server time are written in the EJB response and visible to the client.  The client will log all three times, the server will log the first two.  All log statements are on a single line.
+
+## Bean-time and JMX Statistics
+
+The above information applies purely to remote EJB calls made over a network.  Calls on `@Remote` or `@Local` interfaces between two components in the same server are not logged.
+
+However, **all** EJB invocations to business methods *or* callbacks like `@PostConstruct` are tracked for statistical analysis.
+By default a floating window of 2000 samples are kept.  The time tracked is purely **bean time** which includes 
+interceptors, decorators and the bean itself, but does not include other container services like transactions or security.  
+
+This information is available in JMX.  A sample JMX ObjectName for a `CounterBean` will look like this:
+
+    openejb.management:J2EEServer=openejb,J2EEApplication=null,EJBModule=StatsModule,StatelessSessionBean=CounterBean,j2eeType=Invocations,name=CounterBean
+
+All beans have the following MBean attributes, listed here in shorthand:
+
+ * javax.management.MBeanAttributeInfo[description=, name=InvocationCount, type=long, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=InvocationTime, type=long, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=MonitoredMethods, type=long, read-only, descriptor={}]
+ * javax.management.MBeanOperationInfo[description=, name=FilterAttributes, returnType=void, signature=[javax.management.MBeanParameterInfo[description="", name=excludeRegex, type=java.lang.String, descriptor={}], javax.management.MBeanParameterInfo[description="", name=includeRegex, type=java.lang.String, descriptor={}]], impact=unknown, descriptor={}]
+
+Then for every method there will be these attributes and operations:
+
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().Count, type=long, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().GeometricMean, type=double, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().Kurtosis, type=double, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().Max, type=double, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().Mean, type=double, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().Min, type=double, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().Percentile01, type=double, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().Percentile10, type=double, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().Percentile25, type=double, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().Percentile50, type=double, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().Percentile75, type=double, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().Percentile90, type=double, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().Percentile99, type=double, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().SampleSize, type=int, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().Skewness, type=double, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().StandardDeviation, type=double, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().Sum, type=double, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().Sumsq, type=double, read-only, descriptor={}]
+ * javax.management.MBeanAttributeInfo[description=, name=someMethod().Variance, type=double, read-only, descriptor={}]
+ * javax.management.MBeanOperationInfo[description=, name=someMethod().setSampleSize, returnType=void, signature=[javax.management.MBeanParameterInfo[description=, name=p1, type=int, descriptor={}]], impact=unknown, descriptor={}]
+ * javax.management.MBeanOperationInfo[description=, name=someMethod().sortedValues, returnType=[D, signature=[], impact=unknown, descriptor={}]
+ * javax.management.MBeanOperationInfo[description=, name=someMethod().values, returnType=[D, signature=[], impact=unknown, descriptor={}]


[15/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/datasource-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/datasource-config.mdtext b/docs/datasource-config.mdtext
new file mode 100644
index 0000000..9f0cebd
--- /dev/null
+++ b/docs/datasource-config.mdtext
@@ -0,0 +1,537 @@
+Title: DataSource Configuration
+
+A DataSource can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <Resource id="myDataSource" type="javax.sql.DataSource">
+        accessToUnderlyingConnectionAllowed = false
+        alternateUsernameAllowed = false
+        connectionProperties = 
+        defaultAutoCommit = true
+        defaultReadOnly = 
+        definition = 
+        ignoreDefaultValues = false
+        initialSize = 0
+        jdbcDriver = org.hsqldb.jdbcDriver
+        jdbcUrl = jdbc:hsqldb:mem:hsqldb
+        jtaManaged = true
+        maxActive = 20
+        maxIdle = 20
+        maxOpenPreparedStatements = 0
+        maxWaitTime = -1 millisecond
+        minEvictableIdleTime = 30 minutes
+        minIdle = 0
+        numTestsPerEvictionRun = 3
+        password = 
+        passwordCipher = PlainText
+        poolPreparedStatements = false
+        serviceId = 
+        testOnBorrow = true
+        testOnReturn = false
+        testWhileIdle = false
+        timeBetweenEvictionRuns = -1 millisecond
+        userName = sa
+        validationQuery = 
+    </Resource>
+
+Alternatively, a DataSource can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    myDataSource = new://Resource?type=javax.sql.DataSource
+    myDataSource.accessToUnderlyingConnectionAllowed = false
+    myDataSource.alternateUsernameAllowed = false
+    myDataSource.connectionProperties = 
+    myDataSource.defaultAutoCommit = true
+    myDataSource.defaultReadOnly = 
+    myDataSource.definition = 
+    myDataSource.ignoreDefaultValues = false
+    myDataSource.initialSize = 0
+    myDataSource.jdbcDriver = org.hsqldb.jdbcDriver
+    myDataSource.jdbcUrl = jdbc:hsqldb:mem:hsqldb
+    myDataSource.jtaManaged = true
+    myDataSource.maxActive = 20
+    myDataSource.maxIdle = 20
+    myDataSource.maxOpenPreparedStatements = 0
+    myDataSource.maxWaitTime = -1 millisecond
+    myDataSource.minEvictableIdleTime = 30 minutes
+    myDataSource.minIdle = 0
+    myDataSource.numTestsPerEvictionRun = 3
+    myDataSource.password = 
+    myDataSource.passwordCipher = PlainText
+    myDataSource.poolPreparedStatements = false
+    myDataSource.serviceId = 
+    myDataSource.testOnBorrow = true
+    myDataSource.testOnReturn = false
+    myDataSource.testWhileIdle = false
+    myDataSource.timeBetweenEvictionRuns = -1 millisecond
+    myDataSource.userName = sa
+    myDataSource.validationQuery = 
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared DataSource a warning will be logged.  If a DataSource is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple DataSource declarations are allowed.
+
+See the [Common DataSource Configurations](common-datasource-configurations.html) page for examples of configuring datasources for Derby, MySQL, Oracle and other common databases.
+
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+<tr>
+  <td><a href="#accessToUnderlyingConnectionAllowed">accessToUnderlyingConnectionAllowed</a></td>
+  <td>boolean</td>
+  <td>false</td>
+  <td>
+If true the raw physical connection to the database can be
+accessed
+</td>
+</tr>
+</tr>
+<tr>
+  <td><a href="#alternateUsernameAllowed">alternateUsernameAllowed</a></td>
+  <td>boolean</td>
+  <td>false</td>
+  <td>
+If true allow an alternate username and password to be specified on the connection, rather than those specified in the DataSource definition..
+</td>
+</tr>
+<tr>
+  <td><a href="#connectionProperties">connectionProperties</a></td>
+  <td>String</td>
+  <td></td>
+  <td>
+The connection properties that will be sent to the JDBC
+driver when establishing new connections
+</td>
+</tr>
+<tr>
+  <td>defaultAutoCommit</td>
+  <td>boolean</td>
+  <td>true</td>
+  <td>
+The default auto-commit state of new connections
+</td>
+</tr>
+<tr>
+  <td>defaultReadOnly</td>
+  <td>String</td>
+  <td></td>
+  <td>
+The default read-only state of new connections
+If not set then the setReadOnly method will not be called.
+(Some drivers don't support read only mode, ex: Informix)
+</td>
+</tr>
+<tr>
+  <td>definition</td>
+  <td>String</td>
+  <td></td>
+  <td>
+
+</td>
+</tr>
+<tr>
+  <td>ignoreDefaultValues</td>
+  <td>boolean</td>
+  <td>false</td>
+  <td>
+use only all set values in this config
+will need a lot of properties but allow to not set some values
+</td>
+</tr>
+<tr>
+  <td><a href="#initialSize">initialSize</a></td>
+  <td>int</td>
+  <td>0</td>
+  <td>
+The size to reach when creating the datasource.
+</td>
+</tr>
+<tr>
+  <td>jdbcDriver</td>
+  <td>String</td>
+  <td>org.hsqldb.jdbcDriver</td>
+  <td>
+Driver class name
+</td>
+</tr>
+<tr>
+  <td>jdbcUrl</td>
+  <td>java.net.URI</td>
+  <td>jdbc:hsqldb:mem:hsqldb</td>
+  <td>
+Url for creating connections
+</td>
+</tr>
+<tr>
+  <td><a href="#jtaManaged">jtaManaged</a></td>
+  <td>boolean</td>
+  <td>true</td>
+  <td>
+Determines wether or not this data source should be JTA managed
+or user managed.
+</td>
+</tr>
+<tr>
+  <td>maxActive</td>
+  <td>int</td>
+  <td>20</td>
+  <td>
+The maximum number of active connections that can be
+allocated from this pool at the same time, or a negative
+number for no limit. N.B. When using dbcp2 with TomEE 7 ("DataSourceCreator dbcp"), "MaxTotal" should be used as opposed to "MaxActive".
+</td>
+</tr>
+<tr>
+  <td>maxIdle</td>
+  <td>int</td>
+  <td>20</td>
+  <td>
+The maximum number of connections that can remain idle in
+the pool, without extra ones being released, or a negative
+number for no limit.
+</td>
+</tr>
+<tr>
+  <td><a href="#maxOpenPreparedStatements">maxOpenPreparedStatements</a></td>
+  <td>int</td>
+  <td>0</td>
+  <td>
+The maximum number of open statements that can be allocated
+from the statement pool at the same time, or zero for no
+limit.
+</td>
+</tr>
+<tr>
+  <td>maxWaitTime</td>
+  <td><a href="configuring-durations.html">time</a></td>
+  <td>-1&nbsp;millisecond</td>
+  <td>
+The maximum number of time that the pool will wait
+(when there are no available connections) for a connection
+to be returned before throwing an exception, or -1 to wait
+indefinitely.
+</td>
+</tr>
+<tr>
+  <td>minEvictableIdleTime</td>
+  <td><a href="configuring-durations.html">time</a></td>
+  <td>30&nbsp;minutes</td>
+  <td>
+The minimum amount of time a connection may sit idle in the
+pool before it is eligable for eviction by the idle
+connection evictor (if any).
+</td>
+</tr>
+<tr>
+  <td>minIdle</td>
+  <td>int</td>
+  <td>0</td>
+  <td>
+The minimum number of connections that can remain idle in
+the pool, without extra ones being created, or zero to
+create none.
+</td>
+</tr>
+<tr>
+  <td>numTestsPerEvictionRun</td>
+  <td>int</td>
+  <td>3</td>
+  <td>
+The number of connectionss to examine during each run of the
+idle connection evictor thread (if any).
+</td>
+</tr>
+<tr>
+  <td>password</td>
+  <td>String</td>
+  <td></td>
+  <td>
+Default password
+</td>
+</tr>
+<tr>
+  <td>passwordCipher</td>
+  <td>String</td>
+  <td>PlainText</td>
+  <td>
+
+</td>
+</tr>
+<tr>
+  <td><a href="#poolPreparedStatements">poolPreparedStatements</a></td>
+  <td>boolean</td>
+  <td>false</td>
+  <td>
+If true, a statement pool is created for each Connection and
+PreparedStatements created by one of the following methods are
+pooled:
+</td>
+</tr>
+<tr>
+  <td>serviceId</td>
+  <td>String</td>
+  <td></td>
+  <td>
+
+</td>
+</tr>
+<tr>
+  <td><a href="#testOnBorrow">testOnBorrow</a></td>
+  <td>boolean</td>
+  <td>true</td>
+  <td>
+If true connections will be validated before being returned
+from the pool. If the validation fails, the connection is
+destroyed, and a new conection will be retrieved from the
+pool (and validated).
+</td>
+</tr>
+<tr>
+  <td><a href="#testOnReturn">testOnReturn</a></td>
+  <td>boolean</td>
+  <td>false</td>
+  <td>
+If true connections will be validated before being returned
+to the pool.  If the validation fails, the connection is
+destroyed instead of being returned to the pool.
+</td>
+</tr>
+<tr>
+  <td><a href="#testWhileIdle">testWhileIdle</a></td>
+  <td>boolean</td>
+  <td>false</td>
+  <td>
+If true connections will be validated by the idle connection
+evictor (if any). If the validation fails, the connection is
+destroyed and removed from the pool
+</td>
+</tr>
+<tr>
+  <td>timeBetweenEvictionRuns</td>
+  <td><a href="configuring-durations.html">time</a></td>
+  <td>-1&nbsp;millisecond</td>
+  <td>
+The number of milliseconds to sleep between runs of the idle
+connection evictor thread. When set to a negative number, no
+idle connection evictor thread will be run.
+</td>
+</tr>
+<tr>
+  <td>userName</td>
+  <td>String</td>
+  <td>sa</td>
+  <td>
+Default user name
+</td>
+</tr>
+<tr>
+  <td>validationQuery</td>
+  <td>String</td>
+  <td></td>
+  <td>
+The SQL query that will be used to validate connections from
+this pool before returning them to the caller. If specified,
+this query MUST be an SQL SELECT statement that returns at
+least one row.
+</td>
+</tr>
+<tr>
+<td>LogSql</td>
+<td>boolean</td>
+<td>false</td>
+<td>Wether SQL queries should be logged or not</td>
+</tr>
+</table>
+
+
+
+<a name="accessToUnderlyingConnectionAllowed"></a>
+## accessToUnderlyingConnectionAllowed
+
+If true the raw physical connection to the database can be
+accessed using the following construct:
+
+    Connection conn = ds.getConnection();
+    Connection rawConn = ((DelegatingConnection) conn).getInnermostDelegate();
+    ...
+    conn.close()
+
+Default is false, because misbehaving programs can do harmfull
+things to the raw connection shuch as closing the raw
+connection or continuing to use the raw connection after it
+has been assigned to another logical connection.  Be careful
+and only use when you need direct access to driver specific
+extensions.
+
+NOTE: Do NOT close the underlying connection, only the
+original logical connection wrapper.
+
+
+<a name="connectionProperties"></a>
+## connectionProperties
+
+The connection properties that will be sent to the JDBC
+driver when establishing new connections
+
+Format of the string must be [propertyName=property;]*
+
+NOTE - The "user" and "password" properties will be passed
+explicitly, so they do not need to be included here.
+
+
+<a name="TransactionIsolation"></a>
+## TransactionIsolation
+
+
+The default TransactionIsolation state of new connections.
+
+If not set then the `setTransactionIsolation` method will not
+be called. The allowed values for this property are:
+
+- `NONE`
+- `READ_COMMITTED`
+- `READ_UNCOMMITTED`
+- `REPEATABLE_READ`
+- `SERIALIZABLE`
+
+Note: Most JDBC drivers do not support all isolation levels
+DefaultTransactionIsolation
+
+<a name="initialSize"></a>
+## initialSize
+
+The initial size to initialize the pool of connections.
+
+<a name="jtaManaged"></a>
+## jtaManaged
+
+Determines wether or not this data source should be JTA managed
+or user managed.
+
+If set to 'true' it will automatically be enrolled
+in any ongoing transactions.  Calling begin/commit/rollback or setAutoCommit
+on the datasource or connection will not be allowed.  If you need to perform
+these functions yourself, set `JtaManaged` to `false`
+
+In terms of JPA persistence.xml:
+
+- `JtaManaged=true` can be used as a 'jta-data-source'
+- `JtaManaged=false` can be used as a 'non-jta-data-source'
+
+
+<a name="maxOpenPreparedStatements"></a>
+## maxOpenPreparedStatements
+
+The maximum number of open statements that can be allocated
+from the statement pool at the same time, or zero for no
+limit.
+
+NOTE - Some drivers have limits on the number of open
+statements, so make sure there are some resources left
+for the other (non-prepared) statements.
+
+
+<a name="poolPreparedStatements"></a>
+## poolPreparedStatements
+
+If true, a statement pool is created for each Connection and
+PreparedStatements created by one of the following methods are
+pooled:
+
+    public PreparedStatement prepareStatement(String sql);
+    public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency)
+
+
+<a name="testOnBorrow"></a>
+## testOnBorrow
+
+If true connections will be validated before being returned
+from the pool. If the validation fails, the connection is
+destroyed, and a new conection will be retrieved from the
+pool (and validated).
+
+NOTE - for a true value to have any effect, the
+ValidationQuery parameter must be set.
+
+
+<a name="testOnReturn"></a>
+## testOnReturn
+
+If true connections will be validated before being returned
+to the pool.  If the validation fails, the connection is
+destroyed instead of being returned to the pool.
+
+NOTE - for a true value to have any effect, the
+ValidationQuery parameter must be set.
+
+
+<a name="testWhileIdle"></a>
+## testWhileIdle
+
+If true connections will be validated by the idle connection
+evictor (if any). If the validation fails, the connection is
+destroyed and removed from the pool
+
+NOTE - for a true value to have any effect, the
+timeBetweenEvictionRunsMillis property must be a positive
+number and the ValidationQuery parameter must be set.
+
+# XADataSource
+
+There are several ways to configure a XADataSource. Depending the underlying datasource (Oracle, MySQL one or the other
+solution can be more adapted.
+
+This part deals with `JtaManaged` XaDataSource since a not managed XaDataSource can be defined as a standard
+resource using `class-name`.
+
+## Single definition
+
+First solution is to define as `JdbcDriver` an XADataSource:
+
+    <Resource id="myXaDs" type="DataSource">
+        JdbcDriver = org.foo.MyXaDataSource
+
+        myXaProperty = value
+
+        myPoolProperty = 10
+    </Resource>
+
+This solution merges properties for the XaDataSource and the pool (tomcat-jdbc for TomEE, dbcp for OpenEJB by default
+but still configurable with DataSourceCreator).
+
+Note: in this case for Oracle for instance you'll define UserName for the pool and User for the datasource which
+can look weird if you don't know properties are used for 2 instances (pool and datasource).
+
+Note: this solution uses the same logic than @DataSourceDefinition factory mecanism.
+
+## Two resources definition
+
+An alternative is to define a resource for the XaDataSource:
+
+    <Resource id="myXa" class-name="org.foo.MyXaDataSource">
+        myXaProperty = value
+    </Resource>
+
+And then wrap it in the pool:
+
+    <Resource id="myXaDs" type="DataSource">
+        DataSourceCreator = [dbcp|dbcp-alternative]
+        myPoolProperty = 10
+    </Resource>
+
+Note: `dbcp` is more adapted than `dbcp-alternative` in most of the case because it is reusing direct dbcp JTA management.
+
+## Known issues
+
+For TomEE 1.7.0/1.7.1 you can need to add the property:
+
+     openejb.datasource.pool = true
+
+in resource properties to ensure the resource is pooled.
+
+
+## Details about DataSource and their factories (advanced configuration)
+
+
+[Configuration by creator](datasource-configuration-by-creator.html)

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/datasource-configuration-by-creator.md
----------------------------------------------------------------------
diff --git a/docs/datasource-configuration-by-creator.md b/docs/datasource-configuration-by-creator.md
new file mode 100644
index 0000000..1a02b70
--- /dev/null
+++ b/docs/datasource-configuration-by-creator.md
@@ -0,0 +1,151 @@
+Title: DataSource Creator
+
+TomEE uses  `creator` to create the connection pool factory. In other terms it means you can
+use any pool you want for DataSource in TomEE.
+
+Default provided pools are DBCP (default in embedded mode) and Tomcat JDBC (default in TomEE to be aligned on Tomcat).
+
+Depending which one you use the accept configuration are not 100% the same even if we try to 
+align the most common entries to the historical configuration (ie DBCP).
+
+Here are a more detailled list of accepted properties by creator.
+
+
+## DBCP (TomEE 1.7.x)
+
+Note: details are at http://tomee.apache.org/containers-and-resources.html
+(note: http://commons.apache.org/proper/commons-dbcp/configuration.html uses the latest version of DBCP but TomEE 1.7.x is not using this version).
+
+- AccessToUnderlyingConnectionAllowed
+- ConnectionInitSqls
+- ConnectionProperties
+- DefaultAutoCommit
+- DefaultCatalog
+- DefaultReadOnly
+- DefaultTransactionIsolation
+- Delegate
+- InitialSize
+- JdbcDriver
+- JdbcUrl
+- LogAbandoned
+- LogWriter
+- LoginTimeout
+- MaxActive
+- MaxIdle
+- MaxOpenPreparedStatements
+- MaxWait
+- MinEvictableIdleTimeMillis
+- MinIdle
+- Name
+- NumTestsPerEvictionRun
+- Password
+- PasswordCipher
+- PoolPreparedStatements
+- RemoveAbandoned
+- RemoveAbandonedTimeout
+- TestOnBorrow
+- TestOnReturn
+- TestWhileIdle
+- TimeBetweenEvictionRunsMillis
+- UserName
+- ValidationQuery
+- ValidationQueryTimeout
+
+## Tomcat JDBC
+
+Note: details are at https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html
+
+- AbandonWhenPercentageFull
+- AccessToUnderlyingConnectionAllowed
+- AlternateUsernameAllowed
+- CommitOnReturn
+- ConnectionProperties
+- DataSource
+- DataSourceJNDI
+- DbProperties
+- DefaultAutoCommit
+- DefaultCatalog
+- DefaultReadOnly
+- DefaultTransactionIsolation
+- DriverClassName
+- FairQueue
+- IgnoreExceptionOnPreLoad
+- InitSQL
+- InitialSize
+- JdbcInterceptors
+- JmxEnabled
+- LogAbandoned
+- LogValidationErrors
+- LogWriter
+- LoginTimeout
+- MaxActive
+- MaxAge
+- MaxIdle
+- MaxWait
+- MinEvictableIdleTimeMillis
+- MinIdle
+- Name
+- NumTestsPerEvictionRun
+- Password
+- PasswordCipher
+- PoolProperties
+- PropagateInterruptState
+- RemoveAbandoned
+- RemoveAbandonedTimeout
+- RollbackOnReturn
+- SuspectTimeout
+- TestOnBorrow
+- TestOnConnect
+- TestOnReturn
+- TestWhileIdle
+- TimeBetweenEvictionRunsMillis
+- Url
+- UseDisposableConnectionFacade
+- UseEquals
+- UseLock
+- Username
+- ValidationInterval
+- ValidationQuery
+- ValidationQueryTimeout
+- Validator
+- ValidatorClassName
+
+## DBCP2 (TomEE 7.x)
+
+Note: details are at http://commons.apache.org/proper/commons-dbcp/configuration.html
+
+- AccessToUnderlyingConnectionAllowed
+- ConnectionInitSqls
+- ConnectionProperties
+- DefaultAutoCommit
+- DefaultCatalog
+- DefaultReadOnly
+- DefaultTransactionIsolation
+- Delegate
+- InitialSize
+- JdbcDriver
+- JdbcUrl
+- LogAbandoned
+- LogWriter
+- LoginTimeout
+- MaxTotal
+- MaxIdle
+- MaxOpenPreparedStatements
+- MaxWait
+- MinEvictableIdleTimeMillis
+- MinIdle
+- Name
+- NumTestsPerEvictionRun
+- Password
+- PasswordCipher
+- PoolPreparedStatements
+- RemoveAbandonedOnBorrow
+- RemoveAbandonedOnMaintenance
+- RemoveAbandonedTimeout
+- TestOnBorrow
+- TestOnReturn
+- TestWhileIdle
+- TimeBetweenEvictionRunsMillis
+- UserName
+- ValidationQuery
+- ValidationQueryTimeout
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/datasource-password-encryption.mdtext
----------------------------------------------------------------------
diff --git a/docs/datasource-password-encryption.mdtext b/docs/datasource-password-encryption.mdtext
new file mode 100644
index 0000000..2ddc25f
--- /dev/null
+++ b/docs/datasource-password-encryption.mdtext
@@ -0,0 +1,124 @@
+Title: DataSource Password Encryption
+_Apache OpenEJB 3.1.2 or later required_
+
+_TomEE 1.5.0 switched from Apache Commons-DBCP to Tomcat-pool. On that specific version, password encryption is not
+available. You can still switch back to Apache Commons DBCP buy adding the following property: DataSourceCreator dbcp.
+On all following versions, the database encryption will be ported and hence available on Tomcat-pool as well._
+
+<a name="DataSourcePasswordEncryption-Cipheringpasswords"></a>
+# Ciphering passwords
+Apache OpenEJB now provides an easy and extensible way to cipher databases
+passwords. Not that by default, this feature is not activated so plain
+passwords are used.
+
+<a name="DataSourcePasswordEncryption-Usage"></a>
+## Usage
+
+Default Plain text password example:
+
+    <Resource id="MySQL Database" type="DataSource">
+        #  MySQL example
+        #
+        #  This connector will not work until you download the driver at:
+        #  http://www.mysql.com/downloads/api-jdbc-stable.html
+
+        JdbcDriver	com.mysql.jdbc.Driver
+        JdbcUrl	jdbc:mysql://localhost/test
+        UserName	test
+        Password	Passw0rd
+    </Resource>
+
+
+3DES ciphered password example.
+
+Note that the built in 3DES implementation uses *a static key* to
+encode/decode your password. _It's only meant to be a sample on how to implement a Codec. On a real
+enterprise life, you should implement your how relying on an HSM for example._
+The easiest way to do it is to implement the *org.apache.openejb.resource.jdbc.cipher.PasswordCipher* interface.
+
+    <Resource id="MySQL Database" type="DataSource">
+        #  MySQL example
+        #
+        #  This connector will not work until you download the driver at:
+        #  http://www.mysql.com/downloads/api-jdbc-stable.html
+
+        JdbcDriver	com.mysql.jdbc.Driver
+        JdbcUrl	jdbc:mysql://localhost/test
+        UserName	test
+
+        # ciphered value for Passw0rd using Static3DES codec is
+        xMH5uM1V9vQzVUv5LG7YLA==
+        Password	xMH5uM1V9vQzVUv5LG7YLA==
+        PasswordCipher Static3DES
+    </Resource>
+
+
+# Hint
+You can plug your own algorithm to extend Apache OpenEJB built in ones. To
+do such, you just need to implement the 
+ 
+## Command line tool
+
+Apache OpenEJB also provides a command line tool allowing password cipher
+algorithm. Actually, it's useful to get the ciphered value of a plain text
+value using a given algorithm.
+    
+### NAME
+    
+openejb cipher - OpenEJB Cypher Tool
+    
+### SYNOPSIS
+    
+    openejb cipher [#options]
+
+### DESCRIPTION
+    
+The OpenEJB Cipher tool is an OPTIONAL tool that allows you to use
+`PasswordCipher` algorithm to encode/decode values.
+
+*This tool isn't package by default on TomEE 1.5.0. It's only available on the standalone distribution. After 1.5.0, it's in TomEE as well.*
+    
+The OpenEJB Cipher tool can be executed from any directory as long as
+`<OPENEJB_HOME>/bin` is in the system PATH. Before running this tool you need
+to set the environment variable OPENEJB_HOME to the path of the directory
+where you unpacked the OpenEJB installation. For for the remainder of this
+document we will assume you unpacked OpenEJB into the directory
+C:\openejb-3.1.2.
+    
+In Windows, the cipher tool can be executed as follows:
+
+    `C:\openejb-3.1.2> bin\openejb cipher --help`
+
+In UNIX, Linux, or Mac OS X, the cipher tool can be executed as follows:
+
+    `\[user@host openejb-3.1.2]# bin/openejb cipher --help`
+    
+Depending on your OpenEJB version, you may need to change execution bits to
+make the scripts executable.  You can do this with the following command.
+    
+    `\[user@host openejb-3.1.2]# chmod 755 bin/openejb`
+    
+From here on out, it will be assumed that you know how to execute the right
+openejb script for your operating system and commands will appear in
+shorthand as show below.
+    
+    `openejb cipher --help`
+    
+### OPTIONS
+
+<table>
+<tr><td>-h, --_help_ <td></td>Lists these options and exit.</td></tr>
+<tr><td>-c, --_cipher_ <td></td>Specifies the password cipher implementation to use (default is Static3DES).</td></tr>
+<tr><td>-d, --_decrypt_ <td></td>Switches command line tool to decrypt.</td></tr>
+<tr><td>-e, --_encrypt_ <td></td>Switches command line tool to encrypt (default).</td></tr>
+</table>
+    
+### EXAMPLES
+    
+Encrypt a plain password using the default algorithm.
+
+    `openejb cipher Passw0rd`
+
+Output
+
+    xMH5uM1V9vQzVUv5LG7YLA==

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/deamon/lin-service.mdtext
----------------------------------------------------------------------
diff --git a/docs/deamon/lin-service.mdtext b/docs/deamon/lin-service.mdtext
new file mode 100644
index 0000000..f3a59f6
--- /dev/null
+++ b/docs/deamon/lin-service.mdtext
@@ -0,0 +1,13 @@
+###Installing TomEE as a Windows&reg; Service
+
+The different architecture exe's are as follows (so always use the one that matches your system):
+
+TomEE.amd64.exe = 64bit OS
+TomEE.ia64.exe = Itanium OS
+TomEE.x86.exe = 32bit OS
+
+The only difference to Tomcat is that they ship with 'like named' binaries, but in sub-directories - Or offer separate downloads for your OS. We just modified the batch files to detect your arch-type and use the correct binaries. Everything is all in the 'bin' directory so we only have a one zip fits all approach.
+
+Definitive documentation can be found here:
+
+http://commons.apache.org/proper/commons-daemon/procrun.html 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/deamon/win-service.mdtext
----------------------------------------------------------------------
diff --git a/docs/deamon/win-service.mdtext b/docs/deamon/win-service.mdtext
new file mode 100644
index 0000000..f3a59f6
--- /dev/null
+++ b/docs/deamon/win-service.mdtext
@@ -0,0 +1,13 @@
+###Installing TomEE as a Windows&reg; Service
+
+The different architecture exe's are as follows (so always use the one that matches your system):
+
+TomEE.amd64.exe = 64bit OS
+TomEE.ia64.exe = Itanium OS
+TomEE.x86.exe = 32bit OS
+
+The only difference to Tomcat is that they ship with 'like named' binaries, but in sub-directories - Or offer separate downloads for your OS. We just modified the batch files to detect your arch-type and use the correct binaries. Everything is all in the 'bin' directory so we only have a one zip fits all approach.
+
+Definitive documentation can be found here:
+
+http://commons.apache.org/proper/commons-daemon/procrun.html 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/declaring-references.mdtext
----------------------------------------------------------------------
diff --git a/docs/declaring-references.mdtext b/docs/declaring-references.mdtext
new file mode 100644
index 0000000..088e285
--- /dev/null
+++ b/docs/declaring-references.mdtext
@@ -0,0 +1,2 @@
+Title: Declaring References
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/deploy-tool.mdtext
----------------------------------------------------------------------
diff --git a/docs/deploy-tool.mdtext b/docs/deploy-tool.mdtext
new file mode 100644
index 0000000..b3c724a
--- /dev/null
+++ b/docs/deploy-tool.mdtext
@@ -0,0 +1,161 @@
+Title: Deploy Tool
+
+<a name="DeployTool-NAME"></a>
+# NAME
+
+openejb deploy - OpenEJB Deploy Tool
+
+<a name="DeployTool-SYNOPSIS"></a>
+# SYNOPSIS
+
+> openejb deploy [options](#DeployTool-OPTIONS) &lt;file&gt; \[&lt;file&gt; ...\]
+
+<a name="DeployTool-NOTE"></a>
+# NOTE
+
+
+The OpenEJB Deploy tool is an OPTIONAL tool that allows you to deploy into
+a running server and get feedback as if the app was deployed and how it was
+deployed (deploymentIds, jndi names, etc.).
+
+It can be used to deploy into an offline server, however in this scenario
+it simply copies the archive into the deployment directory (by default `openejb.base/apps`) which is
+something that can be done manually with a simple copy command or drag and
+drop.
+
+The OpenEJB Deploy tool can be executed from any directory as long as
+`openejb.home/bin` is in the system PATH. `openejb.home` is the directory
+where OpenEJB was installed or unpacked. For for the remainder of this
+document we will assume you unpacked OpenEJB into the directory
+`C:\openejb-3.0` under Windows.
+
+In Windows, the deploy tool can be executed as follows:
+
+> C:\openejb-3.0> bin\openejb deploy --help
+
+In UNIX, Linux, or Mac OS X, the deploy tool can be executed as follows:
+
+> user@host# bin/openejb deploy --help
+
+Depending on your OpenEJB version, you may need to change execution bits to
+make the scripts executable.  You can do this with the following command.
+
+> user@host# chmod +x bin/openejb
+
+From here on out, it will be assumed that you know how to execute the right
+openejb script for your operating system and commands will appear in
+shorthand as show below.
+
+> openejb deploy --help
+
+
+<a name="DeployTool-DESCRIPTION"></a>
+# DESCRIPTION
+
+The files passed to the Deploy Tool can be any combination of the
+following:
+
+* EJB 1.1, 2.0, 2.1, 3.0 or 3.1 jar
+* application client jar 
+* EAR file containing only libraries, EJBs and application clients --
+everything else will be ignored.
+
+The type of the files passed is determined as follows:
+
+* Archives ending in `.ear` or containing a `META-INF/application.xml` are
+assumed to be EAR files.
+* Archives containing a `META-INF/ejb-jar.xml` file or any classes annotated
+with `@Stateless`, `@Stateful` or `@MessageDriven`, are assumed to be *EJB*
+applications. EJB applications older that EJB 3.0 should contain a
+complete `META-INF/ejb-jar.xml` inside the jar, however we do not strictly
+enforce that -- the act of it being incomplete makes it an EJB 3.0
+application by nature.
+* Archives containing a `META-INF/application-client.xml` or with a
+`META-INF/MANIFEST.MF` containing the `Main-Class` attribute, are assumed to
+be *Application Client* archives.
+
+
+<a name="DeployTool-OPTIONS"></a>
+# OPTIONS
+
+<table>
+<tr>
+<td>-d, --debug </td>
+<td>Increases the level of detail on validation errors and
+deployment summary.</td>
+</tr>
+
+<tr><td>--dir </td>
+<td>Sets the destination directory where the app will be deployed. 
+The default is <OPENEJB_HOME>/apps/ directory.	Note when changing this
+setting make sure the directory is listed in the openejb.xml via a
+<Deployments dir=""/> tag or the app will not be picked up again on
+restart.
+</tr>
+
+<tr><td>-conf file </td>
+<td>Sets the OpenEJB configuration to the specified file.</td></tr>
+
+<tr><td>-h, --help </td>
+<td>Lists these options and exit.</td></tr>
+
+<tr><td>-o, --offline</td>
+<td>Deploys the app to an offline server by copying the
+archive into the server's apps/ directory.  The app will be deployed when
+the server is started.	The default is online.</td></tr>
+
+<tr><td>-q, --quiet	</td>
+<td> Decreases the level of detail on validation and skips the
+deployment summary.</td></tr>
+
+<tr><td>-s, --server-url &lt;url&gt; </td>
+<td>   Sets the url of the OpenEJB server to which
+the app will be deployed.  The value should be the same as the JNDI
+Provider URL used to lookup EJBs.  The default is 'ejbd://localhost:4201'.
+</td></tr>
+
+<tr><td>-v, --version</td>
+<td>   Prints the OpenEJB version and exits. </td></tr>
+</table>
+
+
+<a name="DeployTool-EXAMPLES"></a>
+# EXAMPLES
+
+
+<a name="DeployTool-Deployingmultiplejarfiles"></a>
+## Deploying multiple jar files
+
+
+> openejb deploy myapp\fooEjbs.jar myapp\barEjbs.jar
+
+
+Deploys the beans in the fooEjbs.jar first, then deploys the beans in the
+barEjbs.jar. Wildcards can be used as well.
+
+> openejb deploy myapp\*.jar
+
+
+<a name="DeployTool-OUTPUT"></a>
+# OUTPUT
+
+On running the deploy tool with a valid EJB jar the following output is
+printed on the console
+
+
+    Application deployed successfully at {0}
+    App(id=C:\samples\Calculator-new\hello-addservice.jar)
+        EjbJar(id=hello-addservice.jar, path=C:\samples\Calculator-new\hello-addservice.jar)
+    	Ejb(ejb-name=HelloBean, id=HelloBean)
+    	    Jndi(name=HelloBean)
+    	    Jndi(name=HelloBeanLocal)
+    
+    	Ejb(ejb-name=AddServiceBean, id=AddServiceBean)
+    	    Jndi(name=AddServiceBean)
+    	    Jndi(name=AddServiceBeanLocal)
+
+
+Note: In the above case the command used is:
+> openejb deploy hello-addservice.jar
+
+The JAR file contains two EJBs: AddServiceBean and HelloBean.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/deploying-in-tomee.mdtext
----------------------------------------------------------------------
diff --git a/docs/deploying-in-tomee.mdtext b/docs/deploying-in-tomee.mdtext
new file mode 100644
index 0000000..ebad058
--- /dev/null
+++ b/docs/deploying-in-tomee.mdtext
@@ -0,0 +1,69 @@
+Title:
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+#Deploying in TomEE
+
+Deploying applications in TomEE is as simple as deploying them in Tomcat. 
+
+You could deploy your application in Eclipse just like how you would deploy with Tomcat. For an example, [tomee-and-eclipse](tomee-and-eclipse.html) shows how to use TomEE with Eclipse.
+
+Or you can simply package your application as a standard **WAR** file and copy it to the **[TomEE]/webapps** folder, or as an **EAR** file and copy it to the **[TomEE]/apps** folder.
+
+Read on to learn more about packaging EJBs in a WAR file.
+
+
+### Packaging
+
+<a name="CollapsedEAR-Onearchive"></a>
+#### One archive
+
+The basic idea of this approach is that your Servlets and EJBs are together in your WAR file as one application.
+
+ - No classloader boundaries between Servlets and EJBs
+ 
+ - EJBs and Servlets can share all third-party libraries (like Spring\!) 
+ 
+ - No EAR required.
+ 
+ - Can put the web.xml and ejb-jar.xml in the same archive (the WAR file) 
+ 
+ - EJBs can see Servlet classes and vice versa 
+
+<a name="CollapsedEAR-NotquiteJ2EE(itistrulyJava EE6)"></a>
+#### Not quite J2EE (But it is Java EE 6)
+
+This is very different than J2EE or Java EE 5 as there are not several levels of separation and classloader hierarchy any more.  
+This may take some getting used to and it is important to understand that this style of packaging is **not** J2EE compliant.  
+You should not worry though, as it is an accepted feature of Java EE 6.
+
+#### J2EE classloading rules:
+ - You cannot ever have EJBs and Servlets in the same classloader.
+
+ - Three classloader minimum; a classloader for the ear, one for each
+ejb-jar, and one for each WAR file.
+
+ - Servlets can see EJBs, but EJBs cannot see Servlets.
+
+ To pull that off, J2EE has to kill you on packaging:
+ - You cannot have EJB classes and Servlet classes in the same archive.
+
+ - You need at least three archives to combine Servlets and EJBs; 1 EAR containing 1 EJB jar and 1 Servlet WAR.
+
+ - Shared libraries must go in the EAR and be included in a specially formatted 'Class-Path' entry in the EAR's MANIFEST file.
+
+ Critically speaking, forcing more than one classloader on an application is where J2EE "jumps the shark" for a large majority of people's needs.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/deployment-id.mdtext
----------------------------------------------------------------------
diff --git a/docs/deployment-id.mdtext b/docs/deployment-id.mdtext
new file mode 100644
index 0000000..58c7d3d
--- /dev/null
+++ b/docs/deployment-id.mdtext
@@ -0,0 +1,227 @@
+Title: Deployment ID
+
+<a name="DeploymentID-WhatisaDeploymentID?"></a>
+# What is a Deployment ID?
+
+Every bean deployed in OpenEJB has a unique deployment-id that identifies
+it within the scope of the entire container system. The server and
+container system refer beans at run-time using the bean's deployment id.
+
+<a name="DeploymentID-Likeejb-name"></a>
+## Like ejb-name
+
+This deployment id is much like the <ejb-name> element of the ejb-jar.xml ,
+with one very important difference. The <ejb-name> is only required to be
+unique within the scope of the ejb-jar.xml in the bean's jar. The
+deployment id is required to be unique across all beans and jars in
+OpenEJB. This is a subtle, but important, distinction.
+
+Remember that the EJB specification was designed so that enterprise beans
+could be create, packaged, and sold by vendors (EJB Providers).
+Furthermore, users should be able to buy a packaged set of beans (a jar
+with an ejb-jar.xml in it) and deploy it into an EJB Container without
+modification.
+
+<a name="DeploymentID-Theejb-nameisnotunique"></a>
+## The ejb-name is not unique
+
+Let's consider this, what happens if two vendors each sell a package (jar)
+that contains a bean with the <ejb-name> PurchaseOrder? Both are completely
+different in terms functionality and are different beans in every other
+respect. The EJB spec says, this is fine, ejb-names only have to unique
+within the jar and that jar's ejb-jar.xml file. It's ridiculous to expect
+EJB Providers to call each other up and ask, "Are you already using the
+name 'PurchaseOrder' in your jar?" Remember that the EJB specification was
+designed so that enterprise beans could be create, packaged, and sold by
+vendors (EJB Providers). Furthermore, users should be able to buy a
+packaged set of beans (a jar with an ejb-jar.xml in it) and deploy it into
+an EJB Container without modification. This is all fine and dandy, but it
+still leaves it up to the EJB Container/Server providers to settle the
+difference.
+
+<a name="DeploymentID-Thedeployment-idisunique"></a>
+## The deployment-id is unique
+
+OpenEJB solves this with the OpenEJB-specific deployment id. By requiring
+that each bean deployed into OpenEJB has a unique name, we can guarantee
+that we are always referring to the right bean at all times. Furthermore, it
+allows you to deploy different versions of the same package several times
+in the same container system, each time giving the beans new deployment
+ids.
+
+<a name="DeploymentID-Usingejb-nameasdeployment-idanyway"></a>
+## Using ejb-name as deployment-id anyway
+
+If you're lazy -- as any truly great programmer should be -- and don't want
+to type a deployment id for each bean every time you deploy a jar, you can
+use the -D option of the Deploy Tool. This will throw caution to the wind,
+and automatically assign the bean's ejb-name as the value of the bean's
+OpenEJB deployment id. This leaves up to you to guarantee that bean's
+ejb-name will be unique across all beans and jars in the container system.
+In other words, be very careful with the -D option!
+
+<a name="DeploymentID-Howisitused?"></a>
+# How is it used?
+
+<a name="DeploymentID-Inthecontainersystem"></a>
+## In the container system
+
+In the container system, the deployment id is used to index the bean in a
+system-wide registry. This registry is refereed to on every call made in the
+container system. Being able to safely hash and cache bean information by
+id is a must. This stresses the importance of unique ids for every bean
+deployed in OpenEJB.
+
+<a name="DeploymentID-IntheLocalServer"></a>
+## In the Local Server
+
+The Local (IntraVM) Server is an integral part of the container system and
+the two are, in many ways, inseparable. The Local Server takes care of all
+bean to bean and client to bean invocations made inside the virtual
+machine. For this reason, it often refered to as the IntraVM Server.
+
+For bean to bean communications, the Local Server must create a JNDI
+namespace (JNDI ENC) for each bean as defined by the bean's <env-entry>,
+<ejb-ref>, and <resource-ref> elements of the bean's ejb-jar.xml file.
+Every bean literally gets its very own JNDI namespace. When a bean makes a
+JNDI call, the Local Server intercepts this call and uses the deployment id
+of the calling bean to retrieve that bean's private JNDI namespace from the
+container system's index. The Local Server then carries out the lookup on
+that bean's namespace.
+
+All non-bean clients share one big global namespace. Since non-bean clients
+are not deployed and do not have a deployment descriptor like an
+ejb-jar.xml, the Local Server is unable to taylor a namespace for each
+non-bean client as it can for bean clients. The Local server cannot
+identify non-bean clients as they have no deployment id. All JNDI calls
+made by clients that the Local Server cannot identify go to the public,
+global namespace. The public, global JNDI namespace contains all beans and
+resources in the container system. name.
+
+Each bean is added to the public, global namespace using it's deployment id
+as its JNDI lookup. For example, if a bean had a deployment-id of
+"/my/bean/foo", a non-bean client could lookup that bean as follows.
+
+    ...
+    Object bean = initialContext.lookup("/my/bean/Foo");
+    ...
+
+
+If a bean in the container system made the above JNDI call, the Local
+Server would see the bean's identity (deployment id) hidden in the Thread,
+go get the bean's private JNDI namespace and finish the lookup on that.
+Since all names in bean's JNDI namespace are required start with
+"java:comp/env", the lookup would fail and the bean would receive a
+javax.naming.NameNotFoundException.
+
+In short...
+
+For beans:
+ - Each bean has it's own private, personalized JNDI namespace
+ - The names in it are the same names it uses in its ejb-jar.xml
+ - Beans can only access their private namespace, period
+
+For non-beans (everyone else):
+ - Non-bean clients share the public, global JNDI namespace
+ - The names in it are the deployment ids of all the beans
+ - Non-bean clients can only access the one global namespace
+
+<a name="DeploymentID-IntheRemoteServer"></a>
+## In the Remote Server
+
+The Remote Server has a public, global namespace just as the Local Server
+does. The difference being that the Remote Server only serves clients
+outside the container system and outside the virtual machine. So, all
+clients from the perspective of the Remote Server are non-bean clients. As
+a result, the Remote Server only has the one public, global JNDI namespace.
+Just as in the Local Server, the names in this namespace consist of the
+deployment ids of the beans in the container system.
+
+Just as before, clients can lookup beans from the Remote Server using the
+bean's deployment id. For example, if a bean had a deployment-id of
+"/my/bean/foo", a client could lookup that bean as follows.
+
+    ...
+    Object bean = initialContext.lookup("/my/bean/Foo");
+    ...
+
+
+<a name="DeploymentID-IntheCORBAAdapter"></a>
+## In the CORBA Adapter
+
+The CORBA Adapter is separate than the Remote Server. It adapts the OpenEJB
+Container System and the Local Server into OpenORB as an embedded library.
+It provides users of OpenORB the ability to lookup and execute beans (EJBs)
+via the RMI-IIOP protocol. All the EJBHome and EJBObject interfaces of
+beans in OpenEJB are implemented by OpenORB as CORBA stubs and ties.
+
+The beans are exported into OpenORB's naming service by deployment id. So,
+just as with the Local Server and Remote Server, clients can lookup beans
+using the bean's deployment id. OpenORB has a JNDI implementation of their
+naming service, so lookups can be done just as before.
+
+    ...
+    String[] args = ...
+
+    // The ORB and Object
+    org.omg.CORBA.ORB    orb  = null;
+    org.omg.CORBA.Object bean = null.
+
+    // The Naming Service and Object Name
+    org.omg.CosNaming.NamingContext   context = null;
+    org.omg.CosNaming.NameComponent[]    name = null;
+
+    // Get the ORB
+    orb = org.omg.CORBA.ORB.init( args, null );
+
+    // Get the Naming Service
+    org.omg.CORBA.Object ref = null;
+    ref = orb.resolve_initial_references("NameService");
+    context = org.omg.CosNaming.NamingContextHelper.narrow( ref );
+
+    // Get the Name as a component
+    // Note: the string is the bean's deployment id
+    name    = new org.omg.CosNaming.NameComponent[ 1 ];
+    name[0] = new org.omg.CosNaming.NameComponent("/my/bean/foo","");
+
+    // Finally, get the bean as a CORBA object
+    // Equvalent to an InitialContext.lookup("/my/bean/foo");
+    bean = context.resolve( name );
+    ...
+
+
+<a name="DeploymentID-WhathappensifthereisaduplicatedeploymentID?"></a>
+# What happens if there is a duplicate deployment ID?
+
+The deployment ID uniquely identifies the bean in the OpenEJB container
+system. Therefore, no two beans can share the same deployment ID.
+
+If a bean attempts to use a deployment ID that is already in use by another
+bean, the second bean and all beans in it's jar will not be loaded. In
+addition, the system will log a warning like the following one asking you
+to redeploy the jar and choose an different deployment ID for the bean.
+
+    WARN : Jar C:\openejb\beans\fooEjbs.jar cannot be loaded.  The Deployment ID "/my/bean/foo" is already in use.  Please redeploy this jar and assign a different deployment ID to the bean with the ejb-name "FooBean".
+
+For example, the acmeEjbs.jar contains a bean with the ejb-name
+"DaffyDuckBean". The disneyEjbs.jar contains contains a bean with the
+ejb-name "DonaldDuckBean".
+
+We deploy the acmeEjbs.jar and give the "DaffyDuckBean" the deployment ID
+of "/my/favorite/duck". Sometime afterwards, we deploy the disneyEjbs.jar
+and assign the "DonaldDuckBean" the deployment ID "/my/favorite/duck",
+having forgotten that we already gave that unique ID to the "DaffyDuckBean"
+in the acmeEjbs.jar.
+
+When the container system is started, the system will begin loading all the
+beans one jar at a time. It will first load the acmeEjbs.jar and index each
+bean by deployment ID. But, when the system reaches the disneyEjbs.jar, it
+will discover that it cannot index the "DonaldDuckBean" using the
+deployment ID "/my/favorite/duck" because that index is already taken.
+
+The system cannot load the "DonaldDuckBean" and must also ignore the rest
+of the beans in the disneyEjbs.jar as they may need the "DonaldDuckBean"
+bean to function properly. The disneyEjbs.jar is skipped and the following
+warning is logged.
+
+    WARN : Jar C:\openejb\beans\disneyEjbs.jar cannot be loaded.  The  Deployment ID "/my/favorite/duck" is already in use.  Please redeploy  this jar and assign a different deployment ID to the bean with the ejb-name "DonaldDuckBean".

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/deployments.mdtext
----------------------------------------------------------------------
diff --git a/docs/deployments.mdtext b/docs/deployments.mdtext
new file mode 100644
index 0000000..90ab0cf
--- /dev/null
+++ b/docs/deployments.mdtext
@@ -0,0 +1,131 @@
+Title: Deployments
+
+<a name="Deployments-The'Deployments'elementinopenejb.xml"></a>
+#  The 'Deployments' element in openejb.xml
+
+<a name="Deployments-Asinglejar"></a>
+##  A single jar
+
+To include a single jar by name, just declare a 'Deployments' element with
+a 'jar' attribute pointing to the jar file on the file system.
+
+    <openejb>
+    ...
+    <Deployments jar="c:\my\app\superEjbs.jar" />
+    <Deployments jar="c:\someplace\purchasing.jar" />
+    <Deployments jar="timeTrack.jar" />
+    </openejb>
+
+    
+The last element in the example uses a relative path to point to the ejb
+jar.  This path will be resolved relative to the openejb.base property. 
+So, for example, of the value of openejb.base was 'c:\timeapp\' then
+OpenEJB would look for the jar 'c:\timeapp\timeTrack.jar'.  See the [OPENEJB:Configuration]
+ guide for more details.
+    
+##  A directory of jars
+    
+To point to a directory that contains several jar files that OpenEJB should
+load, simply declare a 'Deployments' element with a 'dir' attribute
+pointing to the directory containing the jar files.
+    
+    <openejb>
+    ...
+    
+    <Deployments dir="c:\my\app\beans\" />
+    <Deployments dir="c:\crimestopper\lib" />
+    <Deployments dir="ejbs" />
+    <Deployments dir="beans" />
+    </openejb>
+
+
+The directories listed will be searched for jars containing
+'META-INF/ejb-jar.xml' files and will be added to the list of jars to load
+if they do.  Better said, it's completely safe to point to a directory
+containing a mix of ejbs and regular jar files.  OpenEJB will simply skip
+over jars that do contain the required 'META-INF/ejb-jar.xml' file.
+
+The last Deployments element declares a 'beans' directory relative to
+openejb.base for holding ejb jars.  This declaration is simply convention
+and not required.
+
+<a name="Deployments-Anunpackedjar"></a>
+##  An unpacked jar
+
+As of 1.0 beta1, OpenEJB supports unpacked ejb jars.  Simply meaning that
+you don't need to pack your ejb's into a jar file in order to use them in
+OpenEJB.  You still need to follow the ejb jar layout and include an
+"META-INF/ejb-jar.xml" in the directory that contains your ejbs.
+
+For example, if you have a directory structure like this:
+
+    > C:\myapp\
+    > C:\myapp\acmeEjbs\
+    > C:\myapp\acmeEjbs\META-INF\ejb-jar.xml
+    > C:\myapp\acmeEjbs\org\acme\Foo.class
+    > C:\myapp\acmeEjbs\org\acme\FooBean.class
+    > C:\myapp\acmeEjbs\org\acme\FooHome.class
+    > C:\myapp\acmeEjbs\org\acme\Bar.class
+    > C:\myapp\acmeEjbs\org\acme\BarBean.class
+    > C:\myapp\acmeEjbs\org\acme\BarHome.class
+
+Then you would delcare a 'Deployments' element with the 'dir' attribute set
+to 'C:\myapp\acmeEjbs' as shown below.
+
+    <openejb>
+    ...
+
+    <Deployments dir="c:\myapp\acmeEjbs" />
+    </openejb>
+
+    
+Note that this syntax is the same as the directory syntax above.  If
+OpenEJB finds a META-INF directory with an 'ejb-jar.xml' fine inside, then
+OpenEJB will treat the directory as an unpacked ejb jar.  Otherwise OpenEJB
+will look for ejb jar files to load as detailed in the above section.
+    
+#  Log file 
+    
+When trying to figure out if your ejbs were loaded, the openejb.log file is
+an incredible asset.
+    
+If your ejbs were loaded successfully you should see entries like the
+following (1.x and higher only):
+    
+    INFO :	Loaded EJBs from
+    /usr/local/openejb-1.0-beta1/beans/openejb-itests-beans.jar
+    INFO :	Loaded EJBs from
+    /usr/local/openejb-1.0-beta1/beans/openejb-webadmin-clienttools.jar
+
+If your ejbs failed to load, you will see an entry similar to the
+following.
+
+    WARN :	Jar not loaded. /usr/local/openejb-1.0-beta1/beans/helloworld.jar.
+    Jar failed validation.	Use the validation tool for more details
+
+Additionally, all the successfully loaded ejbs are individually listed in
+the log file at startup.  The Deployment ID listed is the JNDI name used to
+lookup the ejb from a client of the Local or Remote Servers.  The beans
+listed below are from our test suite.
+    
+    DEBUG:	Deployments	  : 19
+    DEBUG:	Type	    Deployment ID
+    DEBUG:	   CMP_ENTITY  client/tests/entity/cmp/RMI-over-IIOP/EJBHome
+    DEBUG:	   STATEFUL    client/tests/stateful/EncBean
+    DEBUG:	   STATELESS   client/tests/stateless/BeanManagedBasicStatelessHome
+    DEBUG:	   STATEFUL    client/tests/stateful/BasicStatefulHome
+    DEBUG:	   STATELESS   client/tests/stateless/EncBean
+    DEBUG:	   STATEFUL   client/tests/stateful/BeanManagedTransactionTests/EJBHome
+    DEBUG:	   BMP_ENTITY  client/tests/entity/bmp/RMI-over-IIOP/EJBHome
+    DEBUG:	   STATEFUL    client/tests/stateful/RMI-over-IIOP/EJBHome
+    DEBUG:	   STATELESS  client/tests/stateless/BeanManagedTransactionTests/EJBHome
+    DEBUG:	   BMP_ENTITY client/tests/entity/bmp/allowed_operations/EntityHome
+    DEBUG:	   CMP_ENTITY  client/tests/entity/cmp/EncBean
+    DEBUG:	   STATEFUL    client/tests/stateful/BeanManagedBasicStatefulHome
+    DEBUG:	   BMP_ENTITY  client/tests/entity/bmp/BasicBmpHome
+    DEBUG:	   STATELESS   client/tests/stateless/BasicStatelessHome
+    DEBUG:	   CMP_ENTITY  client/tests/entity/cmp/BasicCmpHome
+    DEBUG:	   STATELESS   client/tools/DatabaseHome
+    DEBUG:	   CMP_ENTITY client/tests/entity/cmp/allowed_operations/EntityHome
+    DEBUG:	   BMP_ENTITY  client/tests/entity/bmp/EncBean
+    DEBUG:	   STATELESS   client/tests/stateless/RMI-over-IIOP/EJBHome

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/details-on-openejb-jar.mdtext
----------------------------------------------------------------------
diff --git a/docs/details-on-openejb-jar.mdtext b/docs/details-on-openejb-jar.mdtext
new file mode 100644
index 0000000..2119bf0
--- /dev/null
+++ b/docs/details-on-openejb-jar.mdtext
@@ -0,0 +1,152 @@
+Title: Details on openejb-jar
+
+<a name="Detailsonopenejb-jar-Whatisanopenejb-jar.xml?"></a>
+# What is an openejb-jar.xml?
+
+This is the file created by the Deploy Tool that maps your bean's
+deployment descriptor (ejb-jar.xml) to actual containers and resources
+declared in your OpenEJB configuration (openejb.conf). In fact, the Deploy
+tool really does nothing more than create this file and put it in your jar,
+that's it.
+
+<a name="Detailsonopenejb-jar-Whenistheopenejb-jar.xmlused?"></a>
+# When is the openejb-jar.xml used?
+
+At startup, any jar containing a openejb-jar.xml is loaded by the container
+system. The configuration tools will go looking in all the directories and
+jars you have declared in your openejb.conf with the <Deployment> element.
+For every jar file it finds, it will look inside for an openejb-jar.xml. If
+it finds one, it will attempt to load and deploy it into the container
+system.
+
+<a name="Detailsonopenejb-jar-DoIevenneedthedeploytoolthen?"></a>
+# Do I even need the deploy tool then?
+
+Nope. Typically you would only use the deploy tool to create your
+openejb-jar.xml, then just keep your openejb-jar.xml in your CVS (or other
+repository). If you learn how to maintain this openejb-jar.xml file, you'll
+never need the deploy tool again! You can do all your builds and deploys
+automatically.
+
+<a name="Detailsonopenejb-jar-WheredoIputtheopenejb-jar.xmlinmyjar?"></a>
+# Where do I put the openejb-jar.xml in my jar?
+
+The openejb-jar.xml file just goes in the META-INF directory of your jar
+next to the ejb-jar.xml file.
+
+<a name="Detailsonopenejb-jar-Isthefileformateasy?"></a>
+# Is the file format easy?
+
+If you can understand the ejb-jar.xml, the openejb-jar.xml should be a
+breeze.
+
+This is the openejb-jar.xml that is created by the Deploy tool in the Hello
+World example. As you can see, the file format is extremely simple.
+
+    <?xml version="1.0"?>
+    <openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1">
+        <ejb-deployment  ejb-name="Hello"
+             deployment-id="Hello"
+             container-id="Default Stateless Container"/>
+    </openejb-jar>
+
+    
+    
+The *ejb-name* attribute is the name you gave the bean in your ejb-jar.xml.
+The *deployment-id* is the name you want to use to lookup the bean in your
+client's JNDI namespace. The *container-id* is the name of the container in
+your openejb.conf file that you would like the bean to run in. There MUST
+be one *ejb-deployment* element for each EJB in your jar.
+    
+# What if my bean uses a JDBC datasource?
+    
+Then you simply add a <resource-link> element to your <ejb-deployment>
+element like this
+    
+    <?xml version="1.0"?>
+    <openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1">
+        
+        <ejb-deployment  ejb-name="Hello" 
+    		     deployment-id="Hello" 
+    		     container-id="Default Stateless Container" >
+             
+    	<resource-link res-ref-name="jdbc/basic/entityDatabase" 
+    		     res-id="Default JDBC Database"/>
+        
+        </ejb-deployment>
+    
+    </openejb-jar>
+
+
+
+The *res-ref-name* attribute refers to the <res-ref-name> element of the
+bean's <resource-ref> declaration in the ejb-jar.xml. The *res-id*
+attribute refers to the id of the <Connector> declared in your openejb.conf
+that will handle the connections and provide access to the desired
+resource.
+
+<a name="Detailsonopenejb-jar-Howmanyresource-linkelementswillIneed?"></a>
+# How many resource-link elements will I need?
+
+You will need one <resource-link> element for every <resource-ref> element
+in your ejb-jar.xml. So if you had an ejb-jar.xml like the following
+
+    <?xml version="1.0"?>
+    <ejb-jar>
+      <enterprise-beans>
+        <session>
+          <ejb-name>MyExampleBean</ejb-name>
+          <home>com.widget.ExampleHome</home>
+          <remote>com.widget.ExampleObject</remote>
+          <ejb-class>com.widget.ExampleBean</ejb-class>
+          <session-type>Stateless</session-type>
+          <transaction-type>Container</transaction-type>
+
+          <resource-ref>
+            <description>
+              This is a reference to a JDBC database.
+            </description>
+            <res-ref-name>jdbc/myFirstDatabase</res-ref-name>
+            <res-type>javax.sql.DataSource</res-type>
+            <res-auth>Container</res-auth>
+          </resource-ref>
+
+          <resource-ref>
+            <description>
+              This is another reference to a JDBC database.
+            </description>
+            <res-ref-name>jdbc/anotherDatabase</res-ref-name>
+            <res-type>javax.sql.DataSource</res-type>
+            <res-auth>Container</res-auth>
+          </resource-ref>
+
+        </session>
+      </enterprise-beans>
+    </ejb-jar>
+
+    
+Then you would need two <resource-link> elements for that bean in your
+openejb-jar.xml file as such.
+    
+    <?xml version="1.0"?>
+    <openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1">
+        
+        <ejb-deployment  ejb-name="MyExampleBean" 
+    		     deployment-id="MyExampleBean" 
+    		     container-id="Default Stateless Container" >
+             
+    	<resource-link res-ref-name="jdbc/myFirstDatabase" 
+    		     res-id="My Oracle JDBC Database"/>
+    
+    	<resource-link res-ref-name="jdbc/anotherDatabase" 
+    		     res-id="My PostgreSQL JDBC Database"/>
+        
+        </ejb-deployment>
+    
+    </openejb-jar>
+
+
+
+This would require two <Connector> declarations in your openejb.conf, one
+with the *id* attribute set to _"My Oracle JDBC Database"_ , and another
+with it's *id* attribute set to _"My PostgreSQL JDBC Database"_ 

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/developer/.DS_Store
----------------------------------------------------------------------
diff --git a/docs/developer/.DS_Store b/docs/developer/.DS_Store
new file mode 100644
index 0000000..23b46d8
Binary files /dev/null and b/docs/developer/.DS_Store differ

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/developer/classloading/index.adoc
----------------------------------------------------------------------
diff --git a/docs/developer/classloading/index.adoc b/docs/developer/classloading/index.adoc
new file mode 100755
index 0000000..fb47ef3
--- /dev/null
+++ b/docs/developer/classloading/index.adoc
@@ -0,0 +1,59 @@
+= The TomEE ClassLoader
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE ClassLoading is directly mapped to Tomcat one.
+
+ifndef::backend-pdf[]
+
+[#filetree.col-md-3]
+[
+    {
+        label: 'JVM',
+        description: 'The JVM classloader launching tomcat main(String[])',
+        children: [
+            {
+                label:'common.loader',
+                description:'Customizable in conf/catalina.properties, the common loader is the Tomcat classloader',
+                children: [
+                    {
+                        label:'shared.loader',
+                        description:'Optional layer where you can add libraries for the web applications not seen by Tomcat. It is generally not used and not encouraged since Tomcat 6',
+                        children: [
+                            {
+                                label:'webapp1',
+                                description:'loader of one of your wars, it container WEB-INF/classes, WEB-INF/lib/*.jar'
+                            },
+                            {
+                                label:'webapp2',
+                                description:'loader of another one of your wars, it container WEB-INF/classes, WEB-INF/lib/*.jar'
+                            },
+                            {
+                                label:'application1',
+                                description:'loader of another application, it can be an ear, it contains lib and ejbmodules of the ear',
+                                children: [
+                                    {
+                                        label:'earwebapp1',
+                                        description:'loader of one of the wars of the ear'
+                                    },
+                                    {
+                                        label:'earwebapp2',
+                                        description:'loader of the other webapp of the ear'
+                                    }
+                                ]
+                            }
+                        ]
+                    }
+                ]
+            }
+        ]
+    }
+]
+
+[#filetreedetail.col-md-8.bs-callout.bs-callout-primary]
+Click on the tree (JVM) on the left to see the detail there.
+
+endif::[]
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/developer/configuration/cxf.adoc
----------------------------------------------------------------------
diff --git a/docs/developer/configuration/cxf.adoc b/docs/developer/configuration/cxf.adoc
new file mode 100755
index 0000000..997fc82
--- /dev/null
+++ b/docs/developer/configuration/cxf.adoc
@@ -0,0 +1,93 @@
+= CXF Configuration - JAX-RS (RESTful Services) and JAX-WS (Web Services)
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE relies on Apache CXF for JAX-RS (RESTful Services) and JAX-WS (Web Services). It does not provide all CXF modules, but the most common ones for both specifications (JAX-RS is part of all distributions but JAX-WS is only part of plus one).
+
+== Configuration
+
+CXF API is reusable but you can also configure the interceptors through `openejb-jar.xml` (located in WEB-INF).
+
+If you want to configure JAX-RS you will use the prefix `cxf.jaxrs` and if you configure JAX-WS you use `cxf.jaxws` prefix.
+
+TIP: to configure directly the bus use `org.apache.openejb.cxf.bus.` prefix and configure it in `conf/system.properties`.
+
+To configure JAX-RS you need to add in `openejb-jar.xml` a `pojo-deployment`:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<openejb-jar>
+ <pojo-deployment class-name="jaxrs-application">
+   <properties>
+     # here will go the config
+   </properties>
+ </pojo-deployment>
+</openejb-jar>
+----
+
+For JAX-WS you will use a `pojo-deployment` matching the webservice class name for POJO webservices
+or an `ejb-deployment` instead of a `pojo-deployment` for EJB webservices:
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<openejb-jar>
+ <ejb-deployment ejb-name="MyEJBWebService">
+   <properties>
+     # here will go the config
+   </properties>
+ </ejb-deployment>
+</openejb-jar>
+----
+
+Then once you selected your prefix and know where to write the config just use the following entries:
+
+- properties: server factory properties
+- features: CXF features
+- in-interceptors: CXF in interceptors
+- out-interceptors: CXF out interceptors
+- in-fault-interceptors: CXF in interceptors for fault handling
+- out-fault-interceptors: CXF out interceptors for fault handling
+- databinding: server databinding
+- providers (only for JAX-RS endpoint): list of JAX-RS providers
+- skip-provider-scanning (only for JAX-RS): is provider scanning on or not (default true)
+
+For features and interceptors the rule is the same: value is a list comma separated. Each value of the list is either a qualified class name or an id of a service in resources.xml.
+
+Databinding is simply either a qualified name or a service id in resources.xml (located in WEB-INF).
+
+== Sample for JAX-WS
+
+To configure WSS4J on the EJB `CalculatorBean` for instance add in openejb-jar.xml:
+
+[source,xml]
+----
+<openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1">
+  <ejb-deployment ejb-name="CalculatorBean">
+    <properties>
+      cxf.jaxws.in-interceptors = wss4j
+    </properties>
+  </ejb-deployment>
+</openejb-jar>
+----
+
+With associated resources.xml which will define precisely the `wss4j` configuration:
+
+[source,xml]
+----
+<resources>
+  <Service id="wss4j" class-name="org.apache.openejb.server.cxf.config.WSS4JInInterceptorFactory" factory-name="create">
+    action = UsernameToken
+    passwordType = PasswordText
+    passwordCallbackClass = org.superbiz.ws.security.PasswordCallbackHandler
+  </Service>
+</resources>
+----
+
+== Sample for JAX-RS
+
+link:../json/index.html[JAX-RS JSON] page shows a sample dedicated to JAX-RS.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/developer/ide/index.adoc
----------------------------------------------------------------------
diff --git a/docs/developer/ide/index.adoc b/docs/developer/ide/index.adoc
new file mode 100755
index 0000000..9bc3370
--- /dev/null
+++ b/docs/developer/ide/index.adoc
@@ -0,0 +1,25 @@
+= Integrated Development Environments (IDEs)
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE is supported by the main IDEs in the market:
+
+- https://eclipse.org/downloads/[Eclipse]
+- https://www.jetbrains.com/idea/download/[Intellij Idea]
+- https://netbeans.org/downloads/[Netbeans]
+
+=== Eclipse
+
+Be the first to write this part!
+
+=== Idea
+
+Be the first to write this part!
+
+=== Netbeans
+
+Be the first to write this part!
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/developer/index.adoc
----------------------------------------------------------------------
diff --git a/docs/developer/index.adoc b/docs/developer/index.adoc
new file mode 100755
index 0000000..5d49d24
--- /dev/null
+++ b/docs/developer/index.adoc
@@ -0,0 +1,7 @@
+= Developer
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+Click link:../docs.html[here] to find documentation for developers.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/developer/json/index.adoc
----------------------------------------------------------------------
diff --git a/docs/developer/json/index.adoc b/docs/developer/json/index.adoc
new file mode 100755
index 0000000..9141d88
--- /dev/null
+++ b/docs/developer/json/index.adoc
@@ -0,0 +1,206 @@
+= TomEE and Apache Johnzon - JAX-RS JSON Provider
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+Since TomEE 7.0, TomEE comes with Apache Johnzon.
+It means you can use JSON-P out of the box but also Johnzon Mapper
+which is the default JAX-RS provider for JSON.
+
+*IMPORTANT* - this is a breaking change with 1.x which was using jettison.
+This last one was relying on JAXB model to generate JSON which often led
+to unexpected JSON tree and some unexpected escaping too.
+
+== Getting started with Johnzon Mapper
+
+http://johnzon.apache.org/ will get more informations than this quick
+getting started but here are the basics of the mapping with Johnzon.
+
+The mapper uses a direct java to json representation.
+
+For instance this java bean:
+
+[source,java]
+----
+public class MyModel {
+  private int id;
+  private String name;
+  
+  // getters/setters
+}
+----
+
+will be mapped to:
+
+[source,java]
+----
+{
+  "id": 1234,
+  "name": "Johnzon doc"
+}
+----
+
+Note that Johnzon supports several customization either directly on the MapperBuilder of through annotations.
+
+=== @JohnzonIgnore
+
+@JohnzonIgnore is used to ignore a field. You can optionally say you ignore the field until some version
+if the mapper has a version:
+
+[source,java]
+----
+public class MyModel {
+  @JohnzonIgnore
+  private String name;
+  
+  // getters/setters
+}
+----
+
+Or to support name for version 3, 4, ... but ignore it for 1 and 2:
+
+
+[source,java]
+----
+public class MyModel {
+  @JohnzonIgnore(minVersion = 3)
+  private String name;
+  
+  // getters/setters
+}
+----
+
+=== @JohnzonConverter
+
+Converters are used for advanced mapping between java and json.
+
+There are several converter types:
+
+1. Converter: map java to json and the opposite based on the string representation
+2. Adapter: a converter not limited to String
+3. ObjectConverter.Reader: to converter from json to java at low level
+4. ObjectConverter.Writer: to converter from java to json at low level
+4. ObjectConverter.Codec: a Reader and Writer
+
+The most common is to customize date format but they all take. For that simple case we often use a Converter:
+
+[source,java]
+----
+public class LocalDateConverter implements Converter<LocalDate> {
+    @Override
+    public String toString(final LocalDate instance) {
+        return instance.toString();
+    }
+
+    @Override
+    public LocalDate fromString(final String text) {
+        return LocalDate.parse(text);
+    }
+}
+----
+
+If you need a more advanced use case and modify the structure of the json (wrapping the value for instance)
+you will likely need Reader/Writer or a Codec.
+
+Then once your converter developed you can either register globally on the MapperBuilder or simply decorate
+the field you want to convert with @JohnzonConverter:
+
+[source,java]
+----
+public class MyModel {
+  @JohnzonConverter(LocalDateConverter.class)
+  private LocalDate date;
+  
+  // getters/setters
+}
+----
+
+=== @JohnzonProperty
+
+Sometimes the json name is not java friendly (_foo or foo-bar or even 200 for instance). For that cases
+@JohnzonProperty allows to customize the name used:
+
+[source,java]
+----
+public class MyModel {
+  @JohnzonProperty("__date")
+  private LocalDate date;
+  
+  // getters/setters
+}
+----
+
+=== AccessMode
+
+On MapperBuilder you have several AccessMode available by default but you can also create your own one.
+
+The default available names are:
+
+* field: to use fields model and ignore getters/setters
+* method: use getters/setters (means if you have a getter but no setter you will serialize the property but not read it)
+* strict-method (default based on Pojo convention): same as method but getters for collections are not used to write
+
+You can use these names with setAccessModeName().
+
+=== Your own mapper
+
+Since johnzon is in tomee libraries you can use it yourself (if you use maven/gradle set johnzon-mapper as provided):
+
+[source,java]
+----
+final MySuperObject object = createObject();
+
+final Mapper mapper = new MapperBuilder().build();
+mapper.writeObject(object, outputStream);
+
+final MySuperObject otherObject = mapper.readObject(inputStream, MySuperObject.class);
+----
+
+== Johnzon and JAX-RS
+
+TomEE uses by default Johnzon as JAX-RS provider for versions 7.x. If you want however to customize it you need to follow this procedure:
+   
+1. Create a WEB-INF/openejb-jar.xml:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<openejb-jar>
+ <pojo-deployment class-name="jaxrs-application">
+   <properties>
+     # optional but requires to skip scanned providers if set to true
+     cxf.jaxrs.skip-provider-scanning = true
+     # list of providers we want
+     cxf.jaxrs.providers = johnzon,org.apache.openejb.server.cxf.rs.EJBAccessExceptionMapper
+   </properties>
+ </pojo-deployment>
+</openejb-jar>
+----
+
+2. Create a WEB-INF/resources.xml to define johnzon service which will be use to instantiate the provider
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<resources>
+ <Service id="johnzon" class-name="org.apache.johnzon.jaxrs.ConfigurableJohnzonProvider">
+   # 1M
+   maxSize = 1048576
+   bufferSize = 1048576
+
+   # ordered attributes
+   attributeOrder = $order
+
+   # Additional types to ignore
+   ignores = org.apache.cxf.jaxrs.ext.multipart.MultipartBody
+ </Service>
+
+ <Service id="order" class-name="com.company.MyAttributeSorter" />
+
+</resources>
+----
+
+Note: as you can see you mainly just need to define a service with the id johnzon (same as in openejb-jar.xml)
+and you can reference other instances using $id for services and @id for resources.
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/developer/migration/tomee-1-to-7.adoc
----------------------------------------------------------------------
diff --git a/docs/developer/migration/tomee-1-to-7.adoc b/docs/developer/migration/tomee-1-to-7.adoc
new file mode 100644
index 0000000..5bf7153
--- /dev/null
+++ b/docs/developer/migration/tomee-1-to-7.adoc
@@ -0,0 +1,33 @@
+= Migrate from TomEE 1 to TomEE 7
+:jbake-date: 2017-06-17
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+== Breaking changes
+
+- Artifact coordinates changes
+
+GroupId changed from `org.apache.openejb` to `org.apache.tomee`.
+It includes maven plugins which use now `org.apache.tomee.maven` and the `javaee-api`.
+
+Versions of openejb and tomee are now aligned on 7.x and you don't need to use
+4.x and 1.x (or any variant) for openejb and tomee.
+
+- JAX-RS 2 specification refined the sorting of providers. It can have side effects for message body
+readers/writers which don't define their target mediatype properly like Jackson which uses wildcard instead of
+a json related mediatype. To solve it register a custom provider redefining the media type.
+
+Can be as easy as:
+
+[source,java]
+----
+@Provider
+@Consumes("application/json")
+@Produces("application/json")
+public class MyAppJsonProvider extends JacksonJsonProvider {
+}
+----
+
+- JPA and CDI are linked now, enabling JPA to use CDI for its components but CDI can use JPA too...
+to solve issues with hibernate you need to add either as system property or persistence unit `tomee.jpa.factory.lazy = true`.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/developer/testing/applicationcomposer/index.adoc
----------------------------------------------------------------------
diff --git a/docs/developer/testing/applicationcomposer/index.adoc b/docs/developer/testing/applicationcomposer/index.adoc
new file mode 100755
index 0000000..64b5e48
--- /dev/null
+++ b/docs/developer/testing/applicationcomposer/index.adoc
@@ -0,0 +1,335 @@
+= ApplicationComposer: The TomEE Swiss Knife
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+ApplicationComposer API is mainly contained in org.apache.openejb.testing package (historically, today we would have called the package org.apache.tomee.applicationcomposer).
+
+=== Dependencies
+
+To start using ApplicationComposer you need to add some dependencies.
+
+The minimum required one is openejb-core:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.tomee</groupId>
+  <artifactId>openejb-core</artifactId>
+  <version>${openejb.version></version>
+</dependency>
+----
+
+If you need JAXRS services you'll add (or replace thanks to transitivity of maven) openejb-cxf-rs:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.tomee</groupId>
+  <artifactId>openejb-cxf-rs</artifactId>
+  <version>${openejb.version></version>
+</dependency>
+----
+
+If you need JAXWS services you'll add (or replace thanks to transitivity of maven) openejb-cxf:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.tomee</groupId>
+  <artifactId>openejb-cxf</artifactId>
+  <version>${openejb.version></version>
+</dependency>
+----
+
+=== ApplicationComposer Components
+
+==== @Module
+An ApplicationComposer needs at minimum a module (the application you need to deploy).
+
+To do so you have two cases:
+
+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:
+
+[source,java]
+----
+@Module public WebApp app() { return new WebApp(); }
+----
+
+The expected returned type of these methods are in org.apache.openejb.jee package:
+
+- Application: entry point to create an ear
+- WebApp: a web application
+- EjbJar: an ejb module
+- EnterpriseBean children: a simple EJB
+- Persistence: a persistence module with multiple units
+- PersistenceUnit: a simple unit (automatically wrapped in a Persistence)
+- Connector: a JCA connector module
+- Beans: a CDI module,
+- Class[] or Class: a set of classes scanned to discover annotations
+
+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:
+
+[source,java]
+----
+@Module
+@Classes(cdi = true, value = { C1.class, C2.class, E1.class })
+public WebApp app() {
+    return new WebApp();
+}
+----
+
+==== @Configuration
+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.
+
+Note: to simplify writing properties you can use PropertiesBuilder util class which is just a fluent API to write properties.
+
+In these properties you can reuse OpenEJB/TomEE property syntax for resources.
+
+Here is a sample:
+
+[source,java]
+----
+@Configuration
+public Properties configuration() {
+    return new PropertiesBuilder()
+        .p("db", "new://Resource?type=DataSource")
+        .p("db.JdbcUrld", "jdbc:hsqldb:mem:test")
+        .build();
+}
+----
+
+Since TomEE 7.x you can also put properties on ApplicationComposer class using @ContainerProperties API:
+
+[source,java]
+----
+@ContainerProperties({
+  @ContainerProperties.Property(name = "db", value = "new://Resource?type=DataSource"),
+  @ContainerProperties.Property(name = "db.JdbcUrl", value = "jdbc:hsqldb:mem:test")
+})
+public class MyAppComposer() {
+  // ...
+}
+----
+
+==== @Component
+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.
+
+To do so just write a method decorated with @Component returning the instance you desire.
+
+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:
+
+[source,java]
+----
+@Component
+public SecurityService mockSecurity() {
+    return new MySecurityService();
+}
+----
+
+==== @Descriptors
+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:
+
+[source,java]
+----
+// runner if needed etc...
+@Descriptors(@Descriptor(name = "persistence.xml", path = "META-INF/persistence.xml"))
+public class MyTest {
+   //...
+}
+----
+
+Note: this can be put in a @Module method as well.
+
+==== Services
+If you want to test a JAXRS or JAXWS service you need to activate these services.
+
+To do so just add the needed dependency and use @EnableServices:
+
+[source,java]
+----
+// runner if needed etc...
+@EnableService("jaxrs") // jaxws supported as well
+public class MyTest {
+   //...
+}
+----
+
+==== Random port
+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.
+
+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):
+
+[source,java]
+----
+// runner, services if needed etc...
+public class MyTest {
+   @RandomPort("http")
+   private int port;
+}
+----
+
+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).
+
+==== Nice logs
+@SimpleLog annotation allows you to have one liner logs
+
+==== @JaxrsProvider
+@JaxrsProvider allows you to specify on a @Module method the list of JAXRS provider you want to use.
+
+==== Dependencies without hacky code
+@Jars allows you to add dependencies (scanned) to your application automatically (like CDI libraries):
+
+[source,java]
+----
+@Module
+@Classes(cdi = true, value = { C1.class, C2.class, E1.class })
+@Jars("deltaspike-")
+public WebApp app() {
+    return new WebApp();
+}
+----
+
+==== @Default
+@Default (openejb one not CDI one) automatically adds in the application target/classes as binaries and src/main/webapp as resources for maven projects.
+
+==== @CdiExtensions
+This annotation allows you to control which extensions are activated during the test.
+
+==== @AppResource
+This annotation allows injection of few particular test resources like:
+
+the test AppModule (application meta)
+the test Context (JNDI)
+the test ApplicationComposers (underlying runner)
+ContextProvider: allow to mock JAXRS contexts
+
+==== @MockInjector
+Allows to mock EJB injections. It decorates a dedicated method returning an instance (or Class) implementing FallbackPropertyInjector.
+
+==== @WebResource
+Allow for web application to add folders containing web resources.
+
+
+=== How to run it?
+==== JUnit
+If you use JUnit you have mainly 2 solutions to run you "model" using the ApplicationComposer:
+
+using ApplicationComposer runner:
+
+[source,java]
+----
+@RunWith(ApplicationComposer.class) public class MyTest { // ... }
+----
+
+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); }
+
+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).
+
+Finally just write `@Test` method using test class injections as if the test class was a managed bean!
+
+==== TestNG
+TestNG integration is quite simple today and mainly ApplicationComposerListener class you can configure as a listener to get ApplicationComposer features.
+
+Finally just write TestNG @Test method using test class injections as if the test class was a managed bean!
+
+==== Standalone
+Since TomEE 7.x you can also use ApplicationComposers to directly run you ApplicationComposer model as a standalone application:
+
+[source,java]
+----
+public class MyApp {
+    public static void main(String[] args) {
+        ApplicationComposers.run(MyApp.class, args);
+    }
+
+    // @Module, @Configuration etc...
+}
+----
+
+Tip: if MyApp has `@PostConstruct` 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!)
+
+=== JUnit Sample
+
+[source,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
+    }
+}
+----
+
+=== Start and Deploy once
+
+When having a huge suite of test it can be long to start/deploy/undeploy/shutdown he container/application for each method.
+
+That's why `SingleApplicationComposerRunner` allows to just reuse the same instance accross several test.
+
+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.
+
+
+Here a simple usage:
+
+[source,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() {
+        // ...
+    }
+}
+----
+
+TIP: if you need a real TomEE container then you can have a look to `TomEEEmbeddedSingleRunner` which does deploys the classpath
+using tomee-embedded.
+
+==== Configure what to deploy
+
+As all tests will reuse the same application the model (the class declaring the application with `@Classes`, `@Module` etc...) needs to be extracted from the test class itself.
+
+The application lookup uses this strategy (ordered):
+
+- the fully qualified name is read from the system property `tomee.application-composer.application`
+- a *single* class decorated with `@Application` is looked in the jar/folder containing the test class
+
+If you have several "groups" you can use JUnit `@Category` to differentiate them and write one application class by category. Then
+in `surefire` plugin you declare two `executions` enforcing the system property `tomee.application-composer.application` for each of them
+and the associated `@Category`.
+
+==== Available injections
+
+- If the application model class uses `@RandomPort` then the test classes can get it as well
+- CDI injections are supported
+- `@Application` on a field allows to get the application model to get injected
+
+Compared to a standalone usage it misses all other EE injections (`@PersistenceContext`, `@Resource` etc... but you can inject them in the application model
+and just expose them or wrap them in your tests thanks to the `@Application` field.
+
+
+=== Going further
+If you want to learn more about ApplicationComposer see link:../../../advanced/applicationcomposer/index.html[ApplicationComposer Advanced] page.


[02/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/statelesscontainer-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/statelesscontainer-config.mdtext b/docs/statelesscontainer-config.mdtext
new file mode 100644
index 0000000..460bbc4
--- /dev/null
+++ b/docs/statelesscontainer-config.mdtext
@@ -0,0 +1,458 @@
+Title: StatelessContainer Configuration
+
+
+A StatelessContainer can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <Container id="myStatelessContainer" type="STATELESS">
+        accessTimeout = 30 seconds
+        callbackThreads = 5
+        closeTimeout = 5 minutes
+        garbageCollection = false
+        idleTimeout = 0 minutes
+        maxAge = 0 hours
+        maxAgeOffset = -1
+        maxSize = 10
+        minSize = 0
+        replaceAged = true
+        replaceFlushed = false
+        strictPooling = true
+        sweepInterval = 5 minutes
+    </Container>
+
+Alternatively, a StatelessContainer can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    myStatelessContainer = new://Container?type=STATELESS
+    myStatelessContainer.accessTimeout = 30 seconds
+    myStatelessContainer.callbackThreads = 5
+    myStatelessContainer.closeTimeout = 5 minutes
+    myStatelessContainer.garbageCollection = false
+    myStatelessContainer.idleTimeout = 0 minutes
+    myStatelessContainer.maxAge = 0 hours
+    myStatelessContainer.maxAgeOffset = -1
+    myStatelessContainer.maxSize = 10
+    myStatelessContainer.minSize = 0
+    myStatelessContainer.replaceAged = true
+    myStatelessContainer.replaceFlushed = false
+    myStatelessContainer.strictPooling = true
+    myStatelessContainer.sweepInterval = 5 minutes
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared StatelessContainer a warning will be logged.  If a StatelessContainer is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple StatelessContainer declarations are allowed.
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+<tr>
+  <td><a href="#accessTimeout">accessTimeout</a></td>
+  <td><a href="configuring-durations.html">time</a></td>
+  <td>30&nbsp;seconds</td>
+  <td>
+Specifies the time an invokation should wait for an instance
+of the pool to become available.
+</td>
+</tr>
+<tr>
+  <td><a href="#callbackThreads">callbackThreads</a></td>
+  <td>int</td>
+  <td>5</td>
+  <td>
+The number of threads for constructing and destroying beans.
+</td>
+</tr>
+<tr>
+  <td><a href="#closeTimeout">closeTimeout</a></td>
+  <td><a href="configuring-durations.html">time</a></td>
+  <td>5&nbsp;minutes</td>
+  <td>
+Maximum time to wait for instances to be destroyed when shutting down the pool
+</td>
+</tr>
+<tr>
+  <td><a href="#garbageCollection">garbageCollection</a></td>
+  <td>boolean</td>
+  <td>false</td>
+  <td>
+Allows Garbage Collection to be used as a mechanism for shrinking
+the pool.
+</td>
+</tr>
+<tr>
+  <td><a href="#idleTimeout">idleTimeout</a></td>
+  <td><a href="configuring-durations.html">time</a></td>
+  <td>0&nbsp;minutes</td>
+  <td>
+Specifies the maximum time that an instance should be allowed to
+sit idly in the pool without use before it should be retired and
+removed.
+</td>
+</tr>
+<tr>
+  <td><a href="#maxAge">maxAge</a></td>
+  <td><a href="configuring-durations.html">time</a></td>
+  <td>0&nbsp;hours</td>
+  <td>
+Specifies the maximum time that an instance should live before
+it should be retired and removed from use.
+</td>
+</tr>
+<tr>
+  <td><a href="#maxAgeOffset">maxAgeOffset</a></td>
+  <td>int</td>
+  <td>-1</td>
+  <td>
+Applies to MaxAge usage and would rarely be changed, but is a
+nice feature to understand.
+</td>
+</tr>
+<tr>
+  <td><a href="#maxSize">maxSize</a></td>
+  <td>int</td>
+  <td>10</td>
+  <td>
+Specifies the size of the instance pool for this stateless
+SessionBean container.
+</td>
+</tr>
+<tr>
+  <td><a href="#minSize">minSize</a></td>
+  <td>int</td>
+  <td>0</td>
+  <td>
+Specifies the minimum number of bean instances that should be in
+the pool for each bean.
+</td>
+</tr>
+<tr>
+  <td><a href="#replaceAged">replaceAged</a></td>
+  <td>boolean</td>
+  <td>true</td>
+  <td>
+When `ReplaceAged` is enabled, any instances in the pool that
+expire due to reaching their `MaxAge` will be replaced immediately
+so that the pool will remain at its current size.
+</td>
+</tr>
+<tr>
+  <td><a href="#replaceFlushed">replaceFlushed</a></td>
+  <td>boolean</td>
+  <td>false</td>
+  <td>
+When `ReplaceFlushed` is enabled, any instances in the pool that
+are flushed will be replaced immediately so that the pool will
+remain at its current size.
+</td>
+</tr>
+<tr>
+  <td><a href="#strictPooling">strictPooling</a></td>
+  <td>boolean</td>
+  <td>true</td>
+  <td>
+StrictPooling tells the container what to do when the pool
+reaches it's maximum size and there are incoming requests that
+need instances.
+</td>
+</tr>
+<tr>
+  <td><a href="#sweepInterval">sweepInterval</a></td>
+  <td><a href="configuring-durations.html">time</a></td>
+  <td>5&nbsp;minutes</td>
+  <td>
+The frequency in which the container will sweep the pool and
+evict expired instances.
+</td>
+</tr>
+</table>
+
+
+
+<a name="accessTimeout"></a>
+## accessTimeout
+
+Specifies the time an invokation should wait for an instance
+of the pool to become available.
+
+After the timeout is reached, if an instance in the pool cannot
+be obtained, the method invocation will fail.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+"1 hour and 27 minutes and 10 seconds"
+
+Any usage of the `javax.ejb.AccessTimeout` annotation will
+override this setting for the bean or method where the
+annotation is used.
+
+
+<a name="callbackThreads"></a>
+## callbackThreads
+
+The number of threads for constructing and destroying beans.
+
+When sweeping the pool for expired instances a thread pool is
+used to process calling `@PreDestroy` on expired instances as well
+as creating new instances as might be required to fill the pool
+to the minimum after a Flush or `MaxAge` expiration.  The
+`CallbackThreads` setting dictates the size of the thread pool and
+is shared by all beans deployed in the container.
+
+
+<a name="closeTimeout"></a>
+## closeTimeout
+
+Maximum time to wait for instances to be destroyed when shutting down the pool
+
+PostConstruct methods are invoked on all instances in the pool
+when the bean is undeployed and its pool is closed.  The
+`CloseTimeout` specifies the maximum time to wait for the pool to
+close and `PostConstruct` methods to be invoked.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+`1 hour and 27 minutes and 10 seconds`
+
+
+<a name="garbageCollection"></a>
+## garbageCollection
+
+Allows Garbage Collection to be used as a mechanism for shrinking
+the pool.
+
+When set to true all instances in the pool, excluding
+the minimum, are eligible for garbage collection by the virtual
+machine as per the rules of `java.lang.ref.SoftReference` and can be
+claimed by the JVM to free memory.  Instances garbage collected
+will have their `@PreDestroy` methods called during finalization.
+
+In the OpenJDK VM the `-XX:SoftRefLRUPolicyMSPerMB` flag can adjust
+how aggressively SoftReferences are collected.  The default
+OpenJDK setting is 1000, resulting in inactive pooled instances
+living one second of lifetime per free megabyte in the heap, which
+is very aggressive.  The setting should be increased to get the
+most out of the `GarbageCollection` feature of the pool.  Much
+higher settings are safe.  Even a setting as high as 3600000 (1
+hour per free MB in the heap) does not affect the ability for the
+VM to garbage collect SoftReferences in the event that memory is
+needed to avoid an `OutOfMemoryException`.
+
+
+<a name="idleTimeout"></a>
+## idleTimeout
+
+Specifies the maximum time that an instance should be allowed to
+sit idly in the pool without use before it should be retired and
+removed.
+
+Only instances
+in surplus of the pool's `MinSize` are eligible to expire via `IdleTimeout`
+Instances that expire due to `IdleTimeout` will have their `@PreDestroy`
+methods invoked before being completely destroyed.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+"1 hour and 27 minutes and 10 seconds"
+
+
+<a name="maxAge"></a>
+## maxAge
+
+Specifies the maximum time that an instance should live before
+it should be retired and removed from use.
+
+This will happen
+gracefully.  Useful for situations where bean instances are
+designed to hold potentially expensive resources such as memory
+or file handles and need to be periodically cleared out.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+`1 hour and 27 minutes and 10 seconds`
+
+
+<a name="maxAgeOffset"></a>
+## maxAgeOffset
+
+Applies to MaxAge usage and would rarely be changed, but is a
+nice feature to understand.
+
+When the container first starts and the pool is filled to the
+minimum size, all those "minimum" instances will have the same
+creation time and therefore all expire at the same time dictated
+by the `MaxAge` setting.  To protect against this sudden drop
+scenario and provide a more gradual expiration from the start
+the container will spread out the age of the instances that fill
+the pool to the minimum using an offset.
+
+The `MaxAgeOffset` is not the final value of the offset, but
+rather it is used in creating the offset and allows the
+spreading to push the initial ages into the future or into the
+past.  The pool is filled at startup as follows:
+
+    for (int i = 0; i < poolMin; i++) {
+        long ageOffset = (maxAge / poolMin * i * maxAgeOffset) % maxAge;
+        pool.add(new Bean(), ageOffset));
+    }
+
+The default `MaxAgeOffset` is -1 which causes the initial
+instances in the pool to live a bit longer before expiring.  As
+a concrete example, let's say the MinSize is 4 and the MaxAge is
+100 years.  The generated offsets for the four instances created
+at startup would be 0, -25, -50, -75.  So the first instance
+would be "born" at age 0, die at 100, living 100 years.  The
+second instance would be born at -25, die at 100, living a total
+of 125 years.  The third would live 150 years.  The fourth 175
+years.
+
+A `MaxAgeOffset` of 1 would cause instances to be "born" older
+and therefore die sooner.  Using the same example `MinSize` of 4
+and `MaxAge` of `100 years`, the life spans of these initial four
+instances would be 100, 75, 50, and 25 years respectively.
+
+A `MaxAgeOffset` of 0 will cause no "spreading" of the age of the
+first instances used to fill the pool to the minimum and these
+instances will of course reach their MaxAge at the same time.
+It is possible to set to decimal values such as -0.5, 0.5, -1.2,
+or 1.2.
+
+
+<a name="maxSize"></a>
+## maxSize
+
+Specifies the size of the instance pool for this stateless
+SessionBean container.
+
+Each `@Stateless` bean will get its own instance pool.
+If StrictPooling is not used, instances
+will still be created beyond this number if there is demand, but
+they will not be returned to the pool and instead will be
+immediately expire.
+
+
+<a name="minSize"></a>
+## minSize
+
+Specifies the minimum number of bean instances that should be in
+the pool for each bean.
+
+Pools are prefilled to the minimum on
+startup.  Note this will create start order dependencies between
+other beans that also eagerly start, such as other `@Stateless`
+beans with a minimum or `@Singleton` beans using `@Startup`.  The
+`@DependsOn` annotation can be used to appropriately influence
+start order.
+
+The minimum pool size is rigidly maintained.  Instances in the
+minimum side of the pool are not eligible for `IdleTimeout` or
+`GarbageCollection`, but are subject to `MaxAge` and flushing.
+
+If the pool is flushed it is immediately refilled to the minimum
+size with `MaxAgeOffset` applied.  If an instance from the minimum
+side of the pool reaches its `MaxAge`, it is also immediately
+replaced.  Replacement is done in a background queue using the
+number of threads specified by `CallbackThreads`.
+
+
+<a name="replaceAged"></a>
+## replaceAged
+
+When `ReplaceAged` is enabled, any instances in the pool that
+expire due to reaching their `MaxAge` will be replaced immediately
+so that the pool will remain at its current size.
+
+Replacement
+is done in a background queue so that incoming threads will not
+have to wait for instance creation.
+
+The aim of his option is to prevent user requests from paying
+the instance creation cost as `MaxAge` is enforced, potentially
+while under heavy load at peak hours.
+
+Instances from the minimum side of the pool are always replaced
+when they reach their `MaxAge`, this setting dictates the
+treatment of non-minimum instances.
+
+
+<a name="replaceFlushed"></a>
+## replaceFlushed
+
+When `ReplaceFlushed` is enabled, any instances in the pool that
+are flushed will be replaced immediately so that the pool will
+remain at its current size.
+
+Replacement is done in a background
+queue so that incoming threads will not have to wait for
+instance creation.
+
+The aim of his option is to prevent user requests from paying
+the instance creation cost if a flush performed while under
+heavy load at peak hours.
+
+Instances from the minimum side of the pool are always replaced
+when they are flushed, this setting dictates the treatment of
+non-minimum instances.
+
+A bean may flush its pool by casting the `SessionContext` to
+`Flushable` and calling `flush()`.  See `SweepInterval` for details on
+how flush is performed.
+
+    import javax.annotation.Resource;
+    import javax.ejb.SessionContext;
+    import javax.ejb.Stateless;
+    import java.io.Flushable;
+    import java.io.IOException;
+
+    public class MyBean {
+
+        private SessionContext sessionContext;
+
+        public void flush() throws IOException {
+
+            ((Flushable) sessionContext).flush();
+        }
+    }
+
+
+<a name="strictPooling"></a>
+## strictPooling
+
+StrictPooling tells the container what to do when the pool
+reaches it's maximum size and there are incoming requests that
+need instances.
+
+With strict pooling, requests will have to wait for instances to
+become available. The pool size will never grow beyond the the
+set `MaxSize` value.  The maximum amount of time a request should
+wait is specified via the `AccessTimeout` setting.
+
+Without strict pooling, the container will create temporary
+instances to meet demand. The instances will last for just one
+method invocation and then are removed.
+
+Setting `StrictPooling` to `false` and `MaxSize` to `0` will result in
+no pooling. Instead instances will be created on demand and live
+for exactly one method call before being removed.
+
+
+<a name="sweepInterval"></a>
+## sweepInterval
+
+The frequency in which the container will sweep the pool and
+evict expired instances.
+
+Eviction is how the `IdleTimeout`,
+`MaxAge`, and pool "flush" functionality is enforced.  Higher
+intervals are better.
+
+Instances in use are excluded from sweeping.  Should an instance
+expire while in use it will be evicted immediately upon return
+to the pool.  Effectively `MaxAge` and flushes will be enforced as
+a part of normal activity or sweeping, while IdleTimeout is only
+enforcable via sweeping.  This makes aggressive sweeping less
+important for a pool under moderate load.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+`1 hour and 27 minutes and 10 seconds`
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/system-properties-files.mdtext
----------------------------------------------------------------------
diff --git a/docs/system-properties-files.mdtext b/docs/system-properties-files.mdtext
new file mode 100644
index 0000000..e457401
--- /dev/null
+++ b/docs/system-properties-files.mdtext
@@ -0,0 +1,20 @@
+Title: System Properties Files
+
+# OpenEJB System Properties File
+
+OpenEJB and TomEE are really configurable in particular through system properties.
+
+What is not so known is these system properties can be read from several places. The order is important,
+it means if the second place provides the same property than the first one, the first one will be
+omitted.
+
+Here how it works:
+
+* JVM system properties: -Dxxx=yyy
+* user system.properties: the file ${user.home}/.openejb/system.properties
+* instance system.properties: conf/system.properties
+
+Note: generally you place in the user system properties file the contant configuration (check my openejb
+version for instance).
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/system-properties.mdtext
----------------------------------------------------------------------
diff --git a/docs/system-properties.mdtext b/docs/system-properties.mdtext
new file mode 100644
index 0000000..8b53bd4
--- /dev/null
+++ b/docs/system-properties.mdtext
@@ -0,0 +1,64 @@
+Title: System Properties
+
+<a name="SystemProperties-Overridingopenejb.xml"></a>
+
+You can find a list of properties [here](properties-listing.html). But read on to understand how these can be used.
+
+#  Overriding openejb.xml
+
+Anything in the openejb.xml file can be overridden via system properties of
+the format: 
+
+
+  `-D<id>.<property-name>=<property-value>`
+
+..where id is the value in the config file for example: 
+
+
+    <Connector id="mysql"> 
+        JdbcDriver com.mysql.jdbc.Driver 
+        JdbcUrl jdbc:mysql://localhost/test 
+        UserName test 
+    </Connector> 
+
+
+Could be overridden as follows via system properties on the command line: 
+
+> ./bin/openejb start -Dmysql.JdbcDriver=com.mysql.jdbc.Driver
+> -Dmysql.JdbcUrl=jdbc:mysql://localhost/test -Dmysql.UserName=test
+
+<a name="SystemProperties-OverridingServerServices"></a>
+
+#  Overriding Server Services
+
+Any server service installed into OpenEJB can be overridden in the same
+fashion as things in the openejb.xml file.  
+
+For example, when OpenEJB starts it prints out the following:
+
+
+      ** Starting Services **
+      NAME		       IP	       PORT  
+      httpejbd	       0.0.0.0	       4204  
+      telnet	       0.0.0.0	       4202  
+      ejbd		       0.0.0.0	       4201  
+      hsql		       0.0.0.0	       9001  
+      activemq	       127.0.0.1       4206  
+      derbynet	       0.0.0.0	       4205  
+      admin thread	       0.0.0.0	       4200  
+
+
+Each of those has the same standard xinet.d-like properties which can also
+be configured as such:
+
+
+  `-D<id>.<property-name>=<property-value>`
+
+
+... where 'id' is the name of the server service and 'property-name' is one
+of the following: bind, port, threads, disabled, only_from.
+
+So to set the address and port the ejbd service will bind to, simply
+specify this on the command line:
+
+    ./bin/openejb start -Dejbd.bind=192.168.1.12 -Dejbd.port=9988
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/telnet-console.mdtext
----------------------------------------------------------------------
diff --git a/docs/telnet-console.mdtext b/docs/telnet-console.mdtext
new file mode 100644
index 0000000..793201e
--- /dev/null
+++ b/docs/telnet-console.mdtext
@@ -0,0 +1,163 @@
+Title: Telnet Console
+{note} Availability: Since OpenEJB 0.9{note}
+
+<a name="TelnetConsole-BasicUsage"></a>
+# Basic Usage
+
+To use OpenEJB's Telnet Console, simply boot your server normally.
+
+> $ ./bin/openejb start
+
+
+    OPENEJB_HOME=/Users/dblevins/Desktop/openejb-1.0
+    OpenEJB 1.0    build: 20060226-1701
+    http://www.openejb.org
+    resources 1
+    OpenEJB ready.
+    [init]
+ OpenEJB Remote Server
+      ** Starting Services **
+      NAME		       IP	       PORT  
+      webadmin	       0.0.0.0	       4203  
+      httpejbd	       0.0.0.0	       4204  
+      telnet	       0.0.0.0	       4202  
+      ejbd		       0.0.0.0	       4201  
+      admin 	       0.0.0.0	       4200  
+    -------
+    Ready!
+
+
+
+Then in another shell telnet in 
+
+> $ telnet localhost 4202
+
+    Trying ::1...
+    Connected to localhost.
+    Escape character is '^]
+'.
+    OpenEJB Remote Server Console
+    type 'help' for a list of commands
+    [openejb]
+$ help 
+     stop
+     exit
+     system
+     version
+     lookup
+     help
+    [openejb]
+$ system
+    Containers:
+     Default BMP Container
+     Default CMP Container
+     Default Stateful Container
+     Default Stateless Container
+    
+    Deployments:
+     client/tests/stateful/EncBean
+     client/tests/entity/cmp/RMI-over-IIOP/EJBHome
+     client/tests/stateful/BasicStatefulHome
+     ClientTools/ViewClass
+     Webadmin/Configuration
+     EJBGenerator/CreateEJB
+     ClientTools/InvokeObject
+     Webadmin/Properties
+     client/tests/stateful/RMI-over-IIOP/EJBHome
+     Webadmin/Home
+     client/tests/entity/bmp/allowed_operations/EntityHome
+     client/tests/entity/cmp/EncBean
+     httpd/DefaultBean
+     client/tests/stateful/BeanManagedBasicStatefulHome
+     client/tools/DatabaseHome
+     client/tests/entity/bmp/EncBean
+     config/webadmin/ConfigurationData
+     deploy/webadmin/Deployer
+     ClientTools/ViewJndi
+     Webadmin/DeploymentList
+     client/tests/stateless/BeanManagedBasicStatelessHome
+     Webadmin/CMPMapping
+     client/tests/stateless/EncBean
+     client/tests/stateful/BeanManagedTransactionTests/EJBHome
+     client/tests/entity/bmp/RMI-over-IIOP/EJBHome
+     Webadmin/ListLogs
+     client/tests/stateless/BeanManagedTransactionTests/EJBHome
+     ClientTools/ViewEjb
+     client/tests/entity/bmp/BasicBmpHome
+     mapping/webadmin/CMPMappingData
+     client/tests/stateless/BasicStatelessHome
+     client/tests/entity/cmp/BasicCmpHome
+     Webadmin/Deployment
+     httpd/session
+     client/tests/entity/cmp/allowed_operations/EntityHome
+     client/tests/stateless/RMI-over-IIOP/EJBHome
+    [openejb]
+$ exit
+    Connection closed by foreign host.
+
+
+<a name="TelnetConsole-ConfiguringtheTelnetService"></a>
+#  Configuring the Telnet Service
+
+The configuration of all server services (network facing services) is done
+in xinet.d style config files.	The telnet shell is controlled via the
+$OPENEJB_HOME/conf/telnet.properties file.  This file is created for you
+automatically after the first time OpenEJB boots.
+
+> $ cat conf/telnet.properties 
+
+        server	= org.openejb.server.telnet.TelnetServer
+        bind	= 127.0.0.1
+        port	= 4202
+        disabled	= false
+        threads	= 5
+    #   only_from	= 192.168.1.123
+
+
+You can change the IP, port, and even the number of threads allowed to
+concurrently access the Telnet service via this file.
+
+<a name="TelnetConsole-DisablingtheTelnetService"></a>
+#  Disabling the Telnet Service
+
+Simply edit the config file and set 'disabled' to true
+
+
+        disabled	= true
+
+
+Then restart OpenEJB.
+
+<a name="TelnetConsole-RestrictingAccess"></a>
+#  Restricting Access
+
+It is unlikely you want just anyone to be able to login and execute
+commands.  While you can't restrict access on a user basis, yet, you can
+restrict access to specific hosts.  Host based access control (HBA) is a
+built-in part of any Server Service in OpenEJB and the Telnet Service is no
+different.   This is done with the 'only_from' property, which like the
+rest of the file is a direct copy of the xinet.d syntax for HBA.  
+
+For an example to restrict access to the localhost, you could configure the
+Telnet Service like this:
+
+
+        server	= org.openejb.server.telnet.TelnetServer
+        bind	= 127.0.0.1
+        port	= 4202
+        disabled	= false
+        threads	= 5
+        only_from	= localhost
+
+
+If you wanted to restrict access to localhost *and* say the hosts
+192.168.1.207 and 192.168.1.16, you can simply add them to the list.
+
+
+        server	= org.openejb.server.telnet.TelnetServer
+        bind	= 127.0.0.1
+        port	= 4202
+        disabled	= false
+        threads	= 5
+        only_from	= localhost, 192.168.1.207, 192.168.1.16
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tip-concurrency.mdtext
----------------------------------------------------------------------
diff --git a/docs/tip-concurrency.mdtext b/docs/tip-concurrency.mdtext
new file mode 100644
index 0000000..d9935ef
--- /dev/null
+++ b/docs/tip-concurrency.mdtext
@@ -0,0 +1,22 @@
+Title: Global Concurrency Management
+
+If for whatever reason you want to define the global default concurrency add this to your META-INF/ejb-jar.xml:
+
+	<?xml version="1.0"?>
+	<ejb-jar
+		xmlns="http://java.sun.com/xml/ns/javaee"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
+		version="3.1">
+
+		<enterprise-beans>
+			<session>
+				<ejb-name>*</ejb-name>
+				<concurrency-management-type>Bean</concurrency-management-type>
+			</session>
+		<enterprise-beans>
+	</ejb-jar>
+	
+You may need to create the file if it does not exist.	
+
+	src/main/resources/META-INF/ejb-jar.xml
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tip-jersey-client.mdtext
----------------------------------------------------------------------
diff --git a/docs/tip-jersey-client.mdtext b/docs/tip-jersey-client.mdtext
new file mode 100644
index 0000000..763fb79
--- /dev/null
+++ b/docs/tip-jersey-client.mdtext
@@ -0,0 +1,18 @@
+Title: Jersey Client
+
+If you have an application that uses jersey-client in any way then it may fail with an error along the lines of:
+
+    Caused by: java.lang.ClassNotFoundException: com.sun.jersey.core.util.FeaturesAndProperties
+    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java)
+    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java)
+    at org.apache.tomee.catalina.LazyStopWebappClassLoader.loadClass(LazyStopWebappClassLoader.java)
+    ... 34 more
+
+This is due to the fact that the jersey-core.jar contains some classes that should not be deployed as part of a javaEE application. For example, it contains javax.ws.rs.Path but does not contain javax.ws.rs.core.Configurable, so the jar is usually ignored by TomEE. 
+
+You could switch to using the [Apache CXF Client](http://cxf.apache.org/), which is what we would recommend.
+If you really want to keep Jersey then you can use set the following property in your *[TomEE]\conf\system.properties*
+
+    openejb.api.javax.ws.rs.Path.validation=false
+
+This will then allow Jersey classes to be loaded by TomEE (After a restart).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tip-weblogic.mdtext
----------------------------------------------------------------------
diff --git a/docs/tip-weblogic.mdtext b/docs/tip-weblogic.mdtext
new file mode 100644
index 0000000..42e783c
--- /dev/null
+++ b/docs/tip-weblogic.mdtext
@@ -0,0 +1,13 @@
+Title: WebLogic Lookup
+
+How to lookup WebLogic Objects from within a TomEE context:
+
+	Hashtable<String, String> props = new Hashtable<String, String>();
+	props.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
+	props.put(javax.naming.Context.URL_PKG_PREFIXES, "weblogic.jndi.factories"); 
+	props.put("java.naming.provider.url", "t3://your.host.name:7023");
+	Context ctx = new InitialContext(props);
+
+	IService s = (IService) ctx.lookup("java:global.com.test.ServiceImpl!com.test.IService");
+	
+Obviously you will need to change the actual lookup to your specific object, but you get the idea.	
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomcat-object-factory.mdtext
----------------------------------------------------------------------
diff --git a/docs/tomcat-object-factory.mdtext b/docs/tomcat-object-factory.mdtext
new file mode 100644
index 0000000..1a3c77e
--- /dev/null
+++ b/docs/tomcat-object-factory.mdtext
@@ -0,0 +1,12 @@
+Title: Tomcat Object Factory
+*The TomcatEjbFactory as discussed in the [OnJava article "OpenEJB: EJB for Tomcat"](http://www.onjava.com/pub/a/onjava/2003/02/12/ejb_tomcat.html)
+ is no longer required.*
+
+As of OpenEJB 3.0 references from Servlets to EJBs happen automatically
+with usage of the [@EJB annotation](openejbx30:injection-of-other-ejbs-example.html)
+ in the Servlet, Filter or Listener or with the <ejb-ref> or
+<ejb-local-ref> declared in the web.xml.
+
+See the [Tomcat Integration](openejbx30:tomcat.html)
+ page for the most up-to-date details on using OpenEJB inside Tomcat.
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomee-and-eclipse.mdtext
----------------------------------------------------------------------
diff --git a/docs/tomee-and-eclipse.mdtext b/docs/tomee-and-eclipse.mdtext
new file mode 100644
index 0000000..d7aa1f9
--- /dev/null
+++ b/docs/tomee-and-eclipse.mdtext
@@ -0,0 +1,141 @@
+Title: TomEE and Eclipse
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+Using TomEE in Eclipse is pretty simple since it uses the existing Tomcat 7 server adaptor that comes
+with Eclipse.
+
+## Quick Start
+
+An excellent instructional video with step-by-step instructions on how to install Eclipse, TomEE
+and create/deploy your first project is available on YouTube here: [Getting Started with Apache TomEE][1] (Remember to select the 'Generate web.xml descriptor' checkbox during project setup. Otherwise the ejb does not get injected and you will get an error.).
+
+1. Download and install both Apache TomEE and Eclipse.
+
+1. Start Eclipse and from the main menu go to **File** - **New** - **Dynamic Web Project**
+
+1. Enter a new project name
+
+1. In the **Target Runtime** section click on the **New Runtime** button.
+
+1. Pick **Apache Tomcat v7.0** and click Next
+
+1. Change the **Name** field to *TomEE* to indicate that this is a TomEE server rather than a Tomcat server.
+
+1. Set the **Tomcat installation directory** by clicking the **Browse** button and selecting the folder
+where you extracted TomEE
+
+1. Click **Finish** to return to the New Project dialog
+
+1. Click **Finish** to complete creating your new Project
+
+1. When you're ready to deploy your project, right-click your project and select Run As - Run On Server
+
+1. Make sure that the *TomEE* environment is selected in the **Server runtime environment**
+
+1. On the **Run on Server** dialog, click the **Always use this server when running this project** checkbox
+
+1. Click **Finish** - Eclipse will start TomEE and deploy your project
+
+## Advanced installation
+
+1. In Eclipse, click on the **Servers** tab, right click and select New - Server.
+
+1. Select **Apache - Tomcat v7.0 Server** and click **Next**
+
+1. Set the **Tomcat installation directory** by clicking the **Browse** button and selecting the folder
+where you extracted TomEE
+
+1. Add your webapp to the server. Click **Finish**.
+
+1. In the **Servers** tab, double click on your server to open up the **Overview** page.
+Click on the **Modules** tab
+
+1. Click **Add External Web Module**. In the **Add Web Module** dialog, for document base, browse
+to `<TomEE>/webapps/tomee`. Set **Path:** to `/tomee`. Uncheck **Auto reloading enabled**. Click OK.
+
+1. Return to the **Overview** tab for the server.
+
+1. Deselect the **Modules auto reload by default** checkbox.
+
+1. If you do not want Eclipse to take control of your TomEE installation, select **Use Workspace Metadata**
+under **Server Locations**. Please review the *Workspace Metadata Installation* section below for additional steps
+in this scenario. Otherwise, select **Use Tomcat Installation**
+
+1. Click the Save button in Eclipse so the server configuration gets saved.
+
+1. Click on your webapp project, then select Project - clean. Hit OK. This will cause
+Eclipse to clean and rebuild
+
+1. In the **Servers** tab, right click on the server and select **Publish**.
+
+1. Start the server.
+
+### Workspace Metadata Installation
+If you used **Use Workspace Metadata** in the **Server Locations** definition of the TomEE server,
+you will have to add TomEE specific configuration files to your Servers project in your workspace
+in case you need to change system properties or add containers / resources and have those reflected in the
+server running under Eclipse.
+
+1. Locate your TomEE server configuration in Workspace / Servers
+
+1. Right-click the server project and select **Import**
+
+1. Select General - File System and click **Next**
+
+1. Browse to your `<TomEE>/conf` folder
+
+1. Select the following files for import: `logging.properties`, `system.properties` and `tomee.xml`
+
+1. Click **Finish** to import the files.
+
+1. In the **Servers** tab, right-click the TomEE server and select **Publish** to publish the files to the
+Eclipse metadata folder
+
+If you need to modify system properties or change your TomEE resources, containers, etc., you now need to make
+those changes in the Workspace / Servers / `<`Your Server`>` location and publish them to the server for
+the changes to take effect.
+
+### JSP Hot Deployment
+
+If jsp changes are not being hot deployed then this is because the jsp servlet is set to development=false in the web.xml file. To allow jsp hot deployment alter this value to true and restart Tomee.
+
+This is the relevant snippet of the web.xml file.
+
+    <servlet>
+        <servlet-name>jsp</servlet-name>
+        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
+        ....
+        <init-param>
+            <param-name>development</param-name>
+            <param-value>true</param-value>
+        </init-param>
+        ....
+    </servlet>
+
+## How to use JULI for TomEE in WTP?
+
+It seems that WTP doesn't manage correctly Tomcat logging configuration (which needs to be done through
+system properties). A quick workaround is to add these properties manually:
+
+    -Djava.util.logging.config.file="<tomee>/conf/logging.properties"
+    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
+
+More information on: http://wiki.eclipse.org/WTP_Tomcat_FAQ#How_do_I_enable_the_JULI_logging_in_a_Tomcat_5.5_Server_instance.3F
+
+
+  [1]: http://www.youtube.com/watch?v=Lr8pxEACVRI "Getting Started with Apache TomEE"

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomee-and-hibernate.mdtext
----------------------------------------------------------------------
diff --git a/docs/tomee-and-hibernate.mdtext b/docs/tomee-and-hibernate.mdtext
new file mode 100644
index 0000000..79c11d3
--- /dev/null
+++ b/docs/tomee-and-hibernate.mdtext
@@ -0,0 +1,159 @@
+Title: TomEE and Hibernate
+
+Apache TomEE ships with OpenJPA as the default JPA provider, however any valid JPA 2.0 provider can be used.
+
+The basic steps are:
+
+ 1. Add the Hibernate jars to `<tomee-home>/lib/`
+ 2. Configure the webapp or the server to use Hibernate
+
+
+**The atifact versions defined here are just for example, so please feel free to use current library versions.**
+
+# Webapp Configuration
+
+Any webapp can specify the JPA provider it would like to use via the `persistence.xml` file, which can be at any of the following locations in a webapp
+
+ - `WEB-INF/persistence.xml` of the `.war` file
+ - `META-INF/persistence.xml` in any jar located in `WEB-INF/lib/`
+
+A single webapp may have many `persistence.xml` files and each may use whichever JPA provider it needs.
+
+The following is an example of a fairly common `persistence.xml` for Hibernate
+
+    <persistence version="1.0"
+           xmlns="http://java.sun.com/xml/ns/persistence"
+           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+           xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
+           http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
+
+      <persistence-unit name="movie-unit">
+        <provider>org.hibernate.ejb.HibernatePersistence</provider>
+        <jta-data-source>movieDatabase</jta-data-source>
+        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+
+        <properties>
+          <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+        </properties>
+      </persistence-unit>
+    </persistence>
+
+
+Note, TomEE will automatically add the following property unless it is explicitly configured:
+
+          <property name="hibernate.transaction.manager_lookup_class"
+                    value="org.apache.openejb.hibernate.TransactionManagerLookup"/>
+
+# Server Configuration
+
+The default JPA provider can be changed at the server level to favor Hibernate over OpenJPA.
+
+Using the `<tomee-home>/conf/system.properties` file or any other valid means of setting `java.lang.System.getProperties()`, the following standard properties can set the detault for any `persistence.xml` file.
+
+ - `javax.persistence.provider`
+ - `javax.persistence.transactionType`
+ - `javax.persistence.jtaDataSource`
+ - `javax.persistence.nonJtaDataSource`
+
+So, for example, Hibernate can become the default provider via setting
+
+ `CATALINA_OPTS=-Djavax.persistence.provider=org.hibernate.ejb.HibernatePersistence`
+
+You **must** of course add the Hibernate libraries to `<tomee-home>/lib/` for this to work.
+
+# Hibernate libraries
+
+Jars needed for Hibernate 4.x:
+
+Add:
+
+- `<tomee-home>/lib/antlr-2.7.7.jar`
+- `<tomee-home>/lib/dom4j-1.6.1.jar`
+- `<tomee-home>/lib/hibernate-commons-annotations-4.0.1.Final.jar`
+- `<tomee-home>/lib/hibernate-core-4.1.4.Final.jar`
+- `<tomee-home>/lib/hibernate-entitymanager-4.1.4.Final.jar`
+- `<tomee-home>/lib/hibernate-validator-4.3.0.Final.jar`
+- `<tomee-home>/lib/jboss-logging-3.1.0.GA.jar`
+
+Remove (optional):
+
+- `<tomee-home>/lib/asm-3.2.jar`
+- `<tomee-home>/lib/openjpa-2.2.0.jar`
+
+# Ehcache (optional)
+
+To use Hibernate with Ehcache, add:
+
+- `<tomee-home>/lib/hibernate-ehcache-4.1.4.Final.jar`
+- `<tomee-home>/lib/ehcache-core-2.5.1.jar`
+- `<tomee-home>/lib/ehcache-terracotta-2.5.1.jar`
+- `<tomee-home>/lib/terracotta-toolkit-1.4-runtime-4.1.0.jar`
+
+# Infinispan (optional)
+
+To use Infinispan cache (default Hibernate 2nd level cache) you need the below jars:
+
+<pre><code>
+    <lib>org.infinispan:infinispan-core:5.1.4.FINAL</lib>
+    <lib>org.hibernate:hibernate-infinispan:${hibernate.core.version}</lib>
+    <lib>org.jgroups:jgroups:3.0.9.Final</lib>
+    <lib>org.jboss.marshalling:jboss-marshalling-river:1.3.11.GA:</lib>
+    <lib>org.jboss.marshalling:jboss-marshalling:1.3.11.GA</lib>
+    <lib>org.codehaus.woodstox:woodstox-core-asl:4.1.1</lib>
+    <lib>org.codehaus.woodstox:stax2-api:3.1.1</lib>
+    <lib>org.rhq.helpers:rhq-pluginAnnotations:3.0.4</lib>
+    <lib>org.jboss.logmanager:jboss-logmanager:1.2.2.GA</lib>
+</code></pre>
+
+There are many guides on how to use 2nd level cache with JPA 2.
+You can remove OpenJPA jar so less jars are in `<tomee-home>/lib` folder.
+Also, be sure to put your Database JDBC driver in `<tomee-home>/lib`.
+
+The actual Maven dependencies for your project can be added in the usual way:
+
+		<!-- Hibernate -->		
+		<dependency>
+			<groupId>antlr</groupId>
+			<artifactId>antlr</artifactId>
+			<version>2.7.7</version>
+		</dependency>		
+		<dependency>
+			<groupId>dom4j</groupId>
+			<artifactId>dom4j</artifactId>
+			<version>1.6.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.hibernate.common</groupId>
+			<artifactId>hibernate-commons-annotations</artifactId>
+			<version>4.0.5.Final</version>
+		</dependency>
+		<dependency>
+			<groupId>org.hibernate</groupId>
+			<artifactId>hibernate-core</artifactId>
+			<version>4.2.16.Final</version>
+		</dependency>
+		<dependency>
+			<groupId>org.hibernate</groupId>
+			<artifactId>hibernate-ehcache</artifactId>
+			<version>4.2.16.Final</version>
+		</dependency>
+		<dependency>
+			<groupId>org.hibernate</groupId>
+			<artifactId>hibernate-entitymanager</artifactId>
+			<version>4.2.16.Final</version>
+		</dependency>
+		<dependency>
+			<groupId>org.hibernate</groupId>
+			<artifactId>hibernate-validator</artifactId>
+			<version>4.3.2.Final</version>
+		</dependency>
+		<dependency>
+			<groupId>org.jboss.logging</groupId>
+			<artifactId>jboss-logging</artifactId>
+			<version>3.1.0.GA</version>
+		</dependency>
+		<dependency>
+			<groupId>org.javassist</groupId>
+			<artifactId>javassist</artifactId>
+			<version>3.15.0-GA</version>
+		</dependency>

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomee-and-intellij.mdtext
----------------------------------------------------------------------
diff --git a/docs/tomee-and-intellij.mdtext b/docs/tomee-and-intellij.mdtext
new file mode 100644
index 0000000..0358a6b
--- /dev/null
+++ b/docs/tomee-and-intellij.mdtext
@@ -0,0 +1,77 @@
+Title: TomEE and Intellij
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+Intellij is the preferred editor of most of the developers on Apache TomEE.  It's fast and light and goes out of its way
+to guess what you're thinking and act accordingly in efforts to save you time and increase your enjoyment.  In this regard
+TomEE and Intellij have a lot in common.
+
+While TomEE works with most IDEs via the Tomcat adapter and this covers WAR files, JetBrains has stepped up to the plate
+with a TomEE specific adapter to allow deployment of the full range of archives that TomEE supports.  The evolving
+TomEE/Intellij integration sets the pace for all other IDE integrations.
+[Feature requests very welcome!](http://youtrack.jetbrains.com/issues/IDEA)  TomEE is to Intellij
+what GlassFish is to NetBeans and your feedback is a critcal part of that.
+
+
+# Getting Started
+
+We will use one of the existing [examples][1] for this demo. Let's import it.
+  ![alt text][2]
+  ![alt text][3]
+  ![alt text][4]
+
+Give a minute while Intellij imports the dependencies.
+  ![alt text][5]
+
+It's time to run the application. Open "Edit Configurations".
+  ![alt text][6]
+
+Click the "+" icon and select "TomEE Server" and "Local".
+  ![alt text][7]
+
+If your server is still not configured, click the "Configure" button and point it to your local TomEE installation.
+  ![alt text][8]
+
+If you see a warning message like "No artifacts marked for deployment", click the "Fix" button and select one of the options.
+  ![alt text][9]
+
+You can change the "Application Context".
+  ![alt text][10]
+
+Now you can run it. Click the "play" button.
+  ![alt text][11]
+  ![alt text][12]
+
+Your application is up and running.
+  ![alt text][13]
+  ![alt text][14]
+
+
+  [1]: https://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/
+  [2]: http://people.apache.org/~tveronezi/tomee/tomee_site/intellij_integration/windows8_01.png
+  [3]: http://people.apache.org/~tveronezi/tomee/tomee_site/intellij_integration/windows8_02.png
+  [4]: http://people.apache.org/~tveronezi/tomee/tomee_site/intellij_integration/windows8_03.png
+  [5]: http://people.apache.org/~tveronezi/tomee/tomee_site/intellij_integration/windows8_04.png
+  [6]: http://people.apache.org/~tveronezi/tomee/tomee_site/intellij_integration/windows8_05.png
+  [7]: http://people.apache.org/~tveronezi/tomee/tomee_site/intellij_integration/windows8_06.png
+  [8]: http://people.apache.org/~tveronezi/tomee/tomee_site/intellij_integration/windows8_07.png
+  [9]: http://people.apache.org/~tveronezi/tomee/tomee_site/intellij_integration/windows8_08.png
+  [10]: http://people.apache.org/~tveronezi/tomee/tomee_site/intellij_integration/windows8_09.png
+  [11]: http://people.apache.org/~tveronezi/tomee/tomee_site/intellij_integration/windows8_10.png
+  [12]: http://people.apache.org/~tveronezi/tomee/tomee_site/intellij_integration/windows8_11.png
+  [13]: http://people.apache.org/~tveronezi/tomee/tomee_site/intellij_integration/windows8_12.png
+  [14]: http://people.apache.org/~tveronezi/tomee/tomee_site/intellij_integration/windows8_13.png
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomee-and-netbeans.mdtext
----------------------------------------------------------------------
diff --git a/docs/tomee-and-netbeans.mdtext b/docs/tomee-and-netbeans.mdtext
new file mode 100644
index 0000000..b0783e0
--- /dev/null
+++ b/docs/tomee-and-netbeans.mdtext
@@ -0,0 +1,93 @@
+Title: TomEE and NetBeans
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+		   
+There is some great information over at [Geertjan's Blog](https://blogs.oracle.com/geertjan/entry/tomee_apache_cxf_and_maven) on how to hit the ground running with Netbeans, CXF and Maven. Geertjan is a Netbeans evangelist and has an incredible insight into everything Netbeans.
+
+**WORKAROUND**: There is a known issue with Netbeans 8 and TomEE detection that currently requires the following workaround:
+
+Netbeans 8 has a bug in which it fails to find the **tomee-common-[version].jar** in the **[TomEE]/lib** directory. The solution is to simply rename the jar file to an older version.
+
+For example, you have **[TomEE]/lib/tomee-common-1.6.0.2.jar** or **[TomEE]/lib/tomee-common-1.7.1.jar**. Rename these files to **[TomEE]/lib/tomee-common-1.6.0.jar**
+
+This should resolve the detection issue and will not break your installation - Be sure to document the change for yourself as a reminder.
+
+###Quickstart
+Check out this video on [How to Consume REST in a Java Client ](https://www.youtube.com/watch?v=HISV7eagogI)
+
+You can download Netbeans 8 here: [https://netbeans.org/community/releases/80/](https://netbeans.org/community/releases/80/)
+
+Here is a quick run through on how to set up TomEE. We will use one of the existing examples for this demo. Let's import it.  
+
+  ![Subversion Checkout][1]
+  ![Subversion URL][2]
+  ![Local Project][3]
+  ![alt text][4]
+
+Click 'Open Project'.  
+
+  ![alt text][5]
+  ![alt text][6]
+
+It's time to add our local TomEE server. Click 'Tools' and then 'Servers'.  
+
+  ![alt text][7]
+
+Select 'Apache Tomcat'.  
+
+  ![alt text][8]
+  
+Select your local TomEE directory.  
+
+  ![alt text][9]
+  ![alt text][10]
+  ![alt text][11]
+
+It's time to run it. Click the play button.  
+
+  ![alt text][12]
+
+Select 'Apache Tomcat'.  
+
+  ![alt text][13]
+
+Give it some time. It's building your application.  
+
+  ![alt text][14]
+
+Done. Your server is up and running.  
+
+  ![alt text][15]
+  ![alt text][16]
+
+
+  [1]: http://people.apache.org/~tveronezi/tomee/tomee_site/netbeans_integration/windows8_01.png
+  [2]: http://people.apache.org/~tveronezi/tomee/tomee_site/netbeans_integration/windows8_02.png
+  [3]: http://people.apache.org/~tveronezi/tomee/tomee_site/netbeans_integration/windows8_03.png
+  [4]: http://people.apache.org/~tveronezi/tomee/tomee_site/netbeans_integration/windows8_04.png
+  [5]: http://people.apache.org/~tveronezi/tomee/tomee_site/netbeans_integration/windows8_05.png
+  [6]: http://people.apache.org/~tveronezi/tomee/tomee_site/netbeans_integration/windows8_06.png
+  [7]: http://people.apache.org/~tveronezi/tomee/tomee_site/netbeans_integration/windows8_07.png
+  [8]: http://people.apache.org/~tveronezi/tomee/tomee_site/netbeans_integration/windows8_08.png
+  [9]: http://people.apache.org/~tveronezi/tomee/tomee_site/netbeans_integration/windows8_09.png
+  [10]: http://people.apache.org/~tveronezi/tomee/tomee_site/netbeans_integration/windows8_10.png
+  [11]: http://people.apache.org/~tveronezi/tomee/tomee_site/netbeans_integration/windows8_11.png
+  [12]: http://people.apache.org/~tveronezi/tomee/tomee_site/netbeans_integration/windows8_12.png
+  [13]: http://people.apache.org/~tveronezi/tomee/tomee_site/netbeans_integration/windows8_13.png
+  [14]: http://people.apache.org/~tveronezi/tomee/tomee_site/netbeans_integration/windows8_14.png
+  [15]: http://people.apache.org/~tveronezi/tomee/tomee_site/netbeans_integration/windows8_15.png
+  [16]: http://people.apache.org/~tveronezi/tomee/tomee_site/netbeans_integration/windows8_16.png
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomee-and-security.mdtext
----------------------------------------------------------------------
diff --git a/docs/tomee-and-security.mdtext b/docs/tomee-and-security.mdtext
new file mode 100644
index 0000000..e6b9123
--- /dev/null
+++ b/docs/tomee-and-security.mdtext
@@ -0,0 +1,41 @@
+Title:     Apache TomEE and security
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+Rather than providing its own security implementation, TomEE makes full use of the security features that are part of Tomcat. Any Catalina realm is supported or you can provide your own security module using the login.config file. 
+
+For example, to add some simple security to the [moviefun application](http://tomee.apache.org/examples-trunk/webapps/moviefun/README.html) , all we would need to do is: 
+
+1.    Add some users to the tomcat-users.xml file     
+2.    Add the necessary @DefineRoles and @RolesAllowed annotations on MoviesImpl     
+3.    Add some security config to do HTTP Basic authentication to web.xml Webservice security is also looked after – username/password based security (HTTP basic, or WS-Security) uses the same Tomcat security. Certificate based security is also available.
+
+To put it short,
+
+*    TomEE uses Tomcat's Security Realm
+
+*     Extra TomEE layer adds support for JAAS JACC WS Security
+
+*     Supports any org.apache.catalina.Realm implementation
+
+*     E.g. add users to $CATALINA_BASE/conf/tomcat-users.xml
+
+*     Alternatively use login.config to provide your own security module
+
+
+####See Also:
+[TomEE-and-JAAS](tomee-jaas.html) 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomee-and-webspheremq.mdtext
----------------------------------------------------------------------
diff --git a/docs/tomee-and-webspheremq.mdtext b/docs/tomee-and-webspheremq.mdtext
new file mode 100644
index 0000000..e44aa65
--- /dev/null
+++ b/docs/tomee-and-webspheremq.mdtext
@@ -0,0 +1,132 @@
+Title: TomEE and WebSphere MQ
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+**Steps to integrate TomEE with Websphere MQ** 
+
+1. Unzip rar file place jars under tomee/lib
+
+2. Added the below to conf/tomee.xml
+    
+<pre>
+    &lt;tomee&gt;     
+    &lt;Container id=&quot;wmq&quot; type=&quot;MESSAGE&quot;&gt;
+    ResourceAdapter=wmqRA
+    MessageListenerInterface=javax.jms.MessageListener
+    ActivationSpecClass=com.ibm.mq.connector.inbound.ActivationSpecImpl
+    &lt;/Container&gt;
+
+
+   &lt;Resource id=&quot;wmqRA&quot; type=&quot;com.ibm.mq.connector.ResourceAdapterImpl&quot; class-name=&quot;com.ibm.mq.connector.ResourceAdapterImpl&quot;&gt;
+    connectionConcurrency=5  
+    maxConnections=10 
+    logWriterEnabled=true 
+    reconnectionRetryCount=5 
+    reconnectionRetryInterval=300000 
+    traceEnabled=false 
+    traceLevel=3 
+   &lt;/Resource&gt;
+
+   &lt;Resource **id=&quot;qcf&quot;**  type=&quot;javax.jms.ConnectionFactory&quot; class-name=&quot;com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl&quot;&gt;
+    TransactionSupport=none 
+    ResourceAdapter=wmqRA 
+    HostName=10.a.b.c   
+    Port=1414 
+    QueueManager=QM_TIERL
+   Channel=SYSTEM.ADMIN.SVRCONN
+   TransportType=Client
+   UserName=xyz
+   Password=*****
+  &lt;/Resource&gt;
+
+  &lt;Resource id=&quot;wmq-javax.jms.QueueConnectionFactory&quot;  type=&quot;javax.jms.QueueConnectionFactory&quot; class-name=&quot;com.ibm.mq.connector.outbound.ManagedQueueConnectionFactoryImpl&quot;&gt;
+    TransactionSupport=xa 
+    ResourceAdapter=wmqRA 
+  &lt;/Resource&gt;
+
+  &lt;Resource id=&quot;wmq-javax.jms.TopicConnectionFactory&quot;  type=&quot;javax.jms.TopicConnectionFactory&quot; class-name=&quot;com.ibm.mq.connector.outbound.ManagedTopicConnectionFactoryImpl&quot;&gt;
+    TransactionSupport=xa 
+    ResourceAdapter=wmqRA 
+  &lt;/Resource&gt;
+
+  &lt;Resource **id=&quot;queue&quot;** type=&quot;javax.jms.Queue&quot;  
+class-name=&quot;com.ibm.mq.connector.outbound.MQQueueProxy&quot;&gt; 
+    arbitraryProperties 
+    baseQueueManagerName 
+    baseQueueName 
+    CCSID=1208 
+    encoding=NATIVE 
+    expiry=APP 
+    failIfQuiesce=true 
+    persistence=APP 
+    priority=APP 
+    readAheadClosePolicy=ALL 
+    targetClient=JMS 
+  &lt;/Resource&gt;
+
+  &lt;Resource id=&quot;wmq-javax.jms.Topic&quot; type=&quot;javax.jms.Topic&quot; class-name=&quot;com.ibm.mq.connector.outbound.MQTopicProxy&quot;&gt;
+    arbitraryProperties 
+    baseTopicName 
+    brokerCCDurSubQueue=SYSTEM.JMS.D.CC.SUBSCRIBER.QUEUE 
+    brokerDurSubQueue=SYSTEM.JMS.D.SUBSCRIBER.QUEUE 
+    brokerPubQueue 
+    brokerPubQueueManager 
+    brokerVersion=1 
+    CCSID=1208 
+    encoding=NATIVE 
+    expiry=APP 
+    failIfQuiesce=true 
+    persistence=APP 
+    priority=APP 
+    readAheadClosePolicy=ALL 
+    targetClient=JMS 
+  &lt;/Resource&gt; 
+
+ &lt;/tomee&gt;	 
+
+3. In web.xml add the below to access resources
+ &lt;resource-ref&gt; 
+     &lt;res-ref-name&gt;myqcf&lt; /res-ref-name&gt; 
+    &lt;res-type&gt;javax.jms.ConnectionFactory &lt; /res-type&gt;
+    &lt;res-auth&gt;Container&lt;/res-auth&gt;&lt; /br&gt;
+    &lt;res-sharing-scope&gt;Shareable&lt; /res-sharing-scope&gt;
+    &lt;mapped-name&gt;qcf&lt; /mapped-name&gt;
+  &lt;/resource-ref&gt;
+  
+ &lt;resource-env-ref&gt;
+   &lt;resource-env-ref-name&gt;myqueue&lt; /resource-env-ref-name&gt;
+   &lt;resource-env-ref-type&gt;javax.jms.Queue&lt; /resource-env-ref-type&gt;
+   &lt;mapped-name&gt;queue&lt; /mapped-name&gt;
+  &lt;/resource-env-ref&gt;
+</pre>
+
+**Code:**
+<pre>    
+    @Resource(name = &quot;qcf&quot;) 
+    private ConnectionFactory connectionFactory; 
+    @Resource(name = &quot;queue&quot;) 
+    private Queue queue;
+    Connection connection = connectionFactory.createConnection();
+    Session session = connection.createSession(false, QueueSession.AUTO_ACKNOWLEDGE);
+    MessageProducer producer = session.createProducer(queue);
+    TextMessage message = session.createTextMessage();
+    message.setText(&quot;Test Message&quot;);
+    connection.start();
+    producer.send(message);
+    session.close();
+    connection.close();
+</pre>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomee-cluster.txt
----------------------------------------------------------------------
diff --git a/docs/tomee-cluster.txt b/docs/tomee-cluster.txt
new file mode 100644
index 0000000..e74c37d
--- /dev/null
+++ b/docs/tomee-cluster.txt
@@ -0,0 +1,72 @@
+The scope of this document to to define how Apache TomEE can be configured for HA (High Availability) clustering.  
+
+The configuration will focus on two local instances, with a view to an open ended remote configuration.  
+
+It is beyond the scope of this documentation to discuss Tomcat CLustering in depth.
+Please read the [Apache Tomcat Clustering Howto](http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html) for more information.
+
+###Local cluster
+To test clustering locally (on the same physical machine) the default ports need to be modified on the second TomEE server.
+You do not need to do this if the second TomEE instance is to run on different machine or virtual host.
+
+Note: You cannot test load balancing on a local cluster as they will be running of different ports.
+This configuration is only useful for testing Session Replication and application deployment.
+
+In the [TomEE]/conf/server.xml look for and change the following port definitions to something like:
+
+	<Server port="9005" shutdown="SHUTDOWN">
+
+	<Connector port="9080" protocol="HTTP/1.1"
+				   connectionTimeout="20000"
+				   redirectPort="9443" />
+				   
+	<!--
+	<Connector port="9443" protocol="HTTP/1.1" SSLEnabled="true"
+			   maxThreads="150" scheme="https" secure="true"
+			   clientAuth="false" sslProtocol="TLS" />
+	-->
+
+	<Connector port="9009" protocol="AJP/1.3" redirectPort="9443" />
+
+###Test Startup	
+Start both TomEE servers together and check for and resolve any errors before proceeding any further.
+
+Once you are sure both servers can run without error add the following to the **<Host>** section of both server.xml files:
+
+	...
+	<Engine name="Catalina" defaultHost="localhost">
+		...
+		<Host name="localhost"  appBase="webapps"
+            unpackWARs="true" autoDeploy="true">
+			
+			<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 
+
+Start both TomEE servers together and again check for and resolve any errors before proceeding any further.
+Basically look in both [TomEE]/logs/catalina.[date].log and search for *"SimpleTcpCluster memberAdded"*.
+This lets us know that the cluster added a new member.
+
+Stop both the servers, as we will need to add some more configuration to the *server.xml*.
+
+First create the following directory structure within the TomEE installation (You can change the names later to suit your needs if required).
+
+	[TomEE]/cluster
+	[TomEE]/cluster/temp
+	[TomEE]/cluster/watch
+	[TomEE]/cluster/webapps
+
+We now need to add these paths to the **Host** section of the configuration file:
+	
+	...
+	<Engine name="Catalina" defaultHost="localhost">
+		...
+		<Host name="localhost"  appBase="webapps"
+            unpackWARs="true" autoDeploy="true">
+			
+			<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"> 	
+				<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
+					tempDir="cluster/temp"
+					deployDir="cluster/webapps"
+					watchDir="cluster/watch"
+					watchEnabled="true"/>
+			</Cluster>
+		...
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/tomee-directory-structure.mdtext
----------------------------------------------------------------------
diff --git a/docs/tomee-directory-structure.mdtext b/docs/tomee-directory-structure.mdtext
new file mode 100644
index 0000000..da6d2e0
--- /dev/null
+++ b/docs/tomee-directory-structure.mdtext
@@ -0,0 +1,57 @@
+Title:
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+#TomEE Directory Layout:
+
+TomEE directory layout is the same as that of Tomcat, with a few changes as described below.
+
+Considering this root to be the $tomee-install-dir>
+
+<pre>
+/bin
+  Added tomee.sh (Access all TomEE tools: cipher, deploy, properties, undeploy)
+  Added TomEE.*.exe (Windows service binaries)
+  Added service*.bat (Windows service installer - uses binaries above)
+  Modified catalina.(sh|bat) (Optional - add the OpenJPA javaagent to enhance JPA entities. Only necessary if you use both JPA and the OpenJPA implementation and you did not enhance bytecode at build time)
+
+/conf
+  Added system.properties (Easy way to configure whatever you want on TomEE. Check it out and look into, you will discover so many interesting properties)
+  Added tomee.xml (The place where you can declare/configure resources, containers, Transaction manager, etc)
+  Modified server.xml (As in tomcat with one extra listener - can configure ports, hosts, engines, threadpools etc)    
+  Modified tomcat-users.xml (optional - only changed to define tomee user to secure the webapp/tomee GUI)
+
+/endorsed
+  Added annotation-api.jar (Override Tomcat default jar, because not compliant with the current JEE 6 specification)
+  Added jaxb-(api|impl).jar (Override JDK 1.6 default implementation cause too old for the JEE 6 specification)
+  
+/lib
+  That's where all the magic is. This directory will receive a set of new jars. First, it gets all openejb-* and tomee-* jars. It also contains dependencies (Specification implementations: openjpa-*, openwebbeans-*, etc).
+  Removed annotation-api.jar (Non compliant with JEE 6 specification. See endorsed/)
+  Removed el-api.jar (Already contained in javaee-api.jar provided by TomEE in that same directory)
+ 
+/webapps    
+  Works the same way as it does for Tomcat. Drop your directories/wars in here!
+  Removed examples (Just because most of people does not care)
+  
+/apps (does not exist by default)
+  Can receive WARs of course, but also JAR and EAR files. Optionally add your resources.xml file here.
+     
+/webapps/tomee (added but optional)
+  The TomEE graphical user interface. That's the administration interface.
+  ** This webapp is mandatory if you need EJBs remote invocation
+</pre>
\ No newline at end of file


[16/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/configuring-datasources-in-tests.mdtext
----------------------------------------------------------------------
diff --git a/docs/configuring-datasources-in-tests.mdtext b/docs/configuring-datasources-in-tests.mdtext
new file mode 100644
index 0000000..d2fa362
--- /dev/null
+++ b/docs/configuring-datasources-in-tests.mdtext
@@ -0,0 +1,56 @@
+Title: Configuring DataSources in Tests
+<a name="ConfiguringDataSourcesinTests-InitialContextproperties"></a>
+# InitialContext properties
+
+You can configure data sources from within your test case (avoiding the
+need for an `openejb.xml` entirely) like so:
+
+
+    Properties p = new Properties();
+    p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+    
+    p.put("myDataSource", "new://Resource?type=DataSource");
+    p.put("myDataSource.JdbcDriver", "org.apache.derby.jdbc.EmbeddedDriver");
+    p.put("myDataSource.JdbcUrl", "jdbc:derby:derbyDB;create=true");
+    p.put("myDataSource.JtaManaged", "true");
+    
+    Context context = new InitialContext(p);
+
+Under certain circumstances it may be necessary to load two versions of the same driver.
+This is possible by definition of a classpath for the resource which points to the
+specific driver files required for the DataSource:
+
+    p.put("myDataSourceOne", "new://Resource?type=DataSource&classpath=/path/to/driverVersionOne.jar");
+    p.put("myDataSourceOne.JdbcDriver", "org.apache.derby.jdbc.EmbeddedDriver");
+    p.put("myDataSource.JdbcUrl", "jdbc:derby:myDatabaseOne;create=true");
+    ....
+    p.put("myDataSourceTwo", "new://Resource?type=DataSource&classpath=/path/to/driverVersionTwo.jar");
+    p.put("myDataSourceTwo.JdbcDriver", "org.apache.derby.jdbc.EmbeddedDriver");
+    p.put("myDataSource.JdbcUrl", "jdbc:derby:myDatabaseTwo;create=true");
+
+This will allow an application to communicate through legacy drivers to the same JDBC provider.
+
+See [Embedded Configuration](embedded-configuration.html)
+ for further details on properties and overrides.
+
+See [Containers and Resources](containers-and-resources.html)
+ for a full list of supported Resource types and their properties.
+
+<a name="ConfiguringDataSourcesinTests-Noteon<jta-data-source>and<non-jta-data-source>"></a>
+## Note on &lt;jta-data-source> and &lt;non-jta-data-source>
+
+When configuring DataSources to be used by persistence.xml files, the
+DataSource supplied for `<jta-data-source>` is typically identical to the
+`<non-jta-data-source>`, but with the `JtaManaged` property set differently.
+Keeping with our philosophy to free you up from redundant configuration, we
+will happily auto-create a missing jta-data-source or non-jta-data-source
+based upon the supplied DataSource.
+
+In the example above, a new DataSource would be generated as an exact copy
+but with the name "myDataSourceUnmanaged" and its `JtaManaged` flag set to
+`false`.	If the supplied DataSource was not `JtaManaged`, then the generated
+DataSource would be called "myDataSourceJta" and have its `JtaManaged` flag
+set to `true`.
+
+When relying on this functionality it is not necessary to specify the name
+of the generated DataSource in the `persistence.xml` file.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/configuring-datasources.mdtext
----------------------------------------------------------------------
diff --git a/docs/configuring-datasources.mdtext b/docs/configuring-datasources.mdtext
new file mode 100644
index 0000000..90da5e7
--- /dev/null
+++ b/docs/configuring-datasources.mdtext
@@ -0,0 +1,167 @@
+Title: Configuring DataSources in tomee.xml
+
+<a name="ConfiguringDataSources-ConfiguringDataSourcesinopenejb.xml"></a>
+
+
+The *<Resource>* element is used to configure a *javax.sql.DataSource*. It
+is also used to configure other resources like Timers, Topics, Queues.	We
+will see some examples of using <Resource> to configure a DataSource.
+
+The <Resource> element is designed after @Resource annotation and has
+similar attributes.
+
+For example, this annotation in your bean:
+
+    @Resource(name = "myDerbyDatasource", type = javax.sql.DataSource.class)
+
+
+Would map to a Resource declared in your openejb.xml as follows:
+
+    <Resource id="myDerbyDatasource" type="javax.sql.DataSource">
+     . . . .
+    <Resource>
+
+
+Note that in the xml element, the _type_ value of _javax.sql.DataSource_
+can abbreviated to just _DataSource_ as follows:
+
+    <Resource id="myDerbyDatasource" type="DataSource">
+     . . . .
+    <Resource>
+	
+It is also possible to specify the path to the driver jar file using a classpath attribute like so:	
+
+	<Resource id="myDerbyDatasource" type="DataSource" classpath="/path/to/driver.jar">
+     . . . .
+    <Resource>
+
+...Or in a [Maven](http://maven.apache.org/) environment like so:
+
+	<Resource id="myDerbyDatasource" type="DataSource" classpath="mvn:org.apache.derby:derby:10.10.1.1">
+     . . . .
+    <Resource>	
+
+See [Containers and Resources](containers-and-resources.html)
+ for a complete list of supported DataSource properties.
+
+See [DataSource Password Encryption](datasource-password-encryption.html)
+ for information on specifying non-plain-text database passwords in your openejb.xml file.
+
+See [Common DataSource Configurations](common-datasource-configurations.html)
+ for a list of the commonly used databases and their driver configurations.
+ 
+See [DataSource Configuration by Creator](datasource-configuration-by-creator.html)
+ for a list of the different properties supported for each data source creator.
+
+You may also need data partitioning per customer or depending on any other
+business criteria. That's also an available feature. See [Dynamic Datasource](dynamic-datasource.html) for more details.
+
+<a name="ConfiguringDataSources-JNDInamesforconfiguredDataSources"></a>
+## JNDI names for configured DataSources
+
+<a name="ConfiguringDataSources-Example1"></a>
+### Example 1
+
+
+    <Resource id="Default JDBC Database" type="DataSource">
+       . . . . .
+    </Resource>
+
+The global jndi name would be *java:openejb/Resource/Default JDBC Database*
+
+<a name="ConfiguringDataSources-Example2"></a>
+### Example 2
+
+
+    <Resource id="Derby Database"  type="DataSource">
+      . . . . .
+    </Resource>
+
+The global jndi name would be *java:openejb/Resource/Derby Database*
+
+<a name="ConfiguringDataSources-ObtainingaDataSource"></a>
+## Obtaining a DataSource
+
+DataSource references in your ejb should get automatically mapped to the
+Resource you declare.  The shortest and easiest rule is that *if your
+reference name matches a Resource in your openejb.xml, that's the one you
+get*.&nbsp; Essentially, the rules for mapping are as follows.
+
+1. Name Attribute Match - @Resource with a name attribute matching the
+resource name gets that resource injected
+1. Injected Name Match - variable name matching the resource name gets that 
+resource injected
+1. No Match - nothing matches a resource name, so the first resource
+available gets injected
+
+
+There are various ways one could obtain a DataSource now.  Lets take an
+example of Derby.
+
+With a Resource declaration in your openejb.xml like this:
+
+
+    <Resource id="myDerbyDatabase"	type="DataSource">
+      . . . . .
+    </Resource>
+
+There are several possible ways to refer to it, as follows.
+
+
+*BY matching variable name to resource name*
+
+    @Stateless
+    public class FooBean {
+        @Resource DataSource myDerbyDatabase;
+    }
+
+    
+*OR BY matching name*
+    
+    @Stateless
+    public class FooBean {
+        @Resource(name="myDerbyDatabase")
+        DataSource dataSource;
+    }
+
+
+*OR BY JNDI lookup*
+
+    @Resource(name="myDerbyDatabase", type=javax.sql.DataSource.class)
+    @Stateless
+    public class FooBean {
+
+        public void setSessionContext(SessionContext sessionContext) {
+            DataSource dataSource = (DataSource)
+            sessionContext.lookup("myDerbyDatabase");
+        }
+
+        public void someOtherMethod() throws Exception {
+            InitialContext initialContext = new InitialContext();
+            DataSource dataSource = (DataSource)
+            initialContext.lookup("java:comp/env/myDerbyDatabase");
+        }
+    }
+
+*OR*
+
+    <resource-ref>
+      <res-ref-name>myDerbyDatabase</res-ref-name>
+      <res-type>javax.sql.DataSource</res-type>
+    </resource-ref>
+
+*OR*
+
+    <resource-ref>
+       <res-ref-name>jdbc/myDerbyDatabase</res-ref-name>
+       <res-type>javax.sql.DataSource</res-type>
+    </resource-ref>
+
+*OR*
+
+    <resource-ref>
+       <res-ref-name>someOtherName</res-ref-name>
+       <res-type>javax.sql.DataSource</res-type>
+       <mapped-name>myDerbyDatabase</mapped-name>
+    </resource-ref>
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/configuring-durations.mdtext
----------------------------------------------------------------------
diff --git a/docs/configuring-durations.mdtext b/docs/configuring-durations.mdtext
new file mode 100644
index 0000000..9b35bce
--- /dev/null
+++ b/docs/configuring-durations.mdtext
@@ -0,0 +1,64 @@
+Title: Configuring Durations
+The time based configuration properties of containers and beans support
+plain english, such as:
+
+ - "1 hour" 
+ - "27 minutes"
+ - "10 seconds"
+
+For convenience it is possible to specify a _compound_ form, such as:
+
+ - "3 days and 2 hours"
+ - "1 hour, 45 minutes"
+ - "15 minutes, 23 seconds, and 10 milliseconds"
+
+Spaces are also optional between the number and the time unit, which can be nice when using the abbreviated forms:
+
+ - "1hr" 
+ - "27m"
+ - "10s"
+ - "3d and 2hr"
+ - "1hr, 45min"
+ - "15m, 23s, and 10ms"
+
+
+Abbreviations are accepted as follows:
+
+
+      if (u.equalsIgnoreCase("NANOSECONDS")) return TimeUnit.NANOSECONDS;
+      if (u.equalsIgnoreCase("NANOSECOND")) return TimeUnit.NANOSECONDS;
+      if (u.equalsIgnoreCase("NANOS")) return TimeUnit.NANOSECONDS;
+      if (u.equalsIgnoreCase("NANO")) return TimeUnit.NANOSECONDS;
+      if (u.equalsIgnoreCase("NS")) return TimeUnit.NANOSECONDS;
+    
+      if (u.equalsIgnoreCase("MICROSECONDS")) return TimeUnit.MICROSECONDS;
+      if (u.equalsIgnoreCase("MICROSECOND")) return TimeUnit.MICROSECONDS;
+      if (u.equalsIgnoreCase("MICROS")) return TimeUnit.MICROSECONDS;
+      if (u.equalsIgnoreCase("MICRO")) return TimeUnit.MICROSECONDS;
+    
+      if (u.equalsIgnoreCase("MILLISECONDS")) return TimeUnit.MILLISECONDS;
+      if (u.equalsIgnoreCase("MILLISECOND")) return TimeUnit.MILLISECONDS;
+      if (u.equalsIgnoreCase("MILLIS")) return TimeUnit.MILLISECONDS;
+      if (u.equalsIgnoreCase("MILLI")) return TimeUnit.MILLISECONDS;
+      if (u.equalsIgnoreCase("MS")) return TimeUnit.MILLISECONDS;
+    
+      if (u.equalsIgnoreCase("SECONDS")) return TimeUnit.SECONDS;
+      if (u.equalsIgnoreCase("SECOND")) return TimeUnit.SECONDS;
+      if (u.equalsIgnoreCase("SEC")) return TimeUnit.SECONDS;
+      if (u.equalsIgnoreCase("S")) return TimeUnit.SECONDS;
+    
+      if (u.equalsIgnoreCase("MINUTES")) return TimeUnit.MINUTES;
+      if (u.equalsIgnoreCase("MINUTE")) return TimeUnit.MINUTES;
+      if (u.equalsIgnoreCase("MIN")) return TimeUnit.MINUTES;
+      if (u.equalsIgnoreCase("M")) return TimeUnit.MINUTES;
+    
+      if (u.equalsIgnoreCase("HOURS")) return TimeUnit.HOURS;
+      if (u.equalsIgnoreCase("HOUR")) return TimeUnit.HOURS;
+      if (u.equalsIgnoreCase("HRS")) return TimeUnit.HOURS;
+      if (u.equalsIgnoreCase("HR")) return TimeUnit.HOURS;
+      if (u.equalsIgnoreCase("H")) return TimeUnit.HOURS;
+    
+      if (u.equalsIgnoreCase("DAYS")) return TimeUnit.DAYS;
+      if (u.equalsIgnoreCase("DAY")) return TimeUnit.DAYS;
+      if (u.equalsIgnoreCase("D")) return TimeUnit.DAYS;
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/configuring-javamail.mdtext
----------------------------------------------------------------------
diff --git a/docs/configuring-javamail.mdtext b/docs/configuring-javamail.mdtext
new file mode 100644
index 0000000..cb6fbb0
--- /dev/null
+++ b/docs/configuring-javamail.mdtext
@@ -0,0 +1,37 @@
+Title: Configuring JavaMail
+<a name="ConfiguringJavaMail-DeclaringaJavaMailResource"></a>
+#  Declaring a JavaMail Resource
+
+The basics are that any properties listed in the <Resource> element are
+given directly to the javamail provider via
+javax.mail.Session.getDefaultInstance(Properties props).
+
+Here might be some example properties.
+
+    <Resource id="SuperbizMail" type="javax.mail.Session">
+       mail.smtp.host=mail.superbiz.org
+       mail.smtp.port=25
+       mail.transport.protocol=smtp
+       mail.smtp.auth=true
+       mail.smtp.user=someuser
+       password=mypassword
+    </Resource>
+
+    
+You can create as many <Resource> entries like this as you wish, they just
+have to have a unique 'id'.
+    
+Careful not to add whitespace at the end of your property values.  A
+java.util.Properties object will leave those in the property values and
+they will be passed to the JavaMail provider with the whitespace on the end
+which may cause issues if the provider does not actively trim the values
+before attempting to use them.
+ 
+# Overriding
+    
+If you wanted to do a System property or InitialContext property override
+of the above example mail session, you could do so like this:
+    
+    java ... -DSuperbizMail.mail.smtp.host=localhost
+    
+    

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/configuring-logging-in-tests.mdtext
----------------------------------------------------------------------
diff --git a/docs/configuring-logging-in-tests.mdtext b/docs/configuring-logging-in-tests.mdtext
new file mode 100644
index 0000000..3797b3d
--- /dev/null
+++ b/docs/configuring-logging-in-tests.mdtext
@@ -0,0 +1,114 @@
+Title: Configuring Logging in Tests
+<a name="ConfiguringLogginginTests-embedded.logging.properties"></a>
+# embedded.logging.properties
+
+When in embedded mode OpenEJB uses an embedded.logging.properties file
+packed in our openejb-core jar which use to configure the logging.  This
+logging configuration is a bit lighter than the conf/logging.properties
+file created in a full standalone OpenEJB setup.
+
+When searching for any config file in the classpath, multiple files with
+the same name may exist.  OpenEJB will always attempt to favor the one
+closest to the openejb.base variable.  This variable is set by default to
+the current directory where your vm is executing, which is more than likely
+the directory of your current module.  So simply adding a file named
+embedded.logging.properties to your module may be all that you need to
+specify a new logging configuration for your tests.
+
+Alternatively, you can set "openejb.logger.external" to "true" as a system
+property (will not work as an InitialContext property).  Then OpenEJB will
+not attempt to configure logging at all and you can configure logging with
+Log4j directly using any of its APIs; xml, properties, or code.
+
+There are a couple good reasons for *not* replacing the
+embedded.logging.properties file.
+
+1. If you want to just change 5% of the logging settings, why take control
+over the other 95% as well.
+1. We do occasionally add new logging categories.  If you are not replacing
+the embedded.logging.properties you will pick these up automatically when
+you upgrade.
+
+<a name="ConfiguringLogginginTests-Overriding(recommended)"></a>
+# Overriding (recommended)
+
+As mentioned in [Embedded Configuration](embedded-configuration.html)
+ much can be done with simple overriding.  The default
+embedded.logging.properties is quite good and there is really no need to
+replace it completely if all you want to do is tweak a few values. 
+
+You can also put logging tweaks right in your InitialContext properties
+like so:
+
+
+    Properties p = new Properties();
+    p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+    
+    p.put("log4j.rootLogger", "fatal,C");
+    p.put("log4j.category.OpenEJB", "warn");
+    p.put("log4j.category.OpenEJB.options", "info");
+    p.put("log4j.category.OpenEJB.server", "info");
+    p.put("log4j.category.OpenEJB.startup", "info");
+    p.put("log4j.category.OpenEJB.startup.service", "warn");
+    p.put("log4j.category.OpenEJB.startup.config", "info");
+    p.put("log4j.category.OpenEJB.hsql", "info");
+    p.put("log4j.category.CORBA-Adapter", "info");
+    p.put("log4j.category.Transaction", "warn");
+    p.put("log4j.category.org.apache.activemq", "error");
+    p.put("log4j.category.org.apache.geronimo", "error");
+    p.put("log4j.category.openjpa", "error");
+    p.put("log4j.appender.C", "org.apache.log4j.ConsoleAppender");
+    p.put("log4j.appender.C.layout", "org.apache.log4j.SimpleLayout");
+    
+    Context context = new InitialContext(p);
+
+
+Essentially, everything starting with "log4j." gets applied as overrides on
+top of the embedded.logging.properties we find in the classpath.  This
+makes it possible to easily tweak the log levels while debugging a
+particular test.
+
+Note, that InitialContext properties can also be supplied in a
+jndi.properties file in the classpath or via system properties. The
+overriding order is as follows: 1 = highest, 4 = lowest.
+
+1. InitialContext properties
+1. jndi.properties in classpath
+1. system propertes
+1. embedded.logging.properties in classpath
+
+By default there are no logging settings in 1-3, so #4 is the only source
+of logging information.
+
+<a name="ConfiguringLogginginTests-Defaultembedded.logging.propertiescontents"></a>
+# Default embedded.logging.properties contents
+
+For your purposes, here are the contents of the default
+embedded.logging.properties file contained in OpenEJB 3.1.1
+
+
+    log4j.rootLogger		   = fatal,C
+    log4j.category.OpenEJB		   = warn
+    log4j.category.OpenEJB.server	   = info
+    log4j.category.OpenEJB.startup	   = info
+    log4j.category.OpenEJB.startup.service = warn
+    log4j.category.OpenEJB.startup.config = info
+    log4j.category.OpenEJB.hsql	   = info
+    log4j.category.CORBA-Adapter	   = info
+    log4j.category.Transaction	   = warn
+    log4j.category.org.apache.activemq = error
+    log4j.category.org.apache.geronimo = error
+    log4j.category.openjpa		   = error
+    
+    log4j.appender.C		   = org.apache.log4j.ConsoleAppender
+    log4j.appender.C.layout 	   = org.apache.log4j.SimpleLayout
+
+
+Here is that file's location in svn as well as all of the previous
+versions.  Future versions will follow the same pattern.
+
+- [http://svn.apache.org/repos/asf/openejb/tags/openejb-3.1.1/container/openejb-core/src/main/resources/embedded.logging.properties](http://svn.apache.org/repos/asf/openejb/tags/openejb-3.1.1/container/openejb-core/src/main/resources/embedded.logging.properties)
+- [http://svn.apache.org/repos/asf/openejb/tags/openejb-3.1/container/openejb-core/src/main/resources/embedded.logging.properties](http://svn.apache.org/repos/asf/openejb/tags/openejb-3.1/container/openejb-core/src/main/resources/embedded.logging.properties)
+- [http://svn.apache.org/repos/asf/openejb/tags/openejb-3.0/container/openejb-core/src/main/resources/embedded.logging.properties](http://svn.apache.org/repos/asf/openejb/tags/openejb-3.0/container/openejb-core/src/main/resources/embedded.logging.properties)
+- [http://svn.apache.org/repos/asf/openejb/tags/openejb-3.0-beta-2/container/openejb-core/src/main/resources/embedded.logging.properties](http://svn.apache.org/repos/asf/openejb/tags/openejb-3.0-beta-2/container/openejb-core/src/main/resources/embedded.logging.properties)
+- [http://svn.apache.org/repos/asf/openejb/tags/openejb-3.0-beta-1/container/openejb-core/src/main/resources/embedded.logging.properties](http://svn.apache.org/repos/asf/openejb/tags/openejb-3.0-beta-1/container/openejb-core/src/main/resources/embedded.logging.properties)

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/configuring-persistenceunits-in-tests.mdtext
----------------------------------------------------------------------
diff --git a/docs/configuring-persistenceunits-in-tests.mdtext b/docs/configuring-persistenceunits-in-tests.mdtext
new file mode 100644
index 0000000..c27aa49
--- /dev/null
+++ b/docs/configuring-persistenceunits-in-tests.mdtext
@@ -0,0 +1,141 @@
+Title: Configuring PersistenceUnits in Tests
+<a name="ConfiguringPersistenceUnitsinTests-Overridingthepersistence.xml"></a>
+# Overriding the persistence.xml
+
+The most common situation in EJB related testing by far is the need to
+alter your persistence.xml for a test environment.
+
+<a name="ConfiguringPersistenceUnitsinTests-Overridingthe<jta-data-source>and<non-jta-data-source>"></a>
+## Overriding the jta-data-source and non-jta-data-source
+
+OpenEJB will automatically use the DataSources you have setup in your test
+environment, we're pretty good at guessing the right DataSources you intend
+even if the names don't match exactly -- or in some cases at all.  If there
+is only one DataSource configured, it's very easy for us to guess the
+DataSource to use.
+
+This allows you to keep your persistence.xml configured for your production
+environment and helps eliminate the need for a "test" persistence.xml
+(though we do have that functionality).  A log line will be printed saying
+if we had to adjust the DataSources of your persistence.xml.
+
+<a name="ConfiguringPersistenceUnitsinTests-Overridingthepersistence-unit<properties>"></a>
+##  Overriding the persistence-unit properties
+
+You can override any property in your test setup via either system
+properties or the initial context properties.  The format is:
+
+`<unit-name>.<property>=<value>`
+
+So for example with the following persistence.xml:
+
+    <persistence>
+      <persistence-unit name="movie-unit">
+        <provider>org.hibernate.ejb.HibernatePersistence</provider>
+        <jta-data-source>movieDatabase</jta-data-source>
+        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+        <properties>
+          <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+          <property name="hibernate.max_fetch_depth" value="3"/>
+        </properties>
+      </persistence-unit>
+    </persistence>
+
+    
+You can override and add persistence unit properties in your test case.
+There are currently no facilities for removing them (if you have a need for
+that let us know -- it hasn't really come up so far).
+
+    Properties p = new Properties();
+    p.put(Context.INITIAL_CONTEXT_FACTORY,"org.apache.openejb.client.LocalInitialContextFactory");
+
+    p.put("movie-unit.hibernate.hbm2ddl.auto", "update");
+    p.put("movie-unit.hibernate.dialect", "org.hibernate.dialect.HSQLDialect");
+
+    context = new InitialContext(p);
+
+The overriding order is as follows: 1 = highest, 4 = lowest.
+    
+1. InitialContext properties
+1. jndi.properties from the classpath
+1. System properties
+1. persistence.xml properties
+     
+By default there are no overrides in 1-3, so #4 is the only source of
+information.  
+    
+In the above example there would be exactly three properties for the "movie-unit" persistence unit:
+
+  - hibernate.hbm2ddl.auto = update
+  - hibernate.max_fetch_depth = 3
+  - hibernate.dialect = org.hibernate.dialect.HSQLDialect
+    
+These properties would be passed by OpenEJB directly to the persistence
+provider (in this case Hibernate).  With one exception OpenEJB does not
+understand or modify these properties.	Details on that one exception
+below.
+
+### Common mistakes
+
+Note that you **must** use the **unit name** as the prefix.  This will not work:
+
+        Properties p = new Properties();
+        p.put(Context.INITIAL_CONTEXT_FACTORY,"org.apache.openejb.client.LocalInitialContextFactory");
+
+        p.put("hibernate.hbm2ddl.auto", "update");
+        p.put("hibernate.dialect", "org.hibernate.dialect.HSQLDialect");
+
+        context = new InitialContext(p);
+
+Currently, only properties that start with the unit name are search and applied.
+
+###  No need to specify a "transaction lookup" property
+
+All vendors have such a property for getting a reference to the container's
+TransactionManager and nothing works if this is not set correctly to the
+OpenEJB specific class.  To make the lives of users easier, OpenEJB will
+take the liberty of setting it for you.
+
+Here are the persistence provider classes we understand and the defaults we
+will set for you:
+
+#### Provider org.hibernate.ejb.HibernatePersistence
+
+When using this provider, the *hibernate.transaction.manager_lookup_class*
+will be automatically set by OpenEJB to
+_org.apache.openejb.hibernate.TransactionManagerLookup_.  If the property
+is already set in the persistence unit it will be overwritten if it starts
+with the standard "org.hibernate.transaction." prefix.	
+
+Custom lookup implementations will never be overwritten automatically.
+
+#### Provider oracle.toplink.essentials.PersistenceProvider
+
+Or _oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider_.
+
+When using this provider, the *toplink.target-server* will be automatically
+set by OpenEJB to _org.apache.openejb.toplink.JTATransactionController_. 
+If the property is already set in the persistence unit it will be
+overwritten if it starts with the standard "oracle.toplink.transaction."
+prefix.  
+
+Custom transaction controller implementations will never be overwritten automatically.
+
+#### Provider org.eclipse.persistence.jpa.PersistenceProvider
+
+Or _org.eclipse.persistence.jpa.osgi.PersistenceProvider_.
+
+When using this provider, the *eclipselink.target-server* will be
+automatically set by OpenEJB to
+_org.apache.openejb.eclipselink.JTATransactionController_.  If the property
+is already set in the persistence unit it will be overwritten if it starts
+with the standard "org.eclipse.persistence.transaction." prefix.  
+
+Custom transaction controller implementations will never be overwritten automatically.
+
+#### Provider org.apache.openjpa.persistence.PersistenceProviderImpl
+
+OpenJPA is capable of discovering the correct method for locating the
+TransactionManager without the need for users to specify the specific
+strategy.  Therefore no specific "magic" is required.
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/constructor-injection.mdtext
----------------------------------------------------------------------
diff --git a/docs/constructor-injection.mdtext b/docs/constructor-injection.mdtext
new file mode 100644
index 0000000..071594d
--- /dev/null
+++ b/docs/constructor-injection.mdtext
@@ -0,0 +1,95 @@
+Title: Constructor Injection
+For those of you who would like to use final fields, wish to avoid numerous
+setters, or dislike private field injection and would like nothing more
+than to just use plan old java constructors, your wish has come true.  This
+is a feature we intended to add to OpenEJB 3.0 but didn't have time for. 
+We're happy to bring it to the OpenEJB 3.1 release and with a bit of luck
+and support from people like yourself, we'll see this as an EJB 3.1 feature
+as well.
+
+
+    @Stateless
+    public class WidgetBean implements Widget {
+    
+        @EJB(beanName = "FooBean")
+        private final Foo foo;
+    
+        @Resource(name = "count")
+        private final int count;
+    
+        @Resource
+        private final DataSource ds;
+    
+        public WidgetBean(Integer count, Foo foo, DataSource ds) {
+    	this.count = count;
+    	this.foo = foo;
+    	this.ds = ds;
+        }
+    
+        public int getCount() {
+    	return count;
+        }
+    
+        public Foo getFoo() {
+    	return foo;
+        }
+    }
+
+
+The @EJB, @Resource, @PersistenceUnit, and @PersistenceContext annotations
+can be placed at the class-level instead such as:
+
+
+    @Stateless
+    @EJB(name = "foo", beanInterface = Foo.class, beanName = "FooBean")
+    @Resource(name = "count", type = int.class)
+    @Resource(name = "ds", type = DataSource.class)
+    public class WidgetBean implements Widget {
+    
+        public WidgetBean(Integer count, Foo foo, DataSource ds) {
+           // do something
+        }
+    
+        public int getCount() {
+    	return count;
+        }
+    
+        public Foo getFoo() {
+    	return foo;
+        }
+    }
+
+
+
+Currently this functionality relies on classes being compiled with debug
+symbols (the default compile setting for javac) as we use the debug table
+in the byte code to discover the constructor arg names.  Additionally, you
+must not have a no-arg constructor.  If a no-arg constructor is present,
+that constructor will be used instead.
+
+Ideally, we would like the annotations to be used on the parameters
+directly as shown below.  Unfortunately, this does not work as the Java EE
+annotation classes do not permit usage on parameters.  If you'd like to see
+that change as much as we do, definitely voice your support by sending note
+to [jsr-316-comments@jcp.org](mailto:jsr-316-comments@jcp.org.html)
+
+
+Not yet possible
+
+    @Stateless
+
+    public class WidgetBean implements Widget {
+
+        public WidgetBean(@Resource(name = "count") Integer count, @EJB Foo foo, @Resource DataSource ds) {
+           // do something
+        }
+
+        public int getCount() {
+            return count;
+        }
+
+        public Foo getFoo() {
+            return foo;
+        }
+    }
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/containers-and-resources.mdtext
----------------------------------------------------------------------
diff --git a/docs/containers-and-resources.mdtext b/docs/containers-and-resources.mdtext
new file mode 100644
index 0000000..dba4c00
--- /dev/null
+++ b/docs/containers-and-resources.mdtext
@@ -0,0 +1,479 @@
+Title: Containers and Resources
+
+<div id="PageContent">
+              <p><a name="ContainersandResources-containers"></a></p>
+<p><a name="ContainersandResources-DefaultCMPContainercontainer"></a></p>
+<h2><a name="ContainersandResources-CMPENTITY"></a>CMP_ENTITY</h2>
+<p>Declarable in tomee.xml via</p>
+<div style="border-width: 1px;" class="code panel"><div class="codeContent panelContent">
+<pre class="code-xml"><span class="code-tag">&lt;Container id=<span class="code-quote">"Foo"</span> type=<span class="code-quote">"CMP_ENTITY"</span>&gt;</span>
+<span class="code-tag">&lt;/Container&gt;</span>
+</pre>
+</div></div>
+<p>Declarable in properties via</p>
+<div style="border-width: 1px;" class="panel"><div class="panelContent">
+<p>Foo = new://Container?type=CMP_ENTITY</p>
+</div></div>
+<p>Supports the following properties</p>
+<div class="table-wrap">
+<table class="confluenceTable"><tbody>
+<tr>
+<th > Property Name </th>
+<th > Description </th>
+</tr>
+<tr>
+<td > CmpEngineFactory </td>
+<td > Default value is <em>org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory</em>.</td>
+</tr>
+</tbody></table>
+</div>
+
+<p><a name="ContainersandResources-TransactionManager"></a></p>
+<h2><a name="ContainersandResources-TxMgr"></a>TransactionManager</h2>
+<p>Declarable in tomee.xml via</p>
+<div style="border-width: 1px;" class="code panel"><div class="codeContent panelContent">
+<pre class="code-xml"><span class="code-tag">&lt;TransactionManager type=<span class="code-quote">"javax.transaction.TransactionManager"</span>&gt;</span>
+<span class="code-tag">&lt;/TransactionManager&gt;</span>
+</pre>
+</div></div>
+<p>Supports the following properties</p>
+<div class="table-wrap">
+<table class="confluenceTable"><tbody>
+<tr>
+<th > Property Name </th>
+<th > Description </th>
+</tr>
+<tr>
+<td > defaultTransactionTimeoutSeconds </td>
+<td > Default value is <em>10 minutes</em>.</td>
+</tr>
+</tbody></table>
+</div>
+
+
+<p><a name="ContainersandResources-DefaultBMPContainercontainer"></a></p>
+<h2><a name="ContainersandResources-BMPENTITY"></a>BMP_ENTITY</h2>
+<p>Declarable in tomee.xml via</p>
+<div style="border-width: 1px;" class="code panel"><div class="codeContent panelContent">
+<pre class="code-xml"><span class="code-tag">&lt;Container id=<span class="code-quote">"Foo"</span> type=<span class="code-quote">"BMP_ENTITY"</span>&gt;</span>
+<span class="code-tag">&lt;/Container&gt;</span>
+</pre>
+</div></div>
+<p>Declarable in properties via</p>
+<div style="border-width: 1px;" class="panel"><div class="panelContent">
+<p>Foo = new://Container?type=BMP_ENTITY</p>
+</div></div>
+<p>Supports the following properties</p>
+<div class="table-wrap">
+<table class="confluenceTable"><tbody>
+<tr>
+<th > Property Name </th>
+<th > Description </th>
+</tr>
+<tr>
+<td > PoolSize </td>
+<td > Specifies the size of the bean pools for this<br class="atl-forced-newline"> bmp entity container.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>10</em>.</td>
+</tr>
+</tbody></table>
+</div>
+
+
+<p><a name="ContainersandResources-DefaultStatelessContainercontainer"></a></p>
+<h2><a name="ContainersandResources-STATELESS"></a>STATELESS</h2>
+<p>Declarable in tomee.xml via</p>
+<div style="border-width: 1px;" class="code panel"><div class="codeContent panelContent">
+<pre class="code-xml"><span class="code-tag">&lt;Container id=<span class="code-quote">"Foo"</span> type=<span class="code-quote">"STATELESS"</span>&gt;</span>
+<span class="code-tag">&lt;/Container&gt;</span>
+</pre>
+</div></div>
+<p>Declarable in properties via</p>
+<div style="border-width: 1px;" class="panel"><div class="panelContent">
+<p>Foo = new://Container?type=STATELESS</p>
+</div></div>
+<p>Supports the following properties</p>
+<div class="table-wrap">
+<table class="confluenceTable"><tbody>
+<tr>
+<th > Property Name </th>
+<th > Description </th>
+</tr>
+<tr>
+<td > TimeOut </td>
+<td > Specifies the time to wait between invocations. This<br class="atl-forced-newline"> value is measured in milliseconds. A value of 5 would<br class="atl-forced-newline"> result in a time-out of 5 milliseconds between invocations.<br class="atl-forced-newline"> A value of zero would mean no timeout.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>0</em>.</td>
+</tr>
+<tr>
+<td > PoolSize </td>
+<td > Specifies the size of the bean pools for this<br class="atl-forced-newline"> stateless SessionBean container.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>10</em>.</td>
+</tr>
+<tr>
+<td > StrictPooling </td>
+<td > StrictPooling tells the container what to do when the pool<br class="atl-forced-newline"> reaches it's maximum size and there are incoming requests<br class="atl-forced-newline"> that need instances.<br class="atl-forced-newline"> <br class="atl-forced-newline"> With strict pooling, requests will have to wait for instances<br class="atl-forced-newline"> to become available. The pool size will never grow beyond the<br class="atl-forced-newline"> the set PoolSize value.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Without strict pooling, the container will create temporary<br class="atl-forced-newline"> instances to meet demand. The instances will last for just one<br class="atl-forced-newline"> method invocation and then are removed.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>true</em>.</td>
+</tr>
+</tbody></table>
+</div>
+
+
+<p><a name="ContainersandResources-DefaultStatefulContainercontainer"></a></p>
+<h2><a name="ContainersandResources-STATEFUL"></a>STATEFUL</h2>
+<p>Declarable in tomee.xml via</p>
+<div style="border-width: 1px;" class="code panel"><div class="codeContent panelContent">
+<pre class="code-xml"><span class="code-tag">&lt;Container id=<span class="code-quote">"Foo"</span> type=<span class="code-quote">"STATEFUL"</span>&gt;</span>
+<span class="code-tag">&lt;/Container&gt;</span>
+</pre>
+</div></div>
+<p>Declarable in properties via</p>
+<div style="border-width: 1px;" class="panel"><div class="panelContent">
+<p>Foo = new://Container?type=STATEFUL</p>
+</div></div>
+<p>Supports the following properties</p>
+<div class="table-wrap">
+<table class="confluenceTable"><tbody>
+<tr>
+<th > Property Name </th>
+<th > Description </th>
+</tr>
+<tr>
+<td > Passivator </td>
+<td > The passivator is responsible for writing beans to disk<br class="atl-forced-newline"> at passivation time. Different passivators can be used<br class="atl-forced-newline"> by setting this property to the fully qualified class name<br class="atl-forced-newline"> of the PassivationStrategy implementation. The passivator<br class="atl-forced-newline"> is not responsible for invoking any callbacks or other<br class="atl-forced-newline"> processing, its only responsibly is to write the bean state<br class="atl-forced-newline"> to disk.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Known implementations:<br class="atl-forced-newline"> org.apache.openejb.core.stateful.RAFPassivater<br class="atl-forced-newline"> org.apache.openejb.core.stateful.SimplePassivater<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>org.apache.openejb.core.stateful.SimplePassivater</em>.</td>
+</tr>
+<tr>
+<td > TimeOut </td>
+<td > Specifies the time to wait between invocations. This<br class="atl-forced-newline"> value is measured in minutes. A value of 5 would<br class="atl-forced-newline"> result in a time-out of 5 minutes between invocations.<br class="atl-forced-newline"> A value of zero would mean no timeout.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>20</em>.</td>
+</tr>
+<tr>
+<td > PoolSize </td>
+<td > Specifies the size of the bean pools for this<br class="atl-forced-newline"> stateful SessionBean container.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>1000</em>.</td>
+</tr>
+<tr>
+<td > BulkPassivate </td>
+<td > Property name that specifies the number of instances<br class="atl-forced-newline"> to passivate at one time when doing bulk passivation.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>100</em>.</td>
+</tr>
+</tbody></table>
+</div>
+
+
+<p><a name="ContainersandResources-DefaultMDBContainercontainer"></a></p>
+<h2><a name="ContainersandResources-MESSAGE"></a>MESSAGE</h2>
+<p>Declarable in tomee.xml via</p>
+<div style="border-width: 1px;" class="code panel"><div class="codeContent panelContent">
+<pre class="code-xml"><span class="code-tag">&lt;Container id=<span class="code-quote">"Foo"</span> type=<span class="code-quote">"MESSAGE"</span>&gt;</span>
+<span class="code-tag">&lt;/Container&gt;</span>
+</pre>
+</div></div>
+<p>Declarable in properties via</p>
+<div style="border-width: 1px;" class="panel"><div class="panelContent">
+<p>Foo = new://Container?type=MESSAGE</p>
+</div></div>
+<p>Supports the following properties</p>
+<div class="table-wrap">
+<table class="confluenceTable"><tbody>
+<tr>
+<th > Property Name </th>
+<th > Description </th>
+</tr>
+<tr>
+<td > ResourceAdapter </td>
+<td > The resource adapter delivers messages to the container<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>Default JMS Resource Adapter</em>.</td>
+</tr>
+<tr>
+<td > MessageListenerInterface </td>
+<td > Specifies the message listener interface handled by this container<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>javax.jms.MessageListener</em>.</td>
+</tr>
+<tr>
+<td > ActivationSpecClass </td>
+<td > Specifies the activation spec class<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>org.apache.activemq.ra.ActiveMQActivationSpec</em>.</td>
+</tr>
+<tr>
+<td > InstanceLimit </td>
+<td > Specifies the maximum number of bean instances that are<br class="atl-forced-newline"> allowed to exist for each MDB deployment.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>10</em>.</td>
+</tr>
+</tbody></table>
+</div>
+
+
+
+<p><a name="ContainersandResources-resources"></a></p>
+<h1><a name="ContainersandResources-Resources"></a>Resources</h1>
+<p><a name="ContainersandResources-DefaultJDBCDatabaseresource"></a></p>
+<h2><a name="ContainersandResources-javax.sql.DataSource"></a>javax.sql.DataSource</h2>
+<p>Declarable in tomee.xml via</p>
+<div style="border-width: 1px;" class="code panel"><div class="codeContent panelContent">
+<pre class="code-xml"><span class="code-tag">&lt;Resource id=<span class="code-quote">"Foo"</span> type=<span class="code-quote">"javax.sql.DataSource"</span>&gt;</span>
+<span class="code-tag">&lt;/Resource&gt;</span>
+</pre>
+</div></div>
+<p>Declarable in properties via</p>
+<div style="border-width: 1px;" class="panel"><div class="panelContent">
+<p>Foo = new://Resource?type=javax.sql.DataSource</p>
+</div></div>
+<p>Supports the following properties</p>
+<div class="table-wrap">
+<table class="confluenceTable"><tbody>
+<tr>
+<th > Property Name </th>
+<th > Description </th>
+</tr>
+<tr>
+<td > JtaManaged </td>
+<td > Determines wether or not this data source should be JTA managed<br class="atl-forced-newline"> or user managed.&nbsp;&nbsp;If set to 'true' it will automatically be enrolled<br class="atl-forced-newline"> in any ongoing transactions.&nbsp;&nbsp;Calling begin/commit/rollback or setAutoCommit<br class="atl-forced-newline"> on the datasource or connection will not be allowed.&nbsp;&nbsp;If you need to perform<br class="atl-forced-newline"> these functions yourself, set JtaManaged to 'false'<br class="atl-forced-newline"> <br class="atl-forced-newline"> In terms of JPA persistence.xml:<br class="atl-forced-newline"> "JtaManaged=true" can be used as a 'jta-data-source'<br class="atl-forced-newline"> "JtaManaged=false" can be used as a 'non-jta-data-source'<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>true</em>.</td>
+</tr>
+<tr>
+<td > JdbcDriver </td>
+<td > Driver class name<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>org.hsqldb.jdbcDriver</em>.</td>
+</tr>
+<tr>
+<td > JdbcUrl </td>
+<td > Url for creating connections<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>jdbc:hsqldb:file:data/hsqldb/hsqldb</em>.</td>
+</tr>
+<tr>
+<td > UserName </td>
+<td > Default user name<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>sa</em>.</td>
+</tr>
+<tr>
+<td > Password </td>
+<td > Default password</td>
+</tr>
+<tr>
+<td > ConnectionProperties </td>
+<td > The connection properties that will be sent to the JDBC<br class="atl-forced-newline"> driver when establishing new connections<br class="atl-forced-newline"> <br class="atl-forced-newline"> Format of the string must be [propertyName=property;]*<br class="atl-forced-newline"> <br class="atl-forced-newline"> NOTE - The "user" and "password" properties will be passed<br class="atl-forced-newline"> explicitly, so they do not need to be included here.</td>
+</tr>
+<tr>
+<td > DefaultAutoCommit </td>
+<td > The default auto-commit state of new connections<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>true</em>.</td>
+</tr>
+<tr>
+<td > DefaultReadOnly </td>
+<td > The default read-only state of new connections<br class="atl-forced-newline"> If not set then the setReadOnly method will not be called.<br class="atl-forced-newline"> (Some drivers don't support read only mode, ex: Informix)</td>
+</tr>
+<tr>
+<td > DefaultTransactionIsolation </td>
+<td > The default TransactionIsolation state of new connections<br class="atl-forced-newline"> If not set then the setTransactionIsolation method will not<br class="atl-forced-newline"> be called. The allowed values for this property are:<br class="atl-forced-newline">&nbsp;&nbsp;&nbsp;&nbsp; NONE<br class="atl-forced-newline">&nbsp;&nbsp;&nbsp;&nbsp; READ_COMMITTED<br class="atl-forced-newline">&nbsp;&nbsp;&nbsp;&nbsp; READ_UNCOMMITTED<br class="atl-forced-newline">&nbsp;&nbsp;&nbsp;&nbsp; REPEATABLE_READ<br class="atl-forced-newline">&nbsp;&nbsp;&nbsp;&nbsp; SERIALIZABLE<br class="atl-forced-newline"> <br class="atl-forced-newline"> Note: Most JDBC drivers do not support all isolation levels</td>
+</tr>
+<tr>
+<td > InitialSize </td>
+<td > The initial number of connections that are created when the<br class="atl-forced-newline"> pool is started<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>0</em>.</td>
+</tr>
+<tr>
+<td > MaxActive </td>
+<td > The maximum number of active connections that can be<br class="atl-forced-newline"> allocated from this pool at the same time, or a negative<br class="atl-forced-newline"> number for no limit.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>20</em>.</td>
+</tr>
+<tr>
+<td > MaxIdle </td>
+<td > The maximum number of connections that can remain idle in<br class="atl-forced-newline"> the pool, without extra ones being released, or a negative<br class="atl-forced-newline"> number for no limit.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>20</em>.</td>
+</tr>
+<tr>
+<td > MinIdle </td>
+<td > The minimum number of connections that can remain idle in<br class="atl-forced-newline"> the pool, without extra ones being created, or zero to<br class="atl-forced-newline"> create none.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>0</em>.</td>
+</tr>
+<tr>
+<td > MaxWait </td>
+<td > The maximum number of milliseconds that the pool will wait<br class="atl-forced-newline"> (when there are no available connections) for a connection<br class="atl-forced-newline"> to be returned before throwing an exception, or -1 to wait<br class="atl-forced-newline"> indefinitely.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>-1</em>.</td>
+</tr>
+<tr>
+<td > ValidationQuery </td>
+<td > The SQL query that will be used to validate connections from<br class="atl-forced-newline"> this pool before returning them to the caller. If specified,<br class="atl-forced-newline"> this query MUST be an SQL SELECT statement that returns at<br class="atl-forced-newline"> least one row.</td>
+</tr>
+<tr>
+<td > TestOnBorrow </td>
+<td > If true connections will be validated before being borrowed<br class="atl-forced-newline"> from the pool. If the validation fails, the connection is<br class="atl-forced-newline"> destroyed, and a new conection will be retrieved from the<br class="atl-forced-newline"> pool (and validated).<br class="atl-forced-newline"> <br class="atl-forced-newline"> NOTE - for a true value to have any effect, the<br class="atl-forced-newline"> ValidationQuery parameter must be set.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>true</em>.</td>
+</tr>
+<tr>
+<td > TestOnReturn </td>
+<td > If true connections will be validated before being returned<br class="atl-forced-newline"> to the pool.&nbsp;&nbsp;If the validation fails, the connection is<br class="atl-forced-newline"> destroyed instead of being returned to the pool.<br class="atl-forced-newline"> <br class="atl-forced-newline"> NOTE - for a true value to have any effect, the<br class="atl-forced-newline"> ValidationQuery parameter must be set.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>false</em>.</td>
+</tr>
+<tr>
+<td > TestWhileIdle </td>
+<td > If true connections will be validated by the idle connection<br class="atl-forced-newline"> evictor (if any). If the validation fails, the connection is<br class="atl-forced-newline"> destroyed and removed from the pool<br class="atl-forced-newline"> <br class="atl-forced-newline"> NOTE - for a true value to have any effect, the<br class="atl-forced-newline"> timeBetweenEvictionRunsMillis property must be a positive<br class="atl-forced-newline"> number and the ValidationQuery parameter must be set.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>false</em>.</td>
+</tr>
+<tr>
+<td > TimeBetweenEvictionRunsMillis </td>
+<td > The number of milliseconds to sleep between runs of the idle<br class="atl-forced-newline"> connection evictor thread. When set to a negative number, no<br class="atl-forced-newline"> idle connection evictor thread will be run.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>-1</em>.</td>
+</tr>
+<tr>
+<td > NumTestsPerEvictionRun </td>
+<td > The number of connectionss to examine during each run of the<br class="atl-forced-newline"> idle connection evictor thread (if any).<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>3</em>.</td>
+</tr>
+<tr>
+<td > MinEvictableIdleTimeMillis </td>
+<td > The minimum amount of time a connection may sit idle in the<br class="atl-forced-newline"> pool before it is eligable for eviction by the idle<br class="atl-forced-newline"> connection evictor (if any).<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>1800000</em>.</td>
+</tr>
+<tr>
+<td > PoolPreparedStatements </td>
+<td > If true, a statement pool is created for each Connection and<br class="atl-forced-newline"> PreparedStatements created by one of the following methods are<br class="atl-forced-newline"> pooled:<br class="atl-forced-newline">&nbsp;&nbsp;&nbsp;&nbsp;public PreparedStatement prepareStatement(String sql);<br class="atl-forced-newline">&nbsp;&nbsp;&nbsp;&nbsp;public PreparedStatement prepareStatement(String sql,<br class="atl-forced-newline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int resultSetType,<br class="atl-forced-newline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int resultSetConcurrency)<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>false</em>.</td>
+</tr>
+<tr>
+<td > MaxOpenPreparedStatements </td>
+<td > The maximum number of open statements that can be allocated<br class="atl-forced-newline"> from the statement pool at the same time, or zero for no<br class="atl-forced-newline"> limit.<br class="atl-forced-newline"> <br class="atl-forced-newline"> NOTE - Some drivers have limits on the number of open<br class="atl-forced-newline"> statements, so make sure there are some resources left<br class="atl-forced-newline"> for the other (non-prepared) statements.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>0</em>.</td>
+</tr>
+<tr>
+<td > AccessToUnderlyingConnectionAllowed </td>
+<td > If true the raw physical connection to the database can be<br class="atl-forced-newline"> accessed using the following construct:<br class="atl-forced-newline">&nbsp;&nbsp;&nbsp;&nbsp; Connection conn = ds.getConnection();<br class="atl-forced-newline">&nbsp;&nbsp;&nbsp;&nbsp; Connection rawConn = ((DelegatingConnection) conn).getInnermostDelegate();<br class="atl-forced-newline">&nbsp;&nbsp;&nbsp;&nbsp; ...<br class="atl-forced-newline">&nbsp;&nbsp;&nbsp;&nbsp; conn.close()<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default is false, because misbehaving programs can do harmfull<br class="atl-forced-newline"> things to the raw connection shuch as closing the raw<br class="atl-forced-newline"> connection or continuing to use the raw connection after it<br class="atl-forced-newline"> has been assigned to another logical connection.&nbsp;&nbsp;Be carefull<br class="atl-forced-newline"> and only use when you need direct access to driver specific<br class="atl-f
 orced-newline"> extentions.<br class="atl-forced-newline"> <br class="atl-forced-newline"> NOTE: Do NOT close the underlying connection, only the<br class="atl-forced-newline"> original logical connection wrapper.<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>false</em>.</td>
+</tr>
+</tbody></table>
+</div>
+
+
+<p><a name="ContainersandResources-DefaultJMSResourceAdapterresource"></a></p>
+<h2><a name="ContainersandResources-ActiveMQResourceAdapter"></a>ActiveMQResourceAdapter</h2>
+<p>Declarable in tomee.xml via</p>
+<div style="border-width: 1px;" class="code panel"><div class="codeContent panelContent">
+<pre class="code-xml"><span class="code-tag">&lt;Resource id=<span class="code-quote">"Foo"</span> type=<span class="code-quote">"ActiveMQResourceAdapter"</span>&gt;</span>
+<span class="code-tag">&lt;/Resource&gt;</span>
+</pre>
+</div></div>
+<p>Declarable in properties via</p>
+<div style="border-width: 1px;" class="panel"><div class="panelContent">
+<p>Foo = new://Resource?type=ActiveMQResourceAdapter</p>
+</div></div>
+<p>Supports the following properties</p>
+<div class="table-wrap">
+<table class="confluenceTable"><tbody>
+<tr>
+<th > Property Name </th>
+<th > Description </th>
+</tr>
+<tr>
+<td > BrokerXmlConfig </td>
+<td > Broker configuration<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>broker:(tcp://localhost:61616)?useJmx=false</em>.</td>
+</tr>
+<tr>
+<td > ServerUrl </td>
+<td > Broker address<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>vm://localhost?async=true</em>.</td>
+</tr>
+<tr>
+<td > DataSource </td>
+<td > DataSource for persistence messages<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>Default Unmanaged JDBC Database</em>.</td>
+</tr>
+</tbody></table>
+</div>
+
+
+<p><a name="ContainersandResources-DefaultJMSConnectionFactoryresource"></a></p>
+<h2><a name="ContainersandResources-javax.jms.ConnectionFactory"></a>javax.jms.ConnectionFactory</h2>
+<p>Declarable in tomee.xml via</p>
+<div style="border-width: 1px;" class="code panel"><div class="codeContent panelContent">
+<pre class="code-xml"><span class="code-tag">&lt;Resource id=<span class="code-quote">"Foo"</span> type=<span class="code-quote">"javax.jms.ConnectionFactory"</span>&gt;</span>
+<span class="code-tag">&lt;/Resource&gt;</span>
+</pre>
+</div></div>
+<p>Declarable in properties via</p>
+<div style="border-width: 1px;" class="panel"><div class="panelContent">
+<p>Foo = new://Resource?type=javax.jms.ConnectionFactory</p>
+</div></div>
+<p>Supports the following properties</p>
+<div class="table-wrap">
+<table class="confluenceTable"><tbody>
+<tr>
+<th > Property Name </th>
+<th > Description </th>
+</tr>
+<tr>
+<td > ResourceAdapter </td>
+<td > Default value is <em>Default JMS Resource Adapter</em>.</td>
+</tr>
+<tr>
+<td > TransactionSupport </td>
+<td > Specifies if the connection is enrolled in global transaction<br class="atl-forced-newline"> allowed values: xa, local or none<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>xa</em>.</td>
+</tr>
+<tr>
+<td > PoolMaxSize </td>
+<td > Maximum number of physical connection to the ActiveMQ broker<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>10</em>.</td>
+</tr>
+<tr>
+<td > PoolMinSize </td>
+<td > Minimum number of physical connection to the ActiveMQ broker<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>0</em>.</td>
+</tr>
+<tr>
+<td > ConnectionMaxWaitMilliseconds </td>
+<td > Maximum amount of time to wait for a connection<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>5000</em>.</td>
+</tr>
+<tr>
+<td > ConnectionMaxIdleMinutes </td>
+<td > Maximum amount of time a connection can be idle before being reclaimed<br class="atl-forced-newline"> <br class="atl-forced-newline"> Default value is <em>15</em>.</td>
+</tr>
+</tbody></table>
+</div>
+
+
+<p><a name="ContainersandResources-DefaultQueueresource"></a></p>
+<h2><a name="ContainersandResources-javax.jms.Queue"></a>javax.jms.Queue</h2>
+<p>Declarable in tomee.xml via</p>
+<div style="border-width: 1px;" class="code panel"><div class="codeContent panelContent">
+<pre class="code-xml"><span class="code-tag">&lt;Resource id=<span class="code-quote">"Foo"</span> type=<span class="code-quote">"javax.jms.Queue"</span>&gt;</span>
+<span class="code-tag">&lt;/Resource&gt;</span>
+</pre>
+</div></div>
+<p>Declarable in properties via</p>
+<div style="border-width: 1px;" class="panel"><div class="panelContent">
+<p>Foo = new://Resource?type=javax.jms.Queue</p>
+</div></div>
+<p>Supports the following properties</p>
+<div class="table-wrap">
+<table class="confluenceTable"><tbody>
+<tr>
+<th > Property Name </th>
+<th > Description </th>
+</tr>
+<tr>
+<td > destination </td>
+<td > Specifies the name of the queue</td>
+</tr>
+</tbody></table>
+</div>
+
+
+<p><a name="ContainersandResources-DefaultTopicresource"></a></p>
+<h2><a name="ContainersandResources-javax.jms.Topic"></a>javax.jms.Topic</h2>
+<p>Declarable in tomee.xml via</p>
+<div style="border-width: 1px;" class="code panel"><div class="codeContent panelContent">
+<pre class="code-xml"><span class="code-tag">&lt;Resource id=<span class="code-quote">"Foo"</span> type=<span class="code-quote">"javax.jms.Topic"</span>&gt;</span>
+<span class="code-tag">&lt;/Resource&gt;</span>
+</pre>
+</div></div>
+<p>Declarable in properties via</p>
+<div style="border-width: 1px;" class="panel"><div class="panelContent">
+<p>Foo = new://Resource?type=javax.jms.Topic</p>
+</div></div>
+<p>Supports the following properties</p>
+<div class="table-wrap">
+<table class="confluenceTable"><tbody>
+<tr>
+<th > Property Name </th>
+<th > Description </th>
+</tr>
+<tr>
+<td > destination </td>
+<td > Specifies the name of the topic</td>
+</tr>
+</tbody></table>
+</div>
+
+
+<p><a name="ContainersandResources-DefaultORBresource"></a></p>
+<h2><a name="ContainersandResources-org.omg.CORBA.ORB"></a>org.omg.CORBA.ORB</h2>
+<p>Declarable in tomee.xml via</p>
+<div style="border-width: 1px;" class="code panel"><div class="codeContent panelContent">
+<pre class="code-xml"><span class="code-tag">&lt;Resource id=<span class="code-quote">"Foo"</span> type=<span class="code-quote">"org.omg.CORBA.ORB"</span>&gt;</span>
+<span class="code-tag">&lt;/Resource&gt;</span>
+</pre>
+</div></div>
+<p>Declarable in properties via</p>
+<div style="border-width: 1px;" class="panel"><div class="panelContent">
+<p>Foo = new://Resource?type=org.omg.CORBA.ORB</p>
+</div></div>
+<p>No properties.</p>
+
+<p><a name="ContainersandResources-DefaultMailSessionresource"></a></p>
+<h2><a name="ContainersandResources-javax.mail.Session"></a>javax.mail.Session</h2>
+<p>Declarable in tomee.xml via</p>
+<div style="border-width: 1px;" class="code panel"><div class="codeContent panelContent">
+<pre class="code-xml"><span class="code-tag">&lt;Resource id=<span class="code-quote">"Foo"</span> type=<span class="code-quote">"javax.mail.Session"</span>&gt;</span>
+<span class="code-tag">&lt;/Resource&gt;</span>
+</pre>
+</div></div>
+<p>Declarable in properties via</p>
+<div style="border-width: 1px;" class="panel"><div class="panelContent">
+<p>Foo = new://Resource?type=javax.mail.Session</p>
+</div></div>
+<p>No properties.</p>
+            
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/contrib/.DS_Store
----------------------------------------------------------------------
diff --git a/docs/contrib/.DS_Store b/docs/contrib/.DS_Store
new file mode 100644
index 0000000..e6a912a
Binary files /dev/null and b/docs/contrib/.DS_Store differ

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/contrib/debug/debug-intellij.mdtext
----------------------------------------------------------------------
diff --git a/docs/contrib/debug/debug-intellij.mdtext b/docs/contrib/debug/debug-intellij.mdtext
new file mode 100644
index 0000000..d2729a8
--- /dev/null
+++ b/docs/contrib/debug/debug-intellij.mdtext
@@ -0,0 +1,129 @@
+<a name='DEBUGIDE'></a>
+#Debugging an Apache TomEE App in Intellij IDEA
+
+Stepping through the [TomEE](http://tomee.apache.org/apache-tomee.html) source code is a must-to-follow step if you want to understand how TomEE works and later contribute. This is a guide to quickly start your debugging session with TomEE as a TomEE developer.
+
+This guide assumes that:
+
+ - Linux is the OS
+ - IntelliJ IDEA 13.1.3 is the IDE
+ - Maven 3.0.5 or better is installed 
+
+
+###Download the Source Code
+
+For beginners it is recommended not to start with the trunk, because it is common to have some blockers or non-stable functionality which could bring your learning to a halt. So first start with the latest stable released source code. Move to trunk once you are ready to do some code modification on TomEE.
+
+[Click here to download TomEE 1.7.1 Source code](http://www.apache.org/dyn/closer.cgi/tomee/tomee-1.7.1/openejb-4.7.1-source-release.zip)
+
+###Build the Source Code 
+
+First extract the zip file named **openejb-4.7.1-source-release.zip** to any location. Lets assume it is your home folder.
+
+> unzip openejb-4.7.1-source-release -d ~
+
+The above command will create the **openejb-4.7.1** directory in your home directory.
+
+Even though you can do a full build, We will run the following command to do a quick build so that you can have your meal before your hunger kills you.
+
+> mvn -Pquick -Dsurefire.useFile=false -DdisableXmlReport=true -DuniqueVersion=false -ff -Dassemble -DskipTests -DfailIfNoTests=false clean install
+
+More details about building the product from the source can be found [here](http://tomee.apache.org/dev/source-code.html).
+
+###Deploy TomEE 
+
+The TomEE build builds several distributions (zip &amp; war files) to cater the different needs of different users. Here we discuss about the tomee plus distribution &amp; TomEE war distribution only. TomEE+ is the full feature packed distribution from TomEE.
+
+TomEE+ zip location:
+
+> ~/openejb-4.7.1/tomee/apache-tomee/target/apache-tomee-plus-1.7.1.zip
+
+Unzip the zip into your home directory (or any other location)
+
+> unzip ~/openejb-4.7.1/tomee/apache-tomee/target/apache-tomee-plus-1.7.1.zip -d ~
+
+You will find the directory **apache-tomee-plus-1.7.1** in your home folder. Lets run the TomEE.
+
+> cd ~/apache-tomee-plus-1.7.1/bin <br />
+> ./catalina.sh run <br />
+
+"INFO: Server startup in xxxx ms" is the Green light!
+
+###Prepare your IDE
+
+Lets prepare our IntelliJ IDEA for the debugging session.
+
+Start IntelliJ IDEA and Click the Import Project link
+
+![](idea1.png)
+
+Select the ~/openejb-4.7.1 directory and press OK
+
+Select import project from external model &amp; Maven as the external model.
+
+![](idea3.png)
+
+Press Next on this screen.
+
+![](idea4.png)
+
+Select the main profile.
+
+![](idea6.png)
+
+Select the org.apache.openejb:openejb:4.7.1
+
+![](idea7.png)
+
+Select the JDK you want to use with.
+
+![](idea8.png)
+
+Give the project a name and press Finish.
+
+![](idea9.png)
+
+Now your IDE will load the project.
+
+###First Breakpoint
+
+Next step is to put a breakpoint at the place where the code is triggered. Lets understand how the code is triggered.
+
+TomEE+ is created on top of Tomcat. TomEE registers a Tomcat Lifecycle Listener **"org.apache.tomee.catalina.ServerListener"** on **server.xml** file.
+
+All the Tomcat lifecycle events i.e. before_init, after_init, start, before_stop etc... are received by the **lifecycleEvent** method of the ServerListener.
+
+The execution of TomEE code starts in this lifecycleEvent method. So the first breakpoint should be on the lifecycleEvent method.
+
+###Run TomEE+ in debug mode
+
+If you simply run **catalina.sh jpda run** in the bin folder of tomee deployment, the server starts in the debug mode but it will quckly pass your breakpoint before you attach your IDE to the server process.
+
+So we set** JPDA_SUSPEND="y"** before we start our debugging. This will tell the server "Do not proceed until the Debugger tool is attached to the process"
+
+The convenient way of doing this is adding this line to catalina.sh file right after the #!/bin/sh line. 
+
+> \#!/bin/sh
+> JPDA_SUSPEND="y"
+> 
+Now to time to run TomEE+ on debug mode.
+
+> ~/apache-tomee-plus-1.7.1/bin/catalina.sh jpda run 
+
+The terminal should hang with the message **"Listening for transport dt_socket at address: 8000"**
+
+###Attach IntelliJ IDEA debugger
+
+*   Menu Bar &gt; Run &gt; Edit Configurations
+*   Press the "**+**" button on the top left corner to get the Add new configuration menu
+*   Select "Remote" from the Add new configuration menu
+*   Give a name (I gave "TomEE DEBUG") to this new configuration and set the Port to 8000
+*   Click OK.
+
+![](idea10.png)</div>
+
+To start debugging your TomEE+
+
+Main Menu &gt; Run &gt; Debug TomEE DEBUG
+
+Congratulations! You hit the break point you put at the startup of the TomEE code. Carry on with your debugging session to learn more.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/contrib/debug/idea1.png
----------------------------------------------------------------------
diff --git a/docs/contrib/debug/idea1.png b/docs/contrib/debug/idea1.png
new file mode 100644
index 0000000..fb08bce
Binary files /dev/null and b/docs/contrib/debug/idea1.png differ

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/contrib/debug/idea10.png
----------------------------------------------------------------------
diff --git a/docs/contrib/debug/idea10.png b/docs/contrib/debug/idea10.png
new file mode 100644
index 0000000..e69f3b8
Binary files /dev/null and b/docs/contrib/debug/idea10.png differ

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/contrib/debug/idea2.png
----------------------------------------------------------------------
diff --git a/docs/contrib/debug/idea2.png b/docs/contrib/debug/idea2.png
new file mode 100644
index 0000000..32cc8c3
Binary files /dev/null and b/docs/contrib/debug/idea2.png differ

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/contrib/debug/idea3.png
----------------------------------------------------------------------
diff --git a/docs/contrib/debug/idea3.png b/docs/contrib/debug/idea3.png
new file mode 100644
index 0000000..def1687
Binary files /dev/null and b/docs/contrib/debug/idea3.png differ

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/contrib/debug/idea4.png
----------------------------------------------------------------------
diff --git a/docs/contrib/debug/idea4.png b/docs/contrib/debug/idea4.png
new file mode 100644
index 0000000..5c46256
Binary files /dev/null and b/docs/contrib/debug/idea4.png differ

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/contrib/debug/idea6.png
----------------------------------------------------------------------
diff --git a/docs/contrib/debug/idea6.png b/docs/contrib/debug/idea6.png
new file mode 100644
index 0000000..87dff02
Binary files /dev/null and b/docs/contrib/debug/idea6.png differ

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/contrib/debug/idea7.png
----------------------------------------------------------------------
diff --git a/docs/contrib/debug/idea7.png b/docs/contrib/debug/idea7.png
new file mode 100644
index 0000000..1fb877a
Binary files /dev/null and b/docs/contrib/debug/idea7.png differ

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/contrib/debug/idea8.png
----------------------------------------------------------------------
diff --git a/docs/contrib/debug/idea8.png b/docs/contrib/debug/idea8.png
new file mode 100644
index 0000000..1b9d64c
Binary files /dev/null and b/docs/contrib/debug/idea8.png differ

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/contrib/debug/idea9.png
----------------------------------------------------------------------
diff --git a/docs/contrib/debug/idea9.png b/docs/contrib/debug/idea9.png
new file mode 100644
index 0000000..a7e6cd5
Binary files /dev/null and b/docs/contrib/debug/idea9.png differ

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/custom-injection.mdtext
----------------------------------------------------------------------
diff --git a/docs/custom-injection.mdtext b/docs/custom-injection.mdtext
new file mode 100644
index 0000000..968f846
--- /dev/null
+++ b/docs/custom-injection.mdtext
@@ -0,0 +1,192 @@
+Title: Custom Injection
+# Overview
+
+As noted in the [Injection of env-entry Example](injection-of-env-entry-example.html)
+, the EJB 3.0 supported env-entry types are fairly limited.  Also the use
+of several <env-entry> tags in an ejb-jar.xml can get a bit verbose.
+
+OpenEJB does not restrict you to just these data types or require you to
+use an ejb-jar.xml to declare them.
+
+ - `@Resource` can be used on any type for which there is
+`java.beans.PropertyEditor`
+ - You may `install your own` PropertyEditors and package them with your
+app.
+ - Java Generics are supported (e.g. List<URI> myURIs)
+ - You may use a `META-INF/env-entries.properties` file as an alternative
+to an ejb-jar.xml
+
+See [Built-in Type Converters](built-in-type-converters.html)
+for a full list of supported env-entry types.
+
+The source for this example is the "custom-injection" directory located in
+the [openejb-examples.zip](downloads.html)
+available on the [download page](http://tomee.apache.org/downloads.html).
+
+<a name="CustomInjection-TheCode"></a>
+# The Code
+
+<a name="CustomInjection-BeanClass"></a>
+## Bean Class
+
+    @Stateless
+    public class Stratocaster {
+    
+        @Resource(name = "pickups")
+        private List<Pickup> pickups;
+    
+        @Resource(name = "style")
+        private Style style;
+    
+        @Resource(name = "dateCreated")
+        private Date dateCreated;
+    
+        @Resource(name = "guitarStringGuages")
+        private Map<String, Float> guitarStringGuages;
+    
+        @Resource(name = "certificateOfAuthenticity")
+        private File certificateOfAuthenticity;
+    
+        public Date getDateCreated() {
+            return dateCreated;
+        }
+    
+        /**
+         * Gets the guage of the electric guitar strings
+         * used in this guitar.
+         *
+         * @param string
+         * @return
+         */
+        public float getStringGuage(String string) {
+            return guitarStringGuages.get(string);
+        }
+    
+        public List<Pickup> getPickups() {
+            return pickups;
+        }
+    
+        public Style getStyle() {
+            return style;
+        }
+    
+        public File getCertificateOfAuthenticity() {
+            return certificateOfAuthenticity;
+        }
+    }
+
+<a name="CustomInjection-TheMETA-INF/env-entries.propertiesfile"></a>
+## The META-INF/env-entries.properties file
+
+    guitarStringGuages=E1=0.052\nA=0.042\nD=0.030\nG=0.017\nB=0.013\nE=0.010
+    certificateOfAuthenticity=/tmp/strat-certificate.txt
+    dateCreated=1962-03-01
+    pickups=S,S,S
+    style=VINTAGE
+
+<a name="CustomInjection-TheCustomTypeandEditor"></a>
+## The Custom Type and Editor
+
+Support for java.lang.Enum types is already built-in, but we've decided
+we'd like to allow abbreviated versions of the enum constants to be usable.
+ We do this by creating a custom PropertyEditor for our Pickup enum like
+so:
+
+    public class PickupEditor extends java.beans.PropertyEditorSupport {
+        public void setAsText(String text) throws IllegalArgumentException {
+            text = text.trim();
+    
+            if (text.equalsIgnoreCase("H")) setValue(Pickup.HUMBUCKER);
+            else if (text.equalsIgnoreCase("S")) setValue(Pickup.SINGLE_COIL);
+            else throw new IllegalStateException("H and S are the only supported Pickup aliases");
+        }
+    }
+
+We cleverly install this PropertyEditor in a static block in the Pickup
+class that will be executed should someone actually reference the Pickup
+type.
+
+    public enum Pickup {
+    
+        HUMBUCKER,
+        SINGLE_COIL;
+    
+        // Here's the little magic where we register the PickupEditor
+        // which knows how to create this object from a string.
+        // You can add any of your own Property Editors in the same way.
+        static {
+            PropertyEditorManager.registerEditor(Pickup.class, PickupEditor.class);
+        }
+    }
+
+<a name="CustomInjection-TestCase"></a>
+# Test Case
+
+    public class StratocasterTest extends TestCase {
+    
+        @EJB
+        private Stratocaster strat;
+    
+        public void test() throws Exception {
+            EJBContainer.createEJBContainer().getContext().bind("inject", this);
+    
+            Date date = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US).parse("Mar 1, 1962");
+            assertEquals("Strat.getDateCreated()", date, strat.getDateCreated());
+    
+            List<Pickup> pickups = asList(Pickup.SINGLE_COIL, Pickup.SINGLE_COIL, Pickup.SINGLE_COIL);
+            assertEquals("Strat.getPickups()", pickups, strat.getPickups());
+    
+            assertEquals("Strat.getStyle()", Style.VINTAGE, strat.getStyle());
+    
+            assertEquals("Strat.getStringGuage(\"E1\")", 0.052F, strat.getStringGuage("E1"));
+            assertEquals("Strat.getStringGuage(\"A\")", 0.042F, strat.getStringGuage("A"));
+            assertEquals("Strat.getStringGuage(\"D\")", 0.030F, strat.getStringGuage("D"));
+            assertEquals("Strat.getStringGuage(\"G\")", 0.017F, strat.getStringGuage("G"));
+            assertEquals("Strat.getStringGuage(\"B\")", 0.013F, strat.getStringGuage("B"));
+            assertEquals("Strat.getStringGuage(\"E\")", 0.010F, strat.getStringGuage("E"));
+    
+            File file = new File("/tmp/strat-certificate.txt");
+            assertEquals("Strat.getCertificateOfAuthenticity()", file,strat.getCertificateOfAuthenticity());
+    
+    
+        }
+    }
+
+<a name="CustomInjection-Runningit"></a>
+# Running it
+
+Running the example is fairly simple.  In the "custom-injection" directory of the [examples zip](openejb:download.html), just run:
+
+> $ mvn clean install
+
+Which should create output like the following.
+
+
+    -------------------------------------------------------
+     T E S T S
+    -------------------------------------------------------
+    Running org.superbiz.enventries.StratocasterTest
+    Apache OpenEJB 3.1-SNAPSHOT    build: 20080409-12:05
+    http://tomee.apache.org/
+    INFO - openejb.home = /Users/dblevins/work/openejb3/examples/custom-injection
+    INFO - openejb.base = /Users/dblevins/work/openejb3/examples/custom-injection
+    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+    INFO - Configuring Service(id=Default JDK 1.3 ProxyFactory, type=ProxyFactory, provider-id=Default JDK 1.3 ProxyFactory)
+    INFO - Found EjbModule in classpath: /Users/dblevins/work/openejb3/examples/custom-injection/target/classes
+    INFO - Configuring app: /Users/dblevins/work/openejb3/examples/custom-injection/target/classes
+    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+    INFO - Auto-creating a container for bean StratocasterImpl: Container(type=STATELESS, id=Default Stateless Container)
+    INFO - Loaded Module: /Users/dblevins/work/openejb3/examples/custom-injection/target/classes
+    INFO - Assembling app: /Users/dblevins/work/openejb3/examples/custom-injection/target/classes
+    INFO - Jndi(name=StratocasterImplLocal) --> Ejb(deployment-id=StratocasterImpl)
+    INFO - Created Ejb(deployment-id=StratocasterImpl, ejb-name=StratocasterImpl, container=Default Stateless Container)
+    INFO - Deployed Application(path=/Users/dblevins/work/openejb3/examples/custom-injection/target/classes)
+    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.705 sec
+    
+    Results :
+    
+    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+
+
+


[19/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
Docs old and new


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/f779264f
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/f779264f
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/f779264f

Branch: refs/heads/master
Commit: f779264f01c80e632649ff6dbe75f9b78bd359f0
Parents: 4a6183a
Author: dblevins <da...@gmail.com>
Authored: Sun Nov 25 23:22:38 2018 -0800
Committer: dblevins <da...@gmail.com>
Committed: Sun Nov 25 23:22:38 2018 -0800

----------------------------------------------------------------------
 docs/.DS_Store                                  |  Bin 0 -> 6148 bytes
 docs/Configuring-in-tomee.mdtext                |   41 +
 docs/activemqresourceadapter-config.mdtext      |   66 +
 docs/admin/.DS_Store                            |  Bin 0 -> 6148 bytes
 docs/admin/cluster/index.adoc                   |  227 +++
 docs/admin/configuration/application.adoc       |  100 ++
 docs/admin/configuration/containers.adoc        |  585 +++++++
 docs/admin/configuration/index.adoc             |   24 +
 docs/admin/configuration/resources.adoc         |  572 +++++++
 docs/admin/configuration/server.adoc            |   86 +
 docs/admin/file-layout.adoc                     |  144 ++
 docs/admin/index.adoc                           |    7 +
 docs/advanced/.DS_Store                         |  Bin 0 -> 6148 bytes
 docs/advanced/applicationcomposer/index.adoc    |   76 +
 docs/advanced/client/jndi.adoc                  |  116 ++
 docs/advanced/index.adoc                        |    7 +
 docs/advanced/jms/jms-configuration.adoc        |   67 +
 docs/advanced/setup/index.adoc                  |  142 ++
 docs/advanced/shading/index.adoc                |  276 ++++
 docs/advanced/tomee-embedded/index.adoc         |  223 +++
 docs/alternate-descriptors.mdtext               |  114 ++
 docs/annotations,-xml-and-defaults.mdtext       |  565 +++++++
 docs/app-clients-and-jndi.mdtext                |   69 +
 docs/application-composer/advanced.md           |   90 +
 docs/application-composer/getting-started.md    |  188 +++
 docs/application-composer/history.md            |   38 +
 docs/application-composer/index.md              |   18 +
 docs/application-deployment-solutions.mdtext    |   75 +
 ...plication-discovery-via-the-classpath.mdtext |   91 +
 docs/application-resources.mdtext               |  247 +++
 docs/arquillian-available-adapters.mdtext       |  262 +++
 docs/arquillian-getting-started.mdtext          |   20 +
 docs/basics---getting-things.mdtext             |  103 ++
 docs/basics---security.mdtext                   |   52 +
 docs/basics---transactions.mdtext               |   56 +
 docs/bmpentitycontainer-config.mdtext           |   35 +
 docs/bouncy-castle.mdtext                       |   31 +
 docs/built-in-type-converters.mdtext            |   91 +
 docs/callbacks.mdtext                           |  164 ++
 docs/changing-jms-implementations.mdtext        |  133 ++
 docs/client-server-transports.mdtext            |   19 +
 docs/clients.mdtext                             |  101 ++
 docs/cmpentitycontainer-config.mdtext           |   34 +
 docs/collapsed-ear.mdtext                       |   42 +
 docs/common-datasource-configurations.mdtext    |  111 ++
 docs/common-errors.mdtext                       |   27 +
 ...common-persistenceprovider-properties.mdtext |   44 +
 docs/comparison.mdtext                          |  219 +++
 docs/concepts.mdtext                            |   75 +
 docs/configuration.mdtext                       |  140 ++
 docs/configuring-containers-in-tests.mdtext     |   24 +
 docs/configuring-datasources-in-tests.mdtext    |   56 +
 docs/configuring-datasources.mdtext             |  167 ++
 docs/configuring-durations.mdtext               |   64 +
 docs/configuring-javamail.mdtext                |   37 +
 docs/configuring-logging-in-tests.mdtext        |  114 ++
 ...configuring-persistenceunits-in-tests.mdtext |  141 ++
 docs/constructor-injection.mdtext               |   95 ++
 docs/containers-and-resources.mdtext            |  479 ++++++
 docs/contrib/.DS_Store                          |  Bin 0 -> 6148 bytes
 docs/contrib/debug/debug-intellij.mdtext        |  129 ++
 docs/contrib/debug/idea1.png                    |  Bin 0 -> 48995 bytes
 docs/contrib/debug/idea10.png                   |  Bin 0 -> 54939 bytes
 docs/contrib/debug/idea2.png                    |  Bin 0 -> 36567 bytes
 docs/contrib/debug/idea3.png                    |  Bin 0 -> 20165 bytes
 docs/contrib/debug/idea4.png                    |  Bin 0 -> 55824 bytes
 docs/contrib/debug/idea6.png                    |  Bin 0 -> 19286 bytes
 docs/contrib/debug/idea7.png                    |  Bin 0 -> 19805 bytes
 docs/contrib/debug/idea8.png                    |  Bin 0 -> 55721 bytes
 docs/contrib/debug/idea9.png                    |  Bin 0 -> 19477 bytes
 docs/custom-injection.mdtext                    |  192 +++
 docs/datasource-config.mdtext                   |  537 ++++++
 docs/datasource-configuration-by-creator.md     |  151 ++
 docs/datasource-password-encryption.mdtext      |  124 ++
 docs/deamon/lin-service.mdtext                  |   13 +
 docs/deamon/win-service.mdtext                  |   13 +
 docs/declaring-references.mdtext                |    2 +
 docs/deploy-tool.mdtext                         |  161 ++
 docs/deploying-in-tomee.mdtext                  |   69 +
 docs/deployment-id.mdtext                       |  227 +++
 docs/deployments.mdtext                         |  131 ++
 docs/details-on-openejb-jar.mdtext              |  152 ++
 docs/developer/.DS_Store                        |  Bin 0 -> 6148 bytes
 docs/developer/classloading/index.adoc          |   59 +
 docs/developer/configuration/cxf.adoc           |   93 ++
 docs/developer/ide/index.adoc                   |   25 +
 docs/developer/index.adoc                       |    7 +
 docs/developer/json/index.adoc                  |  206 +++
 docs/developer/migration/tomee-1-to-7.adoc      |   33 +
 .../testing/applicationcomposer/index.adoc      |  335 ++++
 docs/developer/testing/arquillian/index.adoc    |  421 +++++
 docs/developer/testing/index.adoc               |    9 +
 docs/developer/testing/other/index.adoc         |  134 ++
 docs/developer/tools/gradle-plugins.adoc        |   50 +
 docs/developer/tools/index.adoc                 |    8 +
 docs/developer/tools/maven-plugins.adoc         |   12 +
 .../tools/maven/applicationcomposer.adoc        |   47 +
 docs/developer/tools/maven/embedded.adoc        |   53 +
 docs/developer/tools/maven/tomee.adoc           |  183 ++
 docs/docs.adoc                                  |   26 +
 docs/documentation.mdtext                       |  102 ++
 docs/documentation.old.mdtext                   |  102 ++
 docs/dynamic-datasource.mdtext                  |  216 +++
 docs/eclipse-plugin.mdtext                      |   38 +
 docs/ejb-failover.mdtext                        |   88 +
 docs/ejb-local-ref.mdtext                       |   49 +
 docs/ejb-over-ssl.mdtext                        |   96 ++
 docs/ejb-ref.mdtext                             |   47 +
 docs/ejb-refs.mdtext                            |  174 ++
 docs/ejb-request-logging.mdtext                 |   94 ++
 docs/ejbd-transport.mdtext                      |  132 ++
 docs/embedded-and-remotable.mdtext              |  179 ++
 docs/embedded-configuration.mdtext              |  132 ++
 docs/embedding.mdtext                           |   26 +
 docs/failover-logging.mdtext                    |   38 +
 docs/faq.mdtext                                 |   96 ++
 docs/faq_openejb-jar.html.mdtext                |    2 +
 docs/features.mdtext                            |    1 +
 docs/from-glassfish-to-tomee.mdtext             |    3 +
 ...ting-with-openejb,-jetty-and-selenium.mdtext |  236 +++
 docs/generating-ejb-3-annotations.mdtext        |   57 +
 docs/getting-started.mdtext                     |  169 ++
 docs/hello-world.mdtext                         |  246 +++
 docs/hibernate.mdtext                           |   94 ++
 docs/initialcontext-config.mdtext               |   24 +
 docs/installation-drop-in-war.mdtext            |   41 +
 docs/installation.mdtext                        |   30 +
 docs/installing-tomee.mdtext                    |   67 +
 docs/java7.mdtext                               |   36 +
 docs/javaagent-with-maven-surefire.mdtext       |   54 +
 docs/javaagent.mdtext                           |   57 +
 docs/javaee7-status.mdtext                      |  182 ++
 docs/javamailsession-config.mdtext              |   24 +
 docs/jms-resources-and-mdb-container.mdtext     |  279 ++++
 docs/jmsconnectionfactory-config.mdtext         |   85 +
 docs/jndi-names.mdtext                          |  368 +++++
 docs/jpa-concepts.mdtext                        |  217 +++
 docs/jpa-usage.mdtext                           |   50 +
 docs/local-client-injection.mdtext              |   85 +
 docs/local-server.mdtext                        |   57 +
 docs/lookup-of-other-ejbs-example.mdtext        |  147 ++
 docs/managedcontainer-config.mdtext             |   24 +
 docs/manual-installation.mdtext                 |  223 +++
 docs/maven.mdtext                               |   38 +
 docs/maven/build-mojo.mdtext                    | 1422 ++++++++++++++++
 docs/maven/configtest-mojo.mdtext               | 1324 +++++++++++++++
 docs/maven/debug-mojo.mdtext                    | 1391 ++++++++++++++++
 docs/maven/deploy-mojo.mdtext                   |  251 +++
 docs/maven/exec-mojo.mdtext                     | 1547 +++++++++++++++++
 docs/maven/favicon.ico                          |  Bin 0 -> 3638 bytes
 docs/maven/help-mojo.mdtext                     |  145 ++
 docs/maven/index.mdtext                         |  144 ++
 docs/maven/list-mojo.mdtext                     |  165 ++
 docs/maven/run-mojo.mdtext                      | 1391 ++++++++++++++++
 docs/maven/start-mojo.mdtext                    | 1391 ++++++++++++++++
 docs/maven/stop-mojo.mdtext                     | 1324 +++++++++++++++
 docs/maven/undeploy-mojo.mdtext                 |  205 +++
 docs/messagedrivencontainer-config.mdtext       |   65 +
 docs/multicast-discovery.mdtext                 |   79 +
 .../multiple-business-interface-hazzards.mdtext |  199 +++
 docs/multipoint-considerations.mdtext           |   26 +
 docs/multipoint-discovery.mdtext                |   71 +
 docs/multipoint-recommendations.mdtext          |  139 ++
 docs/multipulse-discovery.mdtext                |   90 +
 docs/new-in-openejb-3.0.mdtext                  |  175 ++
 docs/openejb-3.mdtext                           |   68 +
 docs/openejb-binaries.mdtext                    |   24 +
 docs/openejb-eclipse-plugin.mdtext              |   19 +
 docs/openejb-jsr-107-integration.mdtext         |   21 +
 docs/openejb.xml.mdtext                         |   93 ++
 docs/openjpa.mdtext                             |  111 ++
 docs/orb-config.mdtext                          |   24 +
 docs/persistence-context.mdtext                 |   54 +
 docs/persistence-unit-ref.mdtext                |   87 +
 docs/properties-listing.mdtext                  |   90 +
 docs/properties-tool.mdtext                     |  212 +++
 docs/property-overriding.mdtext                 |   62 +
 docs/provisioning.mdtext                        |   76 +
 docs/proxyfactory-config.mdtext                 |   24 +
 docs/queue-config.mdtext                        |   34 +
 docs/quickstart.mdtext                          |   67 +
 docs/refcard/.DS_Store                          |  Bin 0 -> 6148 bytes
 docs/refcard/css/cypher_main.css                |  493 ++++++
 docs/refcard/css/github.min.css                 |  129 ++
 docs/refcard/css/refcard.css                    |  491 ++++++
 docs/refcard/css/style.css                      |  102 ++
 docs/refcard/favicon.ico                        |  Bin 0 -> 3638 bytes
 docs/refcard/images/github.png                  |  Bin 0 -> 2473 bytes
 docs/refcard/images/tomee.png                   |  Bin 0 -> 1914 bytes
 docs/refcard/js/highlight.min.js                |    1 +
 docs/refcard/js/jquery.min.js                   |    5 +
 docs/refcard/js/modernizr.custom.2.6.2.js       |    4 +
 docs/refcard/js/refcard.js                      |   74 +
 docs/refcard/refcard.html                       | 1556 ++++++++++++++++++
 docs/remote-server.mdtext                       |   60 +
 docs/resource-injection.mdtext                  |  180 ++
 docs/resource-ref-for-datasource.mdtext         |   42 +
 docs/running-a-standalone-openejb-server.mdtext |   91 +
 docs/securing-a-web-service.mdtext              |  239 +++
 docs/security-annotations.mdtext                |  294 ++++
 docs/security.mdtext                            |  144 ++
 docs/securityservice-config.mdtext              |   34 +
 docs/service-locator.mdtext                     |  169 ++
 docs/services.mdtext                            |   16 +
 docs/singleton-beans.mdtext                     |  223 +++
 docs/singleton-ejb.mdtext                       |    2 +
 docs/singletoncontainer-config.mdtext           |   53 +
 docs/spring-and-openejb-3.0.mdtext              |  185 +++
 docs/spring-ejb-and-jpa.mdtext                  |  170 ++
 docs/spring.mdtext                              |  121 ++
 docs/ssh.mdtext                                 |   48 +
 docs/standalone-server.mdtext                   |   23 +
 docs/startup.mdtext                             |  293 ++++
 docs/statefulcontainer-config.mdtext            |  157 ++
 docs/statelesscontainer-config.mdtext           |  458 ++++++
 docs/system-properties-files.mdtext             |   20 +
 docs/system-properties.mdtext                   |   64 +
 docs/telnet-console.mdtext                      |  163 ++
 docs/tip-concurrency.mdtext                     |   22 +
 docs/tip-jersey-client.mdtext                   |   18 +
 docs/tip-weblogic.mdtext                        |   13 +
 docs/tomcat-object-factory.mdtext               |   12 +
 docs/tomee-and-eclipse.mdtext                   |  141 ++
 docs/tomee-and-hibernate.mdtext                 |  159 ++
 docs/tomee-and-intellij.mdtext                  |   77 +
 docs/tomee-and-netbeans.mdtext                  |   93 ++
 docs/tomee-and-security.mdtext                  |   41 +
 docs/tomee-and-webspheremq.mdtext               |  132 ++
 docs/tomee-cluster.txt                          |   72 +
 docs/tomee-directory-structure.mdtext           |   57 +
 docs/tomee-embedded-maven-plugin.mdtext         |  956 +++++++++++
 docs/tomee-jaas.mdtext                          |   69 +
 docs/tomee-logging-in-eclipse.mdtext            |   10 +
 docs/tomee-logging.mdtext                       |   29 +
 docs/tomee-maven-plugin.mdtext                  |  144 ++
 docs/tomee-mp-getting-started.mdtext            |   61 +
 docs/tomee-version-policies.mdtext              |   24 +
 docs/tomee-webaccess.mdtext                     |   18 +
 docs/tomee-webapp.mdtext                        |   58 +
 docs/topic-config.mdtext                        |   34 +
 docs/transaction-annotations.mdtext             |  217 +++
 docs/transactionmanager-config.mdtext           |  164 ++
 docs/understanding-callbacks.mdtext             |   88 +
 docs/understanding-the-directory-layout.mdtext  |   69 +
 docs/unix-daemon.mdtext                         |  105 ++
 docs/validation-tool.mdtext                     |  138 ++
 docs/version-checker.mdtext                     |    9 +
 247 files changed, 37041 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/.DS_Store
----------------------------------------------------------------------
diff --git a/docs/.DS_Store b/docs/.DS_Store
new file mode 100644
index 0000000..3d9c35b
Binary files /dev/null and b/docs/.DS_Store differ

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/Configuring-in-tomee.mdtext
----------------------------------------------------------------------
diff --git a/docs/Configuring-in-tomee.mdtext b/docs/Configuring-in-tomee.mdtext
new file mode 100644
index 0000000..a650a7d
--- /dev/null
+++ b/docs/Configuring-in-tomee.mdtext
@@ -0,0 +1,41 @@
+Title:      Apache TomEE configuration
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+###Configuring Resources:
+    
+*    Drivers are dropped into tomeeDir/lib
+*    Resources are configured in tomeeDir/conf/tomee.xml.    
+*    The configurations take a very simple (XML+Property-file) syntax.
+*    Tag names match annotation names
+
+For example,
+
+    @Resource DataSource moviesDatabase 
+
+is injected with the following resource:
+
+
+    <Resource id="moviesDatabase" type="DataSource">    
+    JdbcDriver org.hsqldb.jdbcDriver    
+    JdbcUrl jdbc:mysql:localhost:3306/moviesdb    
+    UserName sa    
+    Password secret    
+    JtaManaged true    
+    </Resource>
+
+For more on how to configure, read through [configuring-datasources](/configuring-datasources.html), [containers-and-resources](containers-and-resources.html) docs.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/activemqresourceadapter-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/activemqresourceadapter-config.mdtext b/docs/activemqresourceadapter-config.mdtext
new file mode 100644
index 0000000..8f85dc7
--- /dev/null
+++ b/docs/activemqresourceadapter-config.mdtext
@@ -0,0 +1,66 @@
+Title: ActiveMQResourceAdapter Configuration
+
+
+A ActiveMQResourceAdapter can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <Resource id="myActiveMQResourceAdapter" type="ActiveMQResourceAdapter">
+        brokerXmlConfig = broker:(tcp://localhost:61616)?useJmx=false
+        dataSource = Default Unmanaged JDBC Database
+        serverUrl = vm://localhost?waitForStart=20000&async=true
+        startupTimeout = 10 seconds
+    </Resource>
+
+Alternatively, a ActiveMQResourceAdapter can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    myActiveMQResourceAdapter = new://Resource?type=ActiveMQResourceAdapter
+    myActiveMQResourceAdapter.brokerXmlConfig = broker:(tcp://localhost:61616)?useJmx=false
+    myActiveMQResourceAdapter.dataSource = Default Unmanaged JDBC Database
+    myActiveMQResourceAdapter.serverUrl = vm://localhost?waitForStart=20000&async=true
+    myActiveMQResourceAdapter.startupTimeout = 10 seconds
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared ActiveMQResourceAdapter a warning will be logged.  If a ActiveMQResourceAdapter is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple ActiveMQResourceAdapter declarations are allowed.
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+<tr>
+  <td>brokerXmlConfig</td>
+  <td>String</td>
+  <td>broker:(tcp://localhost:61616)?useJmx=false</td>
+  <td>
+Broker configuration URI as defined by ActiveMQ
+see http://activemq.apache.org/broker-configuration-uri.html
+BrokerXmlConfig xbean:file:conf/activemq.xml - Requires xbean-spring.jar and dependencies
+</td>
+</tr>
+<tr>
+  <td>dataSource</td>
+  <td>String</td>
+  <td>Default&nbsp;Unmanaged&nbsp;JDBC&nbsp;Database</td>
+  <td>
+DataSource for persistence messages
+</td>
+</tr>
+<tr>
+  <td>serverUrl</td>
+  <td>java.net.URI</td>
+  <td>vm://localhost?waitForStart=20000&async=true</td>
+  <td>
+Broker address
+</td>
+</tr>
+<tr>
+  <td>startupTimeout</td>
+  <td><a href="configuring-durations.html">time</a></td>
+  <td>10&nbsp;seconds</td>
+  <td>
+How long to wait for broker startup
+</td>
+</tr>
+</table>
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/admin/.DS_Store
----------------------------------------------------------------------
diff --git a/docs/admin/.DS_Store b/docs/admin/.DS_Store
new file mode 100644
index 0000000..2c461b9
Binary files /dev/null and b/docs/admin/.DS_Store differ

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/admin/cluster/index.adoc
----------------------------------------------------------------------
diff --git a/docs/admin/cluster/index.adoc b/docs/admin/cluster/index.adoc
new file mode 100755
index 0000000..82caad7
--- /dev/null
+++ b/docs/admin/cluster/index.adoc
@@ -0,0 +1,227 @@
+== Clustering and High Availability (HA)
+
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+
+=== Session clustering
+
+TomEE fully relies on Tomcat clustering: https://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html[Tomcat Clustering].
+
+The configuration is mainly in `conf/server.xml` and since TomEE 7 CDI `@SessionScoped` is transparently clustered
+through the session.
+
+=== Hazelcast as session provider
+
+Hazelcast did a post on this topic on https://hazelcast.com/use-cases/web-session-clustering/session-clustering-tomee/[Session Clustering With TomEE].
+
+Tomitribe also demonstrated you can distributed `@Stateful` beans easily relying on hazelcast: https://github.com/tomitribe/hazelcast-tomee-poc[Hazelcast TomEE PoC].
+
+=== Load balancing
+
+TomEE being a HTTP server all HTTP load balancer such as HTTPd (a.k.a. Apache2), ngnix, F5 etc... will work.
+
+More documentation on HTTPd link can be found on https://tomcat.apache.org/connectors-doc/webserver_howto/apache.html[Tomcat] website.
+
+=== EJBd
+
+If you use the EJBd protocol (`@Remote` EJB proprietary protocol of TomEE) you can get cluster features on the client
+part.
+
+==== Multicast
+
+Multicast is the preferred way to broadcast the heartbeat on the network. The simple technique of broadcasting a non-changing service URI on the network has specific advantages to multicast. The URI itself is essentially stateless and there is no "i'm alive" URI or an "i'm dead" URI.
+
+In this way the issues with UDP being unordered and unreliable melt away as state is no longer a concern and packet sizes are always small. Complicated libraries that ride atop UDP and attempt to offer reliability (retransmission) and ordering on UDP can be avoided. As well the advantages UDP has over TCP are retained as there are no java layers attempting to force UDP communication to be more TCP-like. The simple design means UDP/Multicast is only used for discovery and from there on out critical information is transmitted over TCP/IP which is obviously going to do a better job at ensuring reliability and ordering.
+
+===== Server Configuration
+
+When you boot the server there should be a conf/multicast.properties file containing:
+
+[source,bash]
+----
+server      = org.apache.openejb.server.discovery.MulticastDiscoveryAgent
+bind        = 239.255.2.3
+port        = 6142
+disabled    = true
+group       = default
+----
+
+Just need to enable that by setting disabled=false. All of the above settings except server can be changed. The port and bind must be valid for general multicast/udp network communication.
+
+The group setting can be changed to further group servers that may use the same multicast channel. As shown below the client also has a group setting which can be used to select an appropriate server from the multicast channel.
+
+IMPORTANT: for multicast to work you need to have ejbd activated as a normal service. This can be done setting in `conf/system.properties` the entry: `openejb.service.manager.class = org.apache.openejb.server.SimpleServiceManager`.
+
+===== Multicast Client
+
+The multicast functionality is not just for servers to find each other in a cluster, it can also be used for EJB clients to discover a server. A special multicast:// URL can be used in the InitialContext properties to signify that multicast should be used to seed the connection process. Such as:
+
+[source,java]
+----
+Properties p = new Properties();
+p.put(Context.INITIAL_CONTEXT_FACTORY,
+"org.apache.openejb.client.RemoteInitialContextFactory");
+p.put(Context.PROVIDER_URL, "multicast://239.255.2.3:6142?group=default");
+InitialContext remoteContext = new InitialContext(p);
+----
+
+The URL has optional query parameters such as schemes and group and timeout which allow you to zero in on a particular type of service of a particular cluster group as well as set how long you are willing to wait in the discovery process till finally giving up. The first matching service that it sees "flowing" around on the UDP stream is the one it picks and sticks to for that and subsequent requests, ensuring UDP is only used when there are no other servers to talk to.
+
+Note that EJB clients do not need to use multicast to find a server. If the client knows the URL of a server in the cluster, it may use it and connect directly to that server, at which point that server will share the full list of its peers.
+
+===== Multicast Servers with TCP Clients
+
+Note that clients do not need to use multicast to communicate with servers. Servers can use multicast to discover each other, but clients are still free to connect to servers in the network using the server's TCP address.
+
+[source,java]
+----
+Properties p = new Properties();
+p.put(Context.INITIAL_CONTEXT_FACTORY,  "org.apache.openejb.client.RemoteInitialContextFactory");
+p.put(Context.PROVIDER_URL, "ejbd://192.168.1.30:4201");
+InitialContext remoteContext = new InitialContext(p);
+When the client connects, the server will send the URLs of all the servers in the group and failover will take place normally.
+----
+
+==== Multipulse
+
+MultiPulse is an alternative multicast lookup that does not use a regular heartbeat. Instead, servers listen for a multicast request packet (a pulse) to which a response is then sent. Multicast network traffic is effectively reduced to an absolute minimum.
+
+MultiPulse is only useful in network scenarios where both client and server can be configured to send multicast UDP packets.
+
+===== Server Configuration
+
+After you boot the server for the first time the default configuration will create the file conf/conf.d/multipulse.properties containing:
+
+[source,bash]
+----
+server      = org.apache.openejb.server.discovery.MulticastPulseAgent
+bind        = 239.255.2.3
+port        = 6142
+disabled    = true
+group       = default
+----
+
+You just need to enable the agent by setting disabled = false. It is advisable to disable multicast in the multicast.properties file, or at least to use a different bind address or port should you wish to use both.
+
+All of the above settings except server can be modified as required. The port and bind must be valid for general multicast/udp network communication.
+
+The group setting can be changed to further group/cluster servers that may use the same multicast channel. As shown below the client also has an optional group setting which can be used to select an appropriate server cluster from the multicast channel (See MultiPulse Client).
+
+The next step is to ensure that the advertised services are configured for discovery. Edit the ejbd.properties file (and any other enabled services such as http, etc.) and ensure that the discovery option is set to a value that remote clients will be able to resolve.
+
+[source,bash]
+----
+server      = org.apache.openejb.server.ejbd.EjbServer
+bind        = 0.0.0.0
+port        = 4201
+disabled    = false
+threads     = 20
+discovery   = ejb:ejbd://{bind}:{port}
+----
+
+NOTE: If either 0.0.0.0 (IPv4) or [::] (IPv6) wildcard bind addresses are used then the server will actually broadcast all of it's known public hosts to clients. Clients will then cycle though and attempt to connect to the provided hosts until successful.
+
+If localhost is used then only clients on the same physical machine will actually 'see' the server response.
+
+===== MultiPulse Client
+
+The multipulse functionality is not just for servers to find each other in a cluster, it can also be used for EJB clients to discover a server. A special multipulse:// URL can be used in the InitialContext properties to signify that multipulse should be used to seed the connection process. Such as:
+
+[source,java]
+----
+Properties p = new Properties();
+p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
+p.put(Context.PROVIDER_URL, "multipulse://239.255.2.3:6142?group=default&timeout=250");
+InitialContext remoteContext = new InitialContext(p);
+----
+
+The URL has optional query parameters such as schemes and group and timeout which allow you to zero in on a particular type of service of a particular cluster group as well as set how long you are willing to wait in the discovery process till finally giving up. The first matching service that it sees "flowing" around on the UDP stream is the one it picks and sticks to for that and subsequent requests, ensuring UDP is only used when there are no other servers to talk to.
+
+Note that EJB clients do not need to use multipulse to find a server. If the client knows the URL of a server in the cluster, it may use it and connect directly to that server, at which point that server will share the full list of its peers.
+
+Multicast Servers with TCP Clients
+
+Note that clients do not need to use multipulse to communicate with servers. Servers can use multicast to discover each other, but clients are still free to connect to servers in the network using the server's TCP address.
+[source,java]
+----
+Properties p = new Properties();
+p.put(Context.INITIAL_CONTEXT_FACTORY,  "org.apache.openejb.client.RemoteInitialContextFactory");
+p.put(Context.PROVIDER_URL, "ejbd://192.168.1.30:4201");
+InitialContext remoteContext = new InitialContext(p);
+----
+
+When the client connects, the server will send the URLs of all the servers in the group and failover will take place normally.
+
+==== Multipoint
+
+As TCP has no real broadcast functionality to speak of, communication of who is in the network is achieved by each server having a physical connection to each other server in the network.
+
+To join the network, the server must be configured to know the address of at least one server in the network and connect to it. When it does both servers will exchange the full list of all the other servers each knows about. Each server will then connect to any new servers they've just learned about and repeat the processes with those new servers. The end result is that everyone has a direct connection to everyone 100% of the time, hence the made-up term "multipoint" to describe this situation of each server having multiple point-to-point connections which create a fully connected graph.
+
+On the client side things are similar. It needs to know the address of at least one server in the network and be able to connect to it. When it does it will get the full (and dynamically maintained) list of every server in the network. The client doesn't connect to each of those servers immediately, but rather consults the list in the event of a failover, using it to decide who to connect to next.
+
+The entire process is essentially the art of using a statically maintained list to bootstrap getting the more valuable dynamically maintained list.
+
+===== Server Configuration
+
+In the server this list can be specified via the conf/multipoint.properties file like so:
+
+[source,bash]
+----
+server      = org.apache.openejb.server.discovery.MultipointDiscoveryAgent
+bind        = 127.0.0.1
+port        = 4212
+disabled    = false
+initialServers = 192.168.1.20:4212, 192.168.1.30:4212, 192.168.1.40:4212
+----
+
+The above configuration shows the server has an port 4212 open for connections by other servers for multipoint communication. The initialServers list should be a comma separated list of other similar servers on the network. Only one of the servers listed is required to be running when this server starts up -- it is not required to list all servers in the network.
+
+===== Client Configuration
+
+Configuration in the client is similar, but note that EJB clients do not participate directly in multipoint communication and do not connect to the multipoint port. The server list is simply a list of the regular ejbd:// urls that a client normally uses to connect to a server.
+
+[source,java]
+----
+Properties p = new Properties();
+p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
+p.put(Context.PROVIDER_URL, "failover:ejbd://192.168.1.20:4201,ejbd://192.168.1.30:4201");
+InitialContext remoteContext = new InitialContext(p);
+----
+
+Failover can work entirely driven by the server, the client does not need to be configured to participate. A client can connect as usual to the server.
+
+[source,java]
+----
+Properties p = new Properties();
+p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
+p.put(Context.PROVIDER_URL, "ejbd://192.168.1.20:4201");
+InitialContext remoteContext = new InitialContext(p);
+----
+
+If the server at 192.168.1.20:4201 supports failover, so will the client.
+
+In this scenario the list of servers used for failover is supplied entirely by the server at 192.168.1.20:4201. The server could have aquired the list via multicast or multipoint (or both), but this detail is not visible to the client.
+
+===== Considerations
+
+====== Network size
+
+The general disadvantage of this topology is the number of connections required. The number of connections for the network of servers is equal to (n * n - n) / 2, where n is the number of servers. For example, with 5 servers you need 10 connections, with 10 servers you need 45 connections, and with 50 servers you need 1225 connections. This is of course the number of connections across the entire network, each individual server only needs n - 1 connections.
+
+The handling of these sockets is all asynchronous Java NIO code which allows the server to handle many connections (all of them) with one thread. From a pure threading perspective, the option is extremely efficient with just one thread to listen and broadcast to many peers.
+
+====== Double connect
+
+It is possible in this process that two servers learn of each other at the same time and each attempts to connect to the other simultaneously, resulting in two connections between the same two servers. When this happens both servers will detect the extra connection and one of the connections will be dropped and one will be kept. In practice this race condition rarely happens and can be avoided almost entirely by fanning out server startup by as little as 100 milliseconds.
+
+===== Recommandation
+
+As mentioned the initialServers is only used for bootstrapping the multipoint network. Once running, all servers will dynamically establish direct connections with each other and there is no single point of failure.
+
+However to ensure that the bootstrapping process can occur successfully, the initialServers property of the conf/multipoint.properties file must be set carefully and with a specific server start order in mind. Each server consults its initialServers list exactly once in the bootstrapping phase at startup, after that time connections are made dynamically.
+
+This means that at least one of the servers listed in initialServers must already be running when the server starts or the server might never become introduced and connected to all the other servers in the network.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/admin/configuration/application.adoc
----------------------------------------------------------------------
diff --git a/docs/admin/configuration/application.adoc b/docs/admin/configuration/application.adoc
new file mode 100755
index 0000000..be43cd2
--- /dev/null
+++ b/docs/admin/configuration/application.adoc
@@ -0,0 +1,100 @@
+= Application Configuration
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+=== `application.properties`
+
+This file is located in `WEB-INF` for a war and `META-INF` for an ear.
+
+==== `@Asynchronous` configuration
+
+Default pool size for `@Asynchronous` is 5. It can be very small for some applications highly relying on
+asynchronism or reactive patterns. Therefore it is possible to customize it adding these entries in `application.properties`:
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Default| Description
+| AsynchronousPool.Size | 5 | Core size of the pool
+| AsynchronousPool.CorePoolSize | 5 | Core size of the pool (inherit its default from .Size alias)
+| AsynchronousPool.MaximumPoolSize | 5 | Maximum size of the pool
+| AsynchronousPool.QueueSize | 5 | Maximum size of the pool
+| AsynchronousPool.KeepAliveTime | 1 minute | Thread keep alive duration
+| AsynchronousPool.AllowCoreThreadTimeOut | true | Should thread timeout
+| AsynchronousPool.QueueType | LINKED (or SYNCHRONOUS if size == 0) | The type of queue of the pool in ARRAY, LINKED, PRIORITY or SYNCHRONOUS (same behavior as java implementations of the same name)
+| AsynchronousPool.ShutdownWaitDuration | 1 minute | How many time to wait for the pool to shutdown when undeploying the application
+| AsynchronousPool.RejectedExecutionHandlerClass | - | A fully qualified name of a `java.util.concurrent.RejectedExecutionHandler`
+|===
+
+==== TimerService and `@Scheduled`
+
+`timerStore.class` allows to switch from the in memory (`org.apache.openejb.core.timer.MemoryTimerStore`) timer storage
+for quartz tasks to a custom implementation (using a database or anything for instance). Constructor can take a `TransactionManager`
+or nothing.
+
+All quartz properties prefixed with `org.apache.openejb.quartz.` (instead of `org.quartz.`) are passthrough to quartz.
+
+==== CDI
+
+The boolean `openejb.cdi.skip-resource-validation` allows to not validate resources ie `@EJB` and `@Resource` usages in CDI beans.
+
+All properties understood by OpenWebBeans will also be passthrough to OpenWebBeans from this location, see http://openwebbeans.apache.org/owbconfig.html[OWB config] for more details.
+
+==== `@WebServiceRef`
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Description
+| cxf.jaxws.client.wsFeatures | Allows to set WSFeature on the client injection. Values is a list (comma separated) of resource id in resources.xml or fully qualified names.
+|===
+
+==== `@Stateless`
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Description
+| AccessTimeout or Timeout | container timeout
+| CloseTimeout | container timeout
+| BackgroundStartup | Don't create instances in parallel if minimum count is > 0, default to false
+|===
+
+=== `resources.xml`
+
+`resources.xml` is a tomee.xml using application classloader.
+
+As `tomee.xml` it supports filtering so you can use environment variables and system properties, for instance
+to use a MySQL database on OpenShift you can do:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<resources>
+  <Resource id="MySQL" aliases="myAppDataSourceName" type="DataSource">
+    JdbcDriver = com.mysql.jdbc.Driver
+    JdbcUrl = jdbc:mysql://${OPENSHIFT_MYSQL_DB_HOST}:${OPENSHIFT_MYSQL_DB_PORT}/rmannibucau?tcpKeepAlive=true
+    UserName = ${OPENSHIFT_MYSQL_DB_USERNAME}
+    Password = ${OPENSHIFT_MYSQL_DB_PASSWORD}
+    ValidationQuery = SELECT 1
+    ValidationInterval = 30000
+    NumTestsPerEvictionRun = 5
+    TimeBetweenEvictionRuns = 30 seconds
+    TestWhileIdle = true
+    MaxActive = 200
+  </Resource>
+</resources>
+----
+
+`resources.xml` supports `Resource`, `Service` and `Container`.
+
+==== `resources.xml` mecanism
+
+`resources.xml` resources are still available globally like any `tomee.xml` resource.
+
+The actual resource is bound in an application subtree called with the application name and a resource facade is bound
+in the global naming tree to be able to route the requests depending the application.
+
+Typically if your application is named `myapp` and your resource id is `myresource` then instead of being registered
+as `myresource`, it will get registered as `myapp/myresource`.
+
+If you get any ambiguity in resource name matching try to fully qualified your resource prefixing it with the application name.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/admin/configuration/containers.adoc
----------------------------------------------------------------------
diff --git a/docs/admin/configuration/containers.adoc b/docs/admin/configuration/containers.adoc
new file mode 100755
index 0000000..3d86272
--- /dev/null
+++ b/docs/admin/configuration/containers.adoc
@@ -0,0 +1,585 @@
+= Resources
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+All containers will be created automatically - which means you don't need to define them
+if you don't need to tune their configuration - when a bean of their type if found.
+
+To avoid that use `openejb.offline` property and set it to `true`. See link:server.html[Server Configuration] for more detail.
+
+=== @Stateless
+
+A `@Stateless` container.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Container id="Foo" type="STATELESS">
+    AccessTimeout = 30 seconds
+    MaxSize = 10
+    MinSize = 0
+    StrictPooling = true
+    MaxAge = 0 hours
+    ReplaceAged = true
+    ReplaceFlushed = false
+    MaxAgeOffset = -1
+    IdleTimeout = 0 minutes
+    GarbageCollection = false
+    SweepInterval = 5 minutes
+    CallbackThreads = 5
+    CloseTimeout = 5 minutes
+    UseOneSchedulerThreadByBean = false
+    EvictionThreads = 1
+</Container>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Container?type=STATELESS
+Foo.AccessTimeout = 30 seconds
+Foo.MaxSize = 10
+Foo.MinSize = 0
+Foo.StrictPooling = true
+Foo.MaxAge = 0 hours
+Foo.ReplaceAged = true
+Foo.ReplaceFlushed = false
+Foo.MaxAgeOffset = -1
+Foo.IdleTimeout = 0 minutes
+Foo.GarbageCollection = false
+Foo.SweepInterval = 5 minutes
+Foo.CallbackThreads = 5
+Foo.CloseTimeout = 5 minutes
+Foo.UseOneSchedulerThreadByBean = false
+Foo.EvictionThreads = 1
+----
+
+==== Configuration
+
+===== AccessTimeout
+
+Specifies the time an invokation should wait for an instance
+of the pool to become available.
+
+After the timeout is reached, if an instance in the pool cannot
+be obtained, the method invocation will fail.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+"1 hour and 27 minutes and 10 seconds"
+
+Any usage of the `javax.ejb.AccessTimeout` annotation will
+override this setting for the bean or method where the
+annotation is used.
+
+===== MaxSize
+
+Specifies the size of the bean pools for this stateless
+SessionBean container.  If StrictPooling is not used, instances
+will still be created beyond this number if there is demand, but
+they will not be returned to the pool and instead will be
+immediately destroyed.
+
+===== MinSize
+
+Specifies the minimum number of bean instances that should be in
+the pool for each bean.  Pools are prefilled to the minimum on
+startup.  Note this will create start order dependencies between
+other beans that also eagerly start, such as other `@Stateless`
+beans with a minimum or `@Singleton` beans using `@Startup`.  The
+start order.
+
+The minimum pool size is rigidly maintained.  Instances in the
+minimum side of the pool are not eligible for `IdleTimeout` or
+`GarbageCollection`, but are subject to `MaxAge` and flushing.
+
+If the pool is flushed it is immediately refilled to the minimum
+size with `MaxAgeOffset` applied.  If an instance from the minimum
+side of the pool reaches its `MaxAge`, it is also immediately
+replaced.  Replacement is done in a background queue using the
+number of threads specified by `CallbackThreads`.
+
+===== StrictPooling
+
+StrictPooling tells the container what to do when the pool
+reaches it's maximum size and there are incoming requests that
+need instances.
+
+With strict pooling, requests will have to wait for instances to
+become available. The pool size will never grow beyond the the
+set `MaxSize` value.  The maximum amount of time a request should
+wait is specified via the `AccessTimeout` setting.
+
+Without strict pooling, the container will create temporary
+instances to meet demand. The instances will last for just one
+method invocation and then are removed.
+
+Setting `StrictPooling` to `false` and `MaxSize` to `0` will result in
+no pooling. Instead instances will be created on demand and live
+for exactly one method call before being removed.
+
+===== MaxAge
+
+Specifies the maximum time that an instance should live before
+it should be retired and removed from use.  This will happen
+gracefully.  Useful for situations where bean instances are
+designed to hold potentially expensive resources such as memory
+or file handles and need to be periodically cleared out.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+`1 hour and 27 minutes and 10 seconds`
+
+===== ReplaceAged
+
+When `ReplaceAged` is enabled, any instances in the pool that
+expire due to reaching their `MaxAge` will be replaced immediately
+so that the pool will remain at its current size.  Replacement
+is done in a background queue so that incoming threads will not
+have to wait for instance creation.
+
+The aim of his option is to prevent user requests from paying
+the instance creation cost as `MaxAge` is enforced, potentially
+while under heavy load at peak hours.
+
+Instances from the minimum side of the pool are always replaced
+when they reach their `MaxAge`, this setting dictates the
+treatment of non-minimum instances.
+
+===== ReplaceFlushed
+
+When `ReplaceFlushed` is enabled, any instances in the pool that
+are flushed will be replaced immediately so that the pool will
+remain at its current size.  Replacement is done in a background
+queue so that incoming threads will not have to wait for
+instance creation.
+
+The aim of his option is to prevent user requests from paying
+the instance creation cost if a flush performed while under
+heavy load at peak hours.
+
+Instances from the minimum side of the pool are always replaced
+when they are flushed, this setting dictates the treatment of
+non-minimum instances.
+
+A bean may flush its pool by casting the `SessionContext` to
+`Flushable` and calling `flush()`.  See `SweepInterval` for details on
+how flush is performed.
+
+[source,java]
+----
+import javax.annotation.Resource;
+import javax.ejb.SessionContext;
+import javax.ejb.Stateless;
+import java.io.Flushable;
+import java.io.IOException;
+
+public class MyBean {
+
+    private SessionContext sessionContext;
+
+    public void flush() throws IOException {
+
+        ((Flushable) sessionContext).flush();
+    }
+}
+----
+
+===== MaxAgeOffset
+
+Applies to MaxAge usage and would rarely be changed, but is a
+nice feature to understand.
+
+When the container first starts and the pool is filled to the
+minimum size, all those "minimum" instances will have the same
+creation time and therefore all expire at the same time dictated
+by the `MaxAge` setting.  To protect against this sudden drop
+scenario and provide a more gradual expiration from the start
+the container will spread out the age of the instances that fill
+the pool to the minimum using an offset.
+
+The `MaxAgeOffset` is not the final value of the offset, but
+rather it is used in creating the offset and allows the
+spreading to push the initial ages into the future or into the
+past.  The pool is filled at startup as follows:
+
+[source,java]
+----
+for (int i = 0; i < poolMin; i++) {
+    long ageOffset = (maxAge / poolMin * i * maxAgeOffset) % maxAge;
+    pool.add(new Bean(), ageOffset));
+}
+----
+
+The default `MaxAgeOffset` is -1 which causes the initial
+instances in the pool to live a bit longer before expiring.  As
+a concrete example, let's say the MinSize is 4 and the MaxAge is
+100 years.  The generated offsets for the four instances created
+at startup would be 0, -25, -50, -75.  So the first instance
+would be "born" at age 0, die at 100, living 100 years.  The
+second instance would be born at -25, die at 100, living a total
+of 125 years.  The third would live 150 years.  The fourth 175
+years.
+
+A `MaxAgeOffset` of 1 would cause instances to be "born" older
+and therefore die sooner.  Using the same example `MinSize` of 4
+and `MaxAge` of `100 years`, the life spans of these initial four
+instances would be 100, 75, 50, and 25 years respectively.
+
+A `MaxAgeOffset` of 0 will cause no "spreading" of the age of the
+first instances used to fill the pool to the minimum and these
+instances will of course reach their MaxAge at the same time.
+It is possible to set to decimal values such as -0.5, 0.5, -1.2,
+or 1.2.
+
+===== IdleTimeout
+
+Specifies the maximum time that an instance should be allowed to
+sit idly in the pool without use before it should be retired and
+removed.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+"1 hour and 27 minutes and 10 seconds"
+
+===== GarbageCollection
+
+Allows Garbage Collection to be used as a mechanism for shrinking
+the pool.  When set to true all instances in the pool, excluding
+the minimum, are eligible for garbage collection by the virtual
+machine as per the rules of `java.lang.ref.SoftReference` and can be
+claimed by the JVM to free memory.  Instances garbage collected
+will have their `@PreDestroy` methods called during finalization.
+
+In the OpenJDK VM the `-XX:SoftRefLRUPolicyMSPerMB` flag can adjust
+how aggressively SoftReferences are collected.  The default
+OpenJDK setting is 1000, resulting in inactive pooled instances
+living one second of lifetime per free megabyte in the heap, which
+is very aggressive.  The setting should be increased to get the
+most out of the `GarbageCollection` feature of the pool.  Much
+higher settings are safe.  Even a setting as high as 3600000 (1
+hour per free MB in the heap) does not affect the ability for the
+VM to garbage collect SoftReferences in the event that memory is
+needed to avoid an `OutOfMemoryException`.
+
+===== SweepInterval
+
+The frequency in which the container will sweep the pool and
+evict expired instances.  Eviction is how the `IdleTimeout`,
+`MaxAge`, and pool "flush" functionality is enforced.  Higher
+intervals are better.
+
+Instances in use are excluded from sweeping.  Should an instance
+expire while in use it will be evicted immediately upon return
+to the pool.  Effectively `MaxAge` and flushes will be enforced as
+a part of normal activity or sweeping, while IdleTimeout is only
+enforcable via sweeping.  This makes aggressive sweeping less
+important for a pool under moderate load.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+`1 hour and 27 minutes and 10 seconds`
+
+===== CallbackThreads
+
+When sweeping the pool for expired instances a thread pool is
+used to process calling `@PreDestroy` on expired instances as well
+as creating new instances as might be required to fill the pool
+to the minimum after a Flush or `MaxAge` expiration.  The
+`CallbackThreads` setting dictates the size of the thread pool and
+is shared by all beans deployed in the container.
+
+===== CloseTimeout
+
+PostConstruct methods are invoked on all instances in the pool
+when the bean is undeployed and its pool is closed.  The
+`CloseTimeout` specifies the maximum time to wait for the pool to
+close and `PostConstruct` methods to be invoked.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+`1 hour and 27 minutes and 10 seconds`
+
+===== UseOneSchedulerThreadByBean
+
+back to previous behavior (TomEE 1.x) where 1 scheduler thread was used for stateless eviction
+by bean (ie for 500 stateless beans you get 500 eviction threads)
+
+===== EvictionThreads
+
+number of threads to associate to eviction threads (1 is not bad for most applications)
+
+
+=== @Stateful
+
+A `@Stateful` container.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Container id="Foo" type="STATEFUL">
+    AccessTimeout = 30 seconds
+    Cache = org.apache.openejb.core.stateful.SimpleCache
+    Passivator = org.apache.openejb.core.stateful.SimplePassivater
+    TimeOut = 20
+    Frequency = 60
+    Capacity = 1000
+    BulkPassivate = 100
+</Container>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Container?type=STATEFUL
+Foo.AccessTimeout = 30 seconds
+Foo.Cache = org.apache.openejb.core.stateful.SimpleCache
+Foo.Passivator = org.apache.openejb.core.stateful.SimplePassivater
+Foo.TimeOut = 20
+Foo.Frequency = 60
+Foo.Capacity = 1000
+Foo.BulkPassivate = 100
+----
+
+==== Configuration
+
+===== AccessTimeout
+
+Specifies the maximum time an invocation could wait for the
+`@Stateful` bean instance to become available before giving up.
+
+After the timeout is reached a `javax.ejb.ConcurrentAccessTimeoutException`
+will be thrown.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+"1 hour and 27 minutes and 10 seconds"
+
+Any usage of the `javax.ejb.AccessTimeout` annotation will
+override this setting for the bean or method where the
+annotation is used.
+
+===== Cache
+
+The cache is responsible for managing stateful bean
+instances.  The cache can page instances to disk as memory
+is filled and can destroy abandoned instances.  A different
+cache implementation can be used by setting this property
+to the fully qualified class name of the Cache implementation.
+
+===== Passivator
+
+The passivator is responsible for writing beans to disk
+at passivation time. Different passivators can be used
+by setting this property to the fully qualified class name
+of the `PassivationStrategy` implementation. The passivator
+is not responsible for invoking any callbacks or other
+processing, its only responsibly is to write the bean state
+to disk.
+
+Known implementations:
+
+- org.apache.openejb.core.stateful.RAFPassivater
+- org.apache.openejb.core.stateful.SimplePassivater
+
+===== TimeOut
+
+Specifies the time a bean can be idle before it is removed by the container.
+
+This value is measured in minutes. A value of 5 would
+result in a time-out of 5 minutes between invocations.
+A value of -1 would mean no timeout.
+A value of 0 would mean a bean can be immediately removed by the container.
+
+Any usage of the `javax.ejb.StatefulTimeout` annotation will
+override this setting for the bean where the annotation is used.
+
+===== Frequency
+
+Specifies the frequency (in seconds) at which the bean cache is checked for
+idle beans.
+
+===== Capacity
+
+Specifies the size of the bean pools for this
+stateful SessionBean container.
+
+===== BulkPassivate
+
+Property name that specifies the number of instances
+to passivate at one time when doing bulk passivation.
+
+
+=== @Singleton
+
+A `@Singleton` container.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Container id="Foo" type="SINGLETON">
+    AccessTimeout = 30 seconds
+</Container>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Container?type=SINGLETON
+Foo.AccessTimeout = 30 seconds
+----
+
+==== Configuration
+
+===== AccessTimeout
+
+Specifies the maximum time an invocation could wait for the
+`@Singleton` bean instance to become available before giving up.
+
+After the timeout is reached a `javax.ejb.ConcurrentAccessTimeoutException`
+will be thrown.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+`1 hour and 27 minutes and 10 seconds`
+
+Any usage of the `javax.ejb.AccessTimeout` annotation will
+override this setting for the bean or method where the
+annotation is used.
+
+
+=== @MessageDriven
+
+A MDB container.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Container id="Foo" type="MESSAGE">
+    ResourceAdapter = Default JMS Resource Adapter
+    MessageListenerInterface = javax.jms.MessageListener
+    ActivationSpecClass = org.apache.activemq.ra.ActiveMQActivationSpec
+    InstanceLimit = 10
+    FailOnUnknowActivationSpec = true
+</Container>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Container?type=MESSAGE
+Foo.ResourceAdapter = Default JMS Resource Adapter
+Foo.MessageListenerInterface = javax.jms.MessageListener
+Foo.ActivationSpecClass = org.apache.activemq.ra.ActiveMQActivationSpec
+Foo.InstanceLimit = 10
+Foo.FailOnUnknowActivationSpec = true
+----
+
+==== Configuration
+
+===== ResourceAdapter
+
+The resource adapter delivers messages to the container
+
+===== MessageListenerInterface
+
+Specifies the message listener interface handled by this container
+
+===== ActivationSpecClass
+
+Specifies the activation spec class
+
+===== InstanceLimit
+
+Specifies the maximum number of bean instances that are
+allowed to exist for each MDB deployment.
+
+===== FailOnUnknowActivationSpec
+
+Log a warning if true or throw an exception if false is an activation spec can't be respected
+
+
+=== @Managed
+
+A managed bean container.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Container id="Foo" type="MANAGED" />
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Container?type=MANAGED
+----
+
+
+=== CMP entity
+
+A CMP bean container.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Container id="Foo" type="CMP_ENTITY">
+    CmpEngineFactory = org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory
+</Container>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Container?type=CMP_ENTITY
+Foo.CmpEngineFactory = org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory
+----
+
+==== Configuration
+
+===== CmpEngineFactory
+
+The engine to use for this container. By default TomEE only provides the JPA implementation.
+
+
+=== BMP entity
+
+A BMP entity container.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Container id="Foo" type="BMP_ENTITY">
+    PoolSize = 10
+</Container>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Container?type=BMP_ENTITY
+Foo.PoolSize = 10
+----
+
+==== Configuration
+
+===== PoolSize
+
+Specifies the size of the bean pools for this
+bmp entity container.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/admin/configuration/index.adoc
----------------------------------------------------------------------
diff --git a/docs/admin/configuration/index.adoc b/docs/admin/configuration/index.adoc
new file mode 100755
index 0000000..115d1ba
--- /dev/null
+++ b/docs/admin/configuration/index.adoc
@@ -0,0 +1,24 @@
+= Server Configuration
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+=== Container
+
+TomEE specific configuration (ie not inherited one from Tomcat) is based on properties. Therefore
+you can fully configure TomEE using properties in `conf/system.properties`.
+However for convenience it also provides a hybrid XML alternative a.k.a. `conf/tomee.xml`.
+
+- link:server.html[Server Configuration: Properties].
+- link:resources.html[Resources]
+- link:containers.html[Containers]
+
+=== Application
+
+Some settings can be specific to applications, these ones are also properties based and
+are read in `WEB-INF/application.properties`. When you can't use `tomee.xml` to configure
+resources you can use `WEB-INF/resources.xml` which inherit from `tomee.xml` its syntax
+but binds the resources to the application and reuses the application classloader.
+
+More about link:application.html[Container Configuration].

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/admin/configuration/resources.adoc
----------------------------------------------------------------------
diff --git a/docs/admin/configuration/resources.adoc b/docs/admin/configuration/resources.adoc
new file mode 100755
index 0000000..dc8d84a
--- /dev/null
+++ b/docs/admin/configuration/resources.adoc
@@ -0,0 +1,572 @@
+= Resources
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+In TomEE resources are mainly "singleton" (understood as defined once per server or application). Technically
+it can be anything but you will probably meet more Datasources than other type of resources.
+
+
+Most resources will be created automatically if there is no matching resources - by name and type -
+when an injection will be found. To avoid that use `openejb.offline` property and set it to `true`.
+See link:server.html[Server Configuration] for more detail.
+
+=== Definition a resource: how does it work?
+
+Before all let see how properties syntax is equivalent to XML one (system.properties and tomee.xml typically).
+
+Properties syntax uses dot notation to represent setters/properties which are plain properties in XML syntax
+and a URL syntax with query parameters to define the resource where it is directly the resource and tag attributes in XML.
+Finally the id is an attribute in XML and the key of the resource definition in properties.
+
+Let see it with a sample, both delcarations are the same:
+
+[source,bash]
+----
+myDataSource = new://Resource?type=DataSource
+myDataSource.JdbcUrl = jdbc:hsqldb:mem:site
+myDataSource.UserName = sa
+----
+
+[source,xml]
+----
+<Resource id="myDataSource" type="DataSource">
+  JdbcUrl = jdbc:hsqldb:mem:site
+  UserName = sa
+</Resource>
+----
+
+One started you can get injected any resource using `@Resource`:
+
+[source,java]
+----
+@Resource(name = "myDataSource")
+private DataSource dataSource;
+----
+
+=== Factory syntax
+
+Here are the attributes of a resource:
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Optional |Description
+| id | false | name of the resource, will match `openejb:Resource/id` in JNDI tree.
+| provider | true | define a default resource definition using service-jar.xml
+| class-name | true |specify which class to instantiate
+| factory-name | true |specify which method to invoke on the class-name when specified to create the resource
+| properties-provider | true |a class responsible to provide to tomee the properties to use, it can have a property `serviceId` to know which resource it is.
+| classpath | true | a classpath to use to create the resource. Note: if not implementing an interface the resource will be isolated from the applications.
+| aliases | true | other names for the resource, allows for instance to share the same pool for a datasource used with multiple names in applications.
+| post-construct/pre-destroy | true | methods called when creating/destroying the resources.
+| Lazy | true | for resources set them to be created when first accessed and not when deployed
+|===
+
+TomEE supports some implicit properties for resources but sometimes you just want to fully control the
+resource and not use implicit properties which can be affected to a property which doesn't expect such a value (typically the case
+if you create a custom Oracle datasource). For such case you can set `SkipImplicitAttributes` property to `true` and your resource
+will ignore implicit properties.
+
+Implicit properties are:
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Description
+| transactionManager | The JTA transaction manager
+| ServiceId | the "id" of the resource (its name)
+|===
+
+In the same spirit you can skip properties fallback using `SkipPropertiesFallback` and setting it to `true`. It typically avoids to
+fallback all unset properties (no matching property found) to a `Properties` instance and set it if one matching property is found.
+In Oracle case for instance it matches the connection properties which can have side effects.
+
+===== Value ciphering
+
+The propertie values support ciphering using the syntax `cipher:{algorithm}:{cipheredValue}`, for instance `cipher:Static3DES:xMH5uM1V9vQzVUv5LG7YLA==` will
+be read as `Passw0rd`. Ciphers can be computed using `tomee.sh` script: `${tomee.home}/bin/tomee.sh cipher Passw0rd`.
+
+=== Common Resources
+
+==== DataSources
+
+DataSources have defaults for all values and a default datasource can be provided automatically but if you want to
+configure it here are the common properties:
+
+You can set the boolean `JtaManaged` to false if you don't want your datasource to be using JTA - if you manage transactions yourself.
+
+Then other configurations are linked the pool the datasource is using. By default TomEE uses https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html[tomcat-jdbc] but we also provide
+https://commons.apache.org/proper/commons-dbcp/configuration.html[commons-dbcp] (2 for TomEE 7.x and 1 for TomEE 1.x).
+The properties are then the related configurations with these particular
+entries we try to keep in sync for both:
+
+[.table.table-bordered,options="header"]
+|===
+| Name|Description
+| JdbcDriver | the jdbc driver of the datasource
+| JdbcUrl | the jdbc url of the datasource
+| Username | the user to use
+| Password | the password of the user
+|===
+
+===== Password and ciphering
+
+DataSource were the first resource to support password ciphering. Originally it was another property which is still supported.
+It is called `PasswordCipher`. Its value is the ciphering algorithm and it affects the password value. However `cipher:xxx`
+is still supported on `Password` value. Default `PasswordCipher` being `PlainText` it behaves as no ciphering is in place by default.
+
+Sample:
+
+[source,bash]
+----
+ds = new://Resource?type=javax.sql.DataSource
+# our password is "Passw0rd"
+ds.Password = xMH5uM1V9vQzVUv5LG7YLA==
+ds.PasswordCipher = Static3DES
+----
+
+===== Advanced DataSource configuration
+
+TomEE also provides few utilities you can add in DataSource properties:
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Description
+| LogSql | Should SQL be logged (using TomEE logger)
+| LogSqlPackages | if set the logging will show the matching packages (separated by comma) inline when logging the query, allows to know where a query comes from
+| Flushable| if true the datasource can be casted as a Flushable to recreate the pool
+| ResetOnError | if a `SQLException` happens the pool is automatically recreated. Configuration is either "true" to do it each time an exception occurs, `x` or `retry(x)` to do it and retry until maximum `x` times
+| ResetOnErrorMethods | which methods are handled by ResetOnError
+| TomEEProxyHandler | Custom `InvocationHandler` wrapping the datasource calls
+| DataSourceCreator | which pool to use, `dbcp`, `tomcat`, `dbcp-alternative` (DBCP and TomEE proxying instead of DBCP JTA integration), `simple` (no pooling)
+|===
+
+===== DataSource and JTA
+
+`JtaManaged` determines wether or not this data source should be JTA managed
+or user managed.  If set to 'true' it will automatically be enrolled
+in any ongoing transactions.  Calling begin/commit/rollback or setAutoCommit
+on the datasource or connection will not be allowed.  If you need to perform
+these functions yourself, set `JtaManaged` to `false`
+
+===== DataSource and JPA
+
+In terms of JPA persistence.xml:
+
+- `JtaManaged=true` can be used as a 'jta-data-source'
+- `JtaManaged=false` can be used as a 'non-jta-data-source'
+
+=== ActiveMQResourceAdapter
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="ActiveMQResourceAdapter">
+    BrokerXmlConfig = broker:(tcp://localhost:61616)?useJmx=false
+    ServerUrl = vm://localhost?waitForStart=20000&async=true
+    DataSource = Default Unmanaged JDBC Database
+    StartupTimeout = 10 seconds
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=ActiveMQResourceAdapter
+Foo.BrokerXmlConfig = broker:(tcp://localhost:61616)?useJmx=false
+Foo.ServerUrl = vm://localhost?waitForStart=20000&async=true
+Foo.DataSource = Default Unmanaged JDBC Database
+Foo.StartupTimeout = 10 seconds
+----
+
+==== Configuration
+
+===== BrokerXmlConfig
+
+Broker configuration URI as defined by ActiveMQ
+see http://activemq.apache.org/broker-configuration-uri.html
+BrokerXmlConfig xbean:file:conf/activemq.xml - Requires xbean-spring.jar and dependencies
+
+===== ServerUrl
+
+Broker address
+
+===== DataSource
+
+DataSource for persistence messages
+
+===== StartupTimeout
+
+How long to wait for broker startup
+
+
+=== javax.jms.ConnectionFactory
+
+An ActiveMQ (JMS) connection factory.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="javax.jms.ConnectionFactory">
+    ResourceAdapter = Default JMS Resource Adapter
+    TransactionSupport = xa
+    PoolMaxSize = 10
+    PoolMinSize = 0
+    ConnectionMaxWaitTime = 5 seconds
+    ConnectionMaxIdleTime = 15 Minutes
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=javax.jms.ConnectionFactory
+Foo.ResourceAdapter = Default JMS Resource Adapter
+Foo.TransactionSupport = xa
+Foo.PoolMaxSize = 10
+Foo.PoolMinSize = 0
+Foo.ConnectionMaxWaitTime = 5 seconds
+Foo.ConnectionMaxIdleTime = 15 Minutes
+----
+
+==== Configuration
+
+===== ResourceAdapter
+
+An ActiveMQ (JMS) resource adapter.
+
+===== TransactionSupport
+
+Specifies if the connection is enrolled in global transaction
+allowed values: `xa`, `local` or `none`. Default to `xa`.
+
+===== PoolMaxSize
+
+Maximum number of physical connection to the ActiveMQ broker.
+
+===== PoolMinSize
+
+Minimum number of physical connection to the ActiveMQ broker.
+
+===== ConnectionMaxWaitTime
+
+Maximum amount of time to wait for a connection.
+
+===== ConnectionMaxIdleTime
+
+Maximum amount of time a connection can be idle before being reclaimed.
+
+
+=== javax.jms.Queue
+
+An ActiveMQ (JMS) queue.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="javax.jms.Queue">
+    # not set means id
+    destination =
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=javax.jms.Queue
+# not set means id
+Foo.destination =
+----
+
+==== Configuration
+
+===== destination
+
+Specifies the name of the queue
+
+
+=== javax.jms.Topic
+
+An ActiveMQ (JMS) topic.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="javax.jms.Topic">
+    # not set means id
+    destination =
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=javax.jms.Topic
+# not set means id
+Foo.destination =
+----
+
+==== Configuration
+
+===== destination
+
+Specifies the name of the topic
+
+
+=== org.omg.CORBA.ORB
+
+NOTE: to use it you need to add an implementation of corba.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="org.omg.CORBA.ORB" />
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=org.omg.CORBA.ORB
+----
+
+
+=== javax.mail.Session
+
+A mail session.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="mail/mysession" type="javax.mail.Session">
+  mail.transport.protocol = smtp
+  mail.smtp.host = smtp.provider.com
+  mail.smtp.auth = true
+  mail.smtp.starttls.enable = true
+  mail.smtp.port = 587
+  mail.smtp.user = user@provider.com
+  password = abcdefghij
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+mail/mysession = new://Resource?type=javax.mail.Session
+mail/mysession.mail.transport.protocol = smtp
+mail/mysession.mail.smtp.host = smtp.provider.com
+mail/mysession.mail.smtp.auth = true
+mail/mysession.mail.smtp.starttls.enable = true
+mail/mysession.mail.smtp.port = 587
+mail/mysession.mail.smtp.user = user@provider.com
+mail/mysession.password = abcdefghij
+----
+
+The properties are `javax.mail.Session` ones with the addition of `useDefault` which specifies if `getDefaultInstance()`
+or `getInstance` is used to create the session. `getDefaultInstance()` will ensure that several calls are done with the
+same configuration and return the same instance. For tomee it is likely better to rely on `getInstance()`(ie keep `useDefault` to false)
+and use `aliases` option of the resource to define an alias if you need to share the same instance accross multiple names.
+
+
+=== ManagedExecutorService
+
+A concurrency utility for EE executor service.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="ManagedExecutorService">
+    Core = 5
+    Max = 25
+    KeepAlive = 5 s
+    Queue = 15
+    ThreadFactory = org.apache.openejb.threads.impl.ManagedThreadFactoryImpl
+    Lazy = true
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=ManagedExecutorService
+Foo.Core = 5
+Foo.Max = 25
+Foo.KeepAlive = 5 s
+Foo.Queue = 15
+Foo.ThreadFactory = org.apache.openejb.threads.impl.ManagedThreadFactoryImpl
+Foo.Lazy = true
+----
+
+==== Configuration
+
+===== Core
+
+The pool core size.
+
+===== Max
+
+The pool max size.
+
+===== KeepAlive
+
+The thread keep alive time (in duration format)
+
+===== Queue
+
+The queue type size.
+
+===== ThreadFactory
+
+The thread factory implementation class.
+
+===== Lazy
+
+If set to true the pool is created when first accessed otherwise it is created at startup.
+
+
+=== ManagedScheduledExecutorService
+
+Inherit from `ManagedExecutorService` and adds scheduling abilities.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="ManagedScheduledExecutorService">
+    Core = 5
+    ThreadFactory = org.apache.openejb.threads.impl.ManagedThreadFactoryImpl
+    Lazy = true
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=ManagedScheduledExecutorService
+Foo.Core = 5
+Foo.ThreadFactory = org.apache.openejb.threads.impl.ManagedThreadFactoryImpl
+Foo.Lazy = true
+----
+
+==== Configuration
+
+See `ManagedExecutorService`.
+
+
+=== ManagedThreadFactory
+
+A thread factory for a `ManagedExecutorService`.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="ManagedThreadFactory">
+    Prefix = openejb-managed-thread-
+    Lazy = true
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=ManagedThreadFactory
+Foo.Prefix = openejb-managed-thread-
+Foo.Lazy = true
+----
+
+==== Configuration
+
+===== Prefix
+
+The thread prefix (suffixed with thread id).
+
+
+
+=== ContextService
+
+A concurrency utilities for JavaEE context service. It allows to create
+contextual proxies (inheriting from security, classloader...contexts).
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="ContextService" />
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=ContextService
+----
+
+
+=== JndiProvider: inject remote clients
+
+A thread factory for a `ManagedExecutorService`.
+Default implementation is `org.apache.openejb.threads.impl.ManagedThreadFactoryImpl`.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="ManagedThreadFactory">
+    Prefix = openejb-managed-thread-
+    Lazy = true
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=ManagedThreadFactory
+Foo.Prefix = openejb-managed-thread-
+Foo.Lazy = true
+----
+
+==== Configuration
+
+===== Prefix
+
+The thread prefix (suffixed with thread id).
+
+
+
+=== ContextService
+
+A concurrency utilities for JavaEE context service. It allows to create
+contextual proxies (inheriting from security, classloader...contexts).
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="ContextService" />
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=ContextService
+----
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/admin/configuration/server.adoc
----------------------------------------------------------------------
diff --git a/docs/admin/configuration/server.adoc b/docs/admin/configuration/server.adoc
new file mode 100755
index 0000000..db2ff19
--- /dev/null
+++ b/docs/admin/configuration/server.adoc
@@ -0,0 +1,86 @@
+= Container Configuration
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+=== Server
+
+[.table.table-bordered,options="header"]
+|===
+|Name	|Value|	Description
+|openejb.embedded.remotable|	bool|	activate or not the remote services when available
+|.bind, <service prefix>.port, <service prefix>.disabled, <service prefix>.threads	| host or IP, port, bool|override the host. Available for ejbd and httpejbd services (used by jaxws and jaxrs), number of thread to manage requests
+|openejb.embedded.initialcontext.close	|LOGOUT or DESTROY|	configure the hook called when closing the initial context. Useful when starting OpenEJB from a new InitialContext([properties]) instantiation. By default it simply logs out the logged user if it exists. DESTROY means clean the container.
+|javax.persistence.provider	|string|	override the JPA provider value
+|javax.persistence.transactionType	|string|	override the transaction type for persistence contexts
+|javax.persistence.jtaDataSource	|string|	override the JTA datasource value for persistence contexts
+|javax.persistence.nonJtaDataSource|	string	|override the non JTA datasource value for persistence contexts
+|openejb.descriptors.output	|bool|	dump memory deployment descriptors. Can be used to set complete metadata to true and avoid scanning when starting the container or to check the used configuration.
+|openejb.deployments.classpath.require.descriptor	|CLIENT or EJB|	can allow to filter what you want to scan (client modules or ejb modules)
+|openejb.descriptors.output.folder|	path|	where to dump deployement descriptors if activated.
+|openejb.strict.interface.declaration	|bool|	add some validations on session beans (spec validations in particular). false by default.
+|openejb.conf.file or openejb.configuration|	string|	OpenEJB configuration file path
+|openejb.debuggable-vm-hackery	|bool|	remove JMS informations from deployment
+|openejb.validation.skip	|bool	|skip the validations done when OpenEJB deploys beans
+|openejb.deployments.classpath.ear	|bool|	deploy the classpath as an ear
+|openejb.webservices.enabled|	bool	|activate or not webservices
+|openejb.validation.output.level|	TERSE or MEDIUM or VERBOSE|	level of the logs used to report validation errors
+|openejb.user.mbeans.list	* or a list of classes separated by ,|	list of mbeans to deploy automatically
+|openejb.deploymentId.format	composition (+string) of {ejbName} {ejbType} {ejbClass} and {ejbClass.simpleName}	default {ejbName}. The format to use to deploy ejbs.
+|openejb.deployments.classpath	|bool|	whether or not deploy from classpath
+|openejb.deployments.classpath.include and openejb.deployments.classpath.exclude	|regex|	regex to filter the scanned classpath (when you are in this case)
+|openejb.deployments.package.include and openejb.deployments.package.exclude|	regex|	regex to filter scanned packages
+|openejb.autocreate.jta-datasource-from-non-jta-one|	bool|	whether or not auto create the jta datasource if it doesn't exist but a non jta datasource exists. Useful when using hibernate to be able to get a real non jta datasource.
+|openejb.altdd.prefix	|string|	prefix use for altDD (example test to use a test.ejb-jar.xml).
+|org.apache.openejb.default.system.interceptors	|class names|list of interceptor (qualified names) separated by a comma or a space	add these interceptor on all beans
+|openejb.jndiname.strategy.class	|class name|	an implementation of org.apache.openejb.assembler.classic.JndiBuilder.JndiNameStrategy
+|openejb.jndiname.failoncollision|	bool|	if a NameAlreadyBoundException is thrown or not when 2 EJBs have the same name
+|openejb.jndiname.format |string|composition of these properties: ejbType, ejbClass, ejbClass.simpleName, ejbClass.packageName, ejbName, deploymentId, interfaceType, interfaceType.annotationName, interfaceType.annotationNameLC, interfaceType.xmlName, interfaceType.xmlNameCc, interfaceType.openejbLegacyName, interfaceClass, interfaceClass.simpleName, interfaceClass.packageName	default {deploymentId}{interfaceType.annotationName}. Change the name used for the ejb.
+|openejb.org.quartz.threadPool.class	|class| qualified name which implements org.quartz.spi.ThreadPool	the thread pool used by quartz (used to manage ejb timers)
+|openejb.localcopy	|bool|	default true. whether or not copy EJB arguments[/method/interface] for remote invocations.
+|openejb.cxf.jax-rs.providers	|string|the list of the qualified name of the JAX-RS providers separated by comma or space. Note: to specify a provider for a specific service suffix its class qualified name by ".providers", the value follow the same rules. Note 2: default is a shortcut for jaxb and json providers.
+|openejb.wsAddress.format	|string| composition of {ejbJarId}, ejbDeploymentId, ejbType, ejbClass, ejbClass.simpleName, ejbName, portComponentName, wsdlPort, wsdlService	default /{ejbDeploymentId}. The WS name format.
+|org.apache.openejb.server.webservices.saaj.provider|	axis2, sun or null	|specified the saaj configuration
+|[<uppercase service name>.]<service id>.<name> or [<uppercase service name>.]<service id>	|whatever is supported (generally string, int ...)|	set this value to the corresponding service. example: [EnterpriseBean.]<ejb-name>.activation.<property>, [PERSISTENCEUNIT.]<persistence unit name>.<property>, [RESOURCE.]<name>
+|log4j.category.OpenEJB.options|	DEBUG, INFO, ...	|active one OpenEJB log level. need log4j in the classpath
+|openejb.jmx.active|	bool|	activate (by default) or not the OpenEJB JMX MBeans
+|openejb.nobanner	|bool|	activate or not the OpenEJB banner (activated by default)
+|openejb.check.classloader	|bool|	if true print some information about duplicated classes
+|openejb.check.classloader.verbose|	bool|	if true print classes intersections
+|openejb.additional.exclude	|string separated by comma|	list of prefixes you want to exclude and are not in the default list of exclusion
+|openejb.additional.include	|string separated by comma|	list of prefixes you want to remove from thedefault list of exclusion
+|openejb.offline	|bool|	if true can create datasources and containers automatically
+|openejb.exclude-include.order|	include-exclude or exclude-include|	if the inclusion/exclusion should win on conflicts (intersection)
+|openejb.log.color	|bool|	activate or not the color in the console in embedded mode
+|openejb.log.color.<level in lowercase>	|color in uppercase	|set a color for a particular level. Color are BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, DEFAULT.
+|tomee.serialization.class.blacklist|	string	|default list of packages/classnames excluded for EJBd deserialization (needs to be set on server and client sides). Please see the description of Ejbd Transport for details.
+|tomee.serialization.class.whitelist|	string|	default list of packages/classnames allowed for EJBd deserialization (blacklist wins over whitelist, needs to be set on server and client sides). Please see the description of Ejbd Transport for details.
+|tomee.remote.support	|boolean	|if true /tomee webapp is auto-deployed and EJBd is active (true by default for 1.x, false for 7.x excepted for tomee maven plugin and arquillian)
+|openejb.crosscontext	|bool|	set the cross context property on tomcat context (can be done in the traditionnal way if the deployment is don through the webapp discovery and not the OpenEJB Deployer EJB)
+|openejb.jsessionid-support	|bool|	remove URL from session tracking modes for this context (see javax.servlet.SessionTrackingMode)
+|openejb.myfaces.disable-default-values	|bool|	by default TomEE will initialize myfaces with some its default values to avoid useless logging
+|openejb.web.xml.major	|int|	major version of web.xml. Can be useful to force tomcat to scan servlet 3 annotatino when deploying with a servlet 2.x web.xml
+|tomee.jaxws.subcontext	|string|	sub context used to bind jaxws web services, default is webservices
+|openejb.servicemanager.enabled	|bool|	run all services detected or only known available services (WS and RS
+|tomee.jaxws.oldsubcontext	|bool|	wether or not activate old way to bind jaxws webservices directly on root context
+|openejb.modulename.useHash	|bool|	add a hash after the module name of the webmodule if it is generated from the webmodule location, it avoids conflicts between multiple deployment (through ear) of the same webapp. Note: it disactivated by default since names are less nice this way.
+|openejb.session.manager	|qualified name (string)|	configure a session managaer to use for all contexts
+|tomee.tomcat.resource.wrap	|bool|wrap tomcat resources (context.xml) as tomee resources if possible (true by default)
+|tomee.tomcat.datasource.wrap	|bool|same as tomee.tomcat.resource.wrap for datasource (false by default). Note that setting it to true will create tomee datasources but can have the side effect to create twice singleton resources
+|openejb.environment.default	|bool|should default JMS resources be created or not, default to false to ensure no port is bound or multiple resources are created and completely uncontrolled (doesn't apply to datasources etc for compatibility). For tests only!
+|===
+
+=== Client
+
+[.table.table-bordered,options="header"]
+|===
+|Name|	Value	|Description
+|openejb.client.identityResolver	|implementation of org.apache.openejb.client.IdentityResolver|	default org.apache.openejb.client.JaasIdentityResolver. The class to get the client identity.
+|openejb.client.connection.pool.timeout or openejb.client.connectionpool.timeout	|int (ms)|	the timeout of the client
+|openejb.client.connection.pool.size or openejb.client.connectionpool.size	|int|	size of the socket pool
+|openejb.client.keepalive	|int (ms)|	the keepalive duration
+|openejb.client.protocol.version	|string|	Optional legacy server protocol compatibility level. Allows 4.6.x clients to potentially communicate with older servers. OpenEJB 4.5.2 and older use version "3.1", and 4.6.x currently uses version "4.6" (Default). This does not allow old clients to communicate with new servers prior to 4.6.0
+|tomee.serialization.class.blacklist|	string	|default list of packages/classnames excluded for EJBd deserialization (needs to be set on server and client sides). Please see the description of Ejbd Transport for details.
+|tomee.serialization.class.whitelist|	string|	default list of packages/classnames allowed for EJBd deserialization (blacklist wins over whitelist, needs to be set on server and client sides). Please see the description of Ejbd Transport for details.
+|===


[10/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/maven/debug-mojo.mdtext
----------------------------------------------------------------------
diff --git a/docs/maven/debug-mojo.mdtext b/docs/maven/debug-mojo.mdtext
new file mode 100644
index 0000000..68f6e65
--- /dev/null
+++ b/docs/maven/debug-mojo.mdtext
@@ -0,0 +1,1391 @@
+<div class="section">
+<h2>tomee:debug<a name="tomee:debug"></a></h2>
+      
+<p><b>Full name</b>:</p>
+      
+<p>org.apache.openejb.maven:tomee-maven-plugin[:Current Version]:debug</p>
+      
+<p><b>Description</b>:</p>
+      
+<div>As run but with debug activated.</div>
+      
+<p><b>Attributes</b>:</p>
+      
+<ul>
+        
+<li>Requires a Maven project to be executed.</li>
+        
+<li>Requires dependency resolution of artifacts in scope: <tt>runtime+system</tt>.</li>
+        
+<li>Requires dependency collection of artifacts in scope: <tt>runtime</tt>.</li>
+      </ul>
+      
+<div class="section">
+<h3>Optional Parameters<a name="Optional_Parameters"></a></h3>
+        
+<table class="bodyTable" border="0">
+          
+<tr class="a">
+            
+<th>Name</th>
+            
+<th>Type</th>
+            
+<th>Since</th>
+            
+<th>Description</th>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#apacheRepos">apacheRepos</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>snapshots</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.apache-repos</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#appDir">appDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>apps</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#apps">apps</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#args">args</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.args</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#bin">bin</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/bin</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.bin</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#catalinaBase">catalinaBase</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/apache-tomee</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.catalina-base</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#checkStarted">checkStarted</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.check-started</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#classpaths">classpaths</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#config">config</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/conf</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.conf</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#context">context</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>rename the current artifact<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#debug">debug</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.debug</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#debugPort">debugPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>5005</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.debugPort</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#deployOpenEjbApplication">deployOpenEjbApplication</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.deploy-openejb-internal-application</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#docBases">docBases</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>for TomEE and wars only, which docBase to use for this war.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#ejbRemote">ejbRemote</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.ejb-remote</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#externalRepositories">externalRepositories</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>for TomEE and wars only, add some external repositories to
+classloader.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#forceReloadable">forceReloadable</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>force webapp to be reloadable<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.force-reloadable</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#javaagents">javaagents</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#keepServerXmlAsthis">keepServerXmlAsthis</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.keep-server-xml</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#lib">lib</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/lib</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.lib</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#libDir">libDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>lib</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#libs">libs</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>supported formats: --&gt; groupId:artifactId:version... --&gt;
+unzip:groupId:artifactId:version... --&gt; remove:prefix (often
+prefix = artifactId)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#mainDir">mainDir</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#password">password</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.pwd</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#quickSession">quickSession</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>use a real random instead of secure random. saves few ms at
+startup.<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.quick-session</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#realm">realm</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.realm</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#reloadOnUpdate">reloadOnUpdate</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.reload-on-update</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#removeDefaultWebapps">removeDefaultWebapps</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.remove-default-webapps</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#removeTomeeWebapp">removeTomeeWebapp</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.remove-tomee-webapps</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#simpleLog">simpleLog</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.simple-log</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#skipCurrentProject">skipCurrentProject</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.skipCurrentProject</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#skipWarResources">skipWarResources</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>when you set docBases to src/main/webapp setting it to true will
+allow hot refresh.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.skipWarResources</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#synchronization">synchronization</a></b></td>
+            
+<td><tt>Synchronization</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#synchronizations">synchronizations</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#systemVariables">systemVariables</a></b></td>
+            
+<td><tt>Map</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#target">target</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeAjpPort">tomeeAjpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8009</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.ajp</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeAlreadyInstalled">tomeeAlreadyInstalled</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.exiting</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeArtifactId">tomeeArtifactId</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>apache-tomee</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.artifactId</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeClassifier">tomeeClassifier</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>webprofile</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.classifier</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeGroupId">tomeeGroupId</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>org.apache.openejb</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.groupId</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeHost">tomeeHost</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>localhost</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.host</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeHttpPort">tomeeHttpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8080</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.http</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeHttpsPort">tomeeHttpsPort</a></b></td>
+            
+<td><tt>Integer</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.https</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeShutdownCommand">tomeeShutdownCommand</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>SHUTDOWN</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.shutdown-command</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeShutdownPort">tomeeShutdownPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8005</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.shutdown</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeVersion">tomeeVersion</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>-1</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.version</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#useConsole">useConsole</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.use-console</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#useOpenEJB">useOpenEJB</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>use openejb-standalone automatically instead of TomEE<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.openejb</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#user">user</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.user</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#warFile">warFile</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/${project.build.finalName}.${project.packaging}</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webappClasses">webappClasses</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.outputDirectory}</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappClasses</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#webappDefaultConfig">webappDefaultConfig</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>forcing nice default for war development (WEB-INF/classes and web
+resources)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappDefaultConfig</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webappDir">webappDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>webapps</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#webappResources">webappResources</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/webapp</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappResources</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webapps">webapps</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+        </table>
+      </div>
+      
+<div class="section">
+<h3>Parameter Details<a name="Parameter_Details"></a></h3>
+        
+<p><b><a name="apacheRepos">apacheRepos</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.apache-repos</tt></li>
+          
+<li><b>Default</b>: <tt>snapshots</tt></li>
+        </ul><hr />
+<p><b><a name="appDir">appDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>apps</tt></li>
+        </ul><hr />
+<p><b><a name="apps">apps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="args">args</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.args</tt></li>
+        </ul><hr />
+<p><b><a name="bin">bin</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.bin</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/bin</tt></li>
+        </ul><hr />
+<p><b><a name="catalinaBase">catalinaBase</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.catalina-base</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/apache-tomee</tt></li>
+        </ul><hr />
+<p><b><a name="checkStarted">checkStarted</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.check-started</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="classpaths">classpaths</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="config">config</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.conf</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/conf</tt></li>
+        </ul><hr />
+<p><b><a name="context">context</a>:</b></p>
+        
+<div>rename the current artifact</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="debug">debug</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.debug</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="debugPort">debugPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.debugPort</tt></li>
+          
+<li><b>Default</b>: <tt>5005</tt></li>
+        </ul><hr />
+<p><b><a name="deployOpenEjbApplication">deployOpenEjbApplication</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.deploy-openejb-internal-application</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="docBases">docBases</a>:</b></p>
+        
+<div>for TomEE and wars only, which docBase to use for this war.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="ejbRemote">ejbRemote</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.ejb-remote</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="externalRepositories">externalRepositories</a>:</b></p>
+        
+<div>for TomEE and wars only, add some external repositories to
+classloader.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="forceReloadable">forceReloadable</a>:</b></p>
+        
+<div>force webapp to be reloadable</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.force-reloadable</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="javaagents">javaagents</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="keepServerXmlAsthis">keepServerXmlAsthis</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.keep-server-xml</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="lib">lib</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.lib</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/lib</tt></li>
+        </ul><hr />
+<p><b><a name="libDir">libDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>lib</tt></li>
+        </ul><hr />
+<p><b><a name="libs">libs</a>:</b></p>
+        
+<div>supported formats: --&gt; groupId:artifactId:version... --&gt;
+unzip:groupId:artifactId:version... --&gt; remove:prefix (often
+prefix = artifactId)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="mainDir">mainDir</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main</tt></li>
+        </ul><hr />
+<p><b><a name="password">password</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.pwd</tt></li>
+        </ul><hr />
+<p><b><a name="quickSession">quickSession</a>:</b></p>
+        
+<div>use a real random instead of secure random. saves few ms at
+startup.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.quick-session</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="realm">realm</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.realm</tt></li>
+        </ul><hr />
+<p><b><a name="reloadOnUpdate">reloadOnUpdate</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.reload-on-update</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="removeDefaultWebapps">removeDefaultWebapps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.remove-default-webapps</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="removeTomeeWebapp">removeTomeeWebapp</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.remove-tomee-webapps</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="simpleLog">simpleLog</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.simple-log</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="skipCurrentProject">skipCurrentProject</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.skipCurrentProject</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="skipWarResources">skipWarResources</a>:</b></p>
+        
+<div>when you set docBases to src/main/webapp setting it to true will
+allow hot refresh.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.skipWarResources</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="synchronization">synchronization</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>org.apache.openejb.maven.plugin.Synchronization</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="synchronizations">synchronizations</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="systemVariables">systemVariables</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.Map</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="target">target</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeAjpPort">tomeeAjpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.ajp</tt></li>
+          
+<li><b>Default</b>: <tt>8009</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeAlreadyInstalled">tomeeAlreadyInstalled</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.exiting</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeArtifactId">tomeeArtifactId</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.artifactId</tt></li>
+          
+<li><b>Default</b>: <tt>apache-tomee</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeClassifier">tomeeClassifier</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.classifier</tt></li>
+          
+<li><b>Default</b>: <tt>webprofile</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeGroupId">tomeeGroupId</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.groupId</tt></li>
+          
+<li><b>Default</b>: <tt>org.apache.openejb</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHost">tomeeHost</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.host</tt></li>
+          
+<li><b>Default</b>: <tt>localhost</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHttpPort">tomeeHttpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.http</tt></li>
+          
+<li><b>Default</b>: <tt>8080</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHttpsPort">tomeeHttpsPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.Integer</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.https</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeShutdownCommand">tomeeShutdownCommand</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.shutdown-command</tt></li>
+          
+<li><b>Default</b>: <tt>SHUTDOWN</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeShutdownPort">tomeeShutdownPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.shutdown</tt></li>
+          
+<li><b>Default</b>: <tt>8005</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeVersion">tomeeVersion</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.version</tt></li>
+          
+<li><b>Default</b>: <tt>-1</tt></li>
+        </ul><hr />
+<p><b><a name="useConsole">useConsole</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.use-console</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="useOpenEJB">useOpenEJB</a>:</b></p>
+        
+<div>use openejb-standalone automatically instead of TomEE</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.openejb</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="user">user</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.user</tt></li>
+        </ul><hr />
+<p><b><a name="warFile">warFile</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/${project.build.finalName}.${project.packaging}</tt></li>
+        </ul><hr />
+<p><b><a name="webappClasses">webappClasses</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappClasses</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.outputDirectory}</tt></li>
+        </ul><hr />
+<p><b><a name="webappDefaultConfig">webappDefaultConfig</a>:</b></p>
+        
+<div>forcing nice default for war development (WEB-INF/classes and web
+resources)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappDefaultConfig</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="webappDir">webappDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>webapps</tt></li>
+        </ul><hr />
+<p><b><a name="webappResources">webappResources</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappResources</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/webapp</tt></li>
+        </ul><hr />
+<p><b><a name="webapps">webapps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul>
+      </div>
+    </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/maven/deploy-mojo.mdtext
----------------------------------------------------------------------
diff --git a/docs/maven/deploy-mojo.mdtext b/docs/maven/deploy-mojo.mdtext
new file mode 100644
index 0000000..2c5393c
--- /dev/null
+++ b/docs/maven/deploy-mojo.mdtext
@@ -0,0 +1,251 @@
+<div class="section">
+<h2>tomee:deploy<a name="tomee:deploy"></a></h2>
+      
+<p><b>Full name</b>:</p>
+      
+<p>org.apache.openejb.maven:tomee-maven-plugin[:Current Version]:deploy</p>
+      
+<p><b>Description</b>:</p>
+      
+<div>Simply deploy an application in a running TomEE</div>
+      
+<p><b>Attributes</b>:</p>
+      
+<ul>
+        
+<li>Requires a Maven project to be executed.</li>
+        
+<li>Requires dependency resolution of artifacts in scope: <tt>runtime</tt>.</li>
+        
+<li>Requires dependency collection of artifacts in scope: <tt>runtime</tt>.</li>
+      </ul>
+      
+<div class="section">
+<h3>Required Parameters<a name="Required_Parameters"></a></h3>
+        
+<table class="bodyTable" border="0">
+          
+<tr class="a">
+            
+<th>Name</th>
+            
+<th>Type</th>
+            
+<th>Since</th>
+            
+<th>Description</th>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#path">path</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.archive</tt>.</td>
+          </tr>
+        </table>
+      </div>
+      
+<div class="section">
+<h3>Optional Parameters<a name="Optional_Parameters"></a></h3>
+        
+<table class="bodyTable" border="0">
+          
+<tr class="a">
+            
+<th>Name</th>
+            
+<th>Type</th>
+            
+<th>Since</th>
+            
+<th>Description</th>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#password">password</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.pwd</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#realm">realm</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.realm</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#systemVariables">systemVariables</a></b></td>
+            
+<td><tt>Map</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeHost">tomeeHost</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>localhost</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.host</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeHttpPort">tomeeHttpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8080</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.http</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#useBinaries">useBinaries</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.binary</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#user">user</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.user</tt>.</td>
+          </tr>
+        </table>
+      </div>
+      
+<div class="section">
+<h3>Parameter Details<a name="Parameter_Details"></a></h3>
+        
+<p><b><a name="password">password</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.pwd</tt></li>
+        </ul><hr />
+<p><b><a name="path">path</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>Yes</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.archive</tt></li>
+        </ul><hr />
+<p><b><a name="realm">realm</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.realm</tt></li>
+        </ul><hr />
+<p><b><a name="systemVariables">systemVariables</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.Map</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHost">tomeeHost</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.host</tt></li>
+          
+<li><b>Default</b>: <tt>localhost</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHttpPort">tomeeHttpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.http</tt></li>
+          
+<li><b>Default</b>: <tt>8080</tt></li>
+        </ul><hr />
+<p><b><a name="useBinaries">useBinaries</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.binary</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="user">user</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.user</tt></li>
+        </ul>
+      </div>
+    </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/maven/exec-mojo.mdtext
----------------------------------------------------------------------
diff --git a/docs/maven/exec-mojo.mdtext b/docs/maven/exec-mojo.mdtext
new file mode 100644
index 0000000..6dccd6e
--- /dev/null
+++ b/docs/maven/exec-mojo.mdtext
@@ -0,0 +1,1547 @@
+<div class="section">
+<h2>tomee:exec<a name="tomee:exec"></a></h2>
+      
+<p><b>Full name</b>:</p>
+      
+<p>org.apache.openejb.maven:tomee-maven-plugin[:Current Version]:exec</p>
+      
+<p><b>Description</b>:</p>
+      
+<div>(no description)</div>
+      
+<p><b>Attributes</b>:</p>
+      
+<ul>
+        
+<li>Requires a Maven project to be executed.</li>
+        
+<li>Requires dependency resolution of artifacts in scope: <tt>runtime+system</tt>.</li>
+        
+<li>Requires dependency collection of artifacts in scope: <tt>runtime</tt>.</li>
+      </ul>
+      
+<div class="section">
+<h3>Optional Parameters<a name="Optional_Parameters"></a></h3>
+        
+<table class="bodyTable" border="0">
+          
+<tr class="a">
+            
+<th>Name</th>
+            
+<th>Type</th>
+            
+<th>Since</th>
+            
+<th>Description</th>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#apacheRepos">apacheRepos</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>snapshots</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.apache-repos</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#appDir">appDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>apps</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#apps">apps</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#args">args</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.args</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#attach">attach</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.attach</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#bin">bin</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/bin</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.bin</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#catalinaBase">catalinaBase</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/apache-tomee</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.catalina-base</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#checkStarted">checkStarted</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.check-started</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#classifier">classifier</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.classifier</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#classpaths">classpaths</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#config">config</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/conf</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.conf</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#context">context</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>rename the current artifact<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#debug">debug</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.debug</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#debugPort">debugPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>5005</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.debugPort</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#deployOpenEjbApplication">deployOpenEjbApplication</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.deploy-openejb-internal-application</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#distributionName">distributionName</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>tomee.zip</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.distribution-name</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#docBases">docBases</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>for TomEE and wars only, which docBase to use for this war.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#ejbRemote">ejbRemote</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.ejb-remote</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#execFile">execFile</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/${project.build.finalName}-exec.jar</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.exec-file</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#externalRepositories">externalRepositories</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>for TomEE and wars only, add some external repositories to
+classloader.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#forceReloadable">forceReloadable</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>force webapp to be reloadable<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.force-reloadable</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#javaagents">javaagents</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#keepServerXmlAsthis">keepServerXmlAsthis</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(Removed since 7.0.0)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.keep-server-xml</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#lib">lib</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/tomee/lib</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.lib</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#libDir">libDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>lib</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#libs">libs</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>supported formats: --&gt; groupId:artifactId:version... --&gt;
+unzip:groupId:artifactId:version... --&gt; remove:prefix (often
+prefix = artifactId)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#mainDir">mainDir</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#password">password</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.pwd</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#quickSession">quickSession</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>use a real random instead of secure random. saves few ms at
+startup.<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.quick-session</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#realm">realm</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.realm</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#removeDefaultWebapps">removeDefaultWebapps</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.remove-default-webapps</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#removeTomeeWebapp">removeTomeeWebapp</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.remove-tomee-webapps</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#runnerClass">runnerClass</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>org.apache.openejb.maven.plugin.runner.ExecRunner</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.runner-class</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#runtimeWorkingDir">runtimeWorkingDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>.distribution</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.runtime-working-dir</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#script">script</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>bin/catalina[.sh|.bat]</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.script</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#simpleLog">simpleLog</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.simple-log</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#skipCurrentProject">skipCurrentProject</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.skipCurrentProject</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#skipWarResources">skipWarResources</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>when you set docBases to src/main/webapp setting it to true will
+allow hot refresh.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.skipWarResources</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#systemVariables">systemVariables</a></b></td>
+            
+<td><tt>Map</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#target">target</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeAjpPort">tomeeAjpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8009</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.ajp</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeAlreadyInstalled">tomeeAlreadyInstalled</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.exiting</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeArtifactId">tomeeArtifactId</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>apache-tomee</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.artifactId</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeClassifier">tomeeClassifier</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>webprofile</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.classifier</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeGroupId">tomeeGroupId</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>org.apache.openejb</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.groupId</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeHost">tomeeHost</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>localhost</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.host</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeHttpPort">tomeeHttpPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8080</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.http</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeHttpsPort">tomeeHttpsPort</a></b></td>
+            
+<td><tt>Integer</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.https</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeShutdownCommand">tomeeShutdownCommand</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>SHUTDOWN</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.shutdown-command</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#tomeeShutdownPort">tomeeShutdownPort</a></b></td>
+            
+<td><tt>int</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>8005</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.shutdown</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#tomeeVersion">tomeeVersion</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>-1</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.version</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#useConsole">useConsole</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.use-console</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#useOpenEJB">useOpenEJB</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>use openejb-standalone automatically instead of TomEE<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.openejb</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#user">user</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>User property is</b>: <tt>tomee-plugin.user</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#warFile">warFile</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/${project.build.finalName}.${project.packaging}</tt>.<br /></td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webappClasses">webappClasses</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.outputDirectory}</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappClasses</tt>.</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#webappDefaultConfig">webappDefaultConfig</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>forcing nice default for war development (WEB-INF/classes and web
+resources)<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappDefaultConfig</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webappDir">webappDir</a></b></td>
+            
+<td><tt>String</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>relative to tomee.base.<br /><b>Default value is</b>: <tt>webapps</tt>.<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#webappResources">webappResources</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.basedir}/src/main/webapp</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.webappResources</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#webapps">webapps</a></b></td>
+            
+<td><tt>List</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /></td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b><a href="#zip">zip</a></b></td>
+            
+<td><tt>boolean</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.zip</tt>.</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b><a href="#zipFile">zipFile</a></b></td>
+            
+<td><tt>File</tt></td>
+            
+<td><tt>-</tt></td>
+            
+<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/${project.build.finalName}.zip</tt>.<br /><b>User property is</b>: <tt>tomee-plugin.zip-file</tt>.</td>
+          </tr>
+        </table>
+      </div>
+      
+<div class="section">
+<h3>Parameter Details<a name="Parameter_Details"></a></h3>
+        
+<p><b><a name="apacheRepos">apacheRepos</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.apache-repos</tt></li>
+          
+<li><b>Default</b>: <tt>snapshots</tt></li>
+        </ul><hr />
+<p><b><a name="appDir">appDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>apps</tt></li>
+        </ul><hr />
+<p><b><a name="apps">apps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="args">args</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.args</tt></li>
+        </ul><hr />
+<p><b><a name="attach">attach</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.attach</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="bin">bin</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.bin</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/bin</tt></li>
+        </ul><hr />
+<p><b><a name="catalinaBase">catalinaBase</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.catalina-base</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/apache-tomee</tt></li>
+        </ul><hr />
+<p><b><a name="checkStarted">checkStarted</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.check-started</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="classifier">classifier</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.classifier</tt></li>
+        </ul><hr />
+<p><b><a name="classpaths">classpaths</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="config">config</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.conf</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/conf</tt></li>
+        </ul><hr />
+<p><b><a name="context">context</a>:</b></p>
+        
+<div>rename the current artifact</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="debug">debug</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.debug</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="debugPort">debugPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.debugPort</tt></li>
+          
+<li><b>Default</b>: <tt>5005</tt></li>
+        </ul><hr />
+<p><b><a name="deployOpenEjbApplication">deployOpenEjbApplication</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.deploy-openejb-internal-application</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="distributionName">distributionName</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.distribution-name</tt></li>
+          
+<li><b>Default</b>: <tt>tomee.zip</tt></li>
+        </ul><hr />
+<p><b><a name="docBases">docBases</a>:</b></p>
+        
+<div>for TomEE and wars only, which docBase to use for this war.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="ejbRemote">ejbRemote</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.ejb-remote</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="execFile">execFile</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.exec-file</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/${project.build.finalName}-exec.jar</tt></li>
+        </ul><hr />
+<p><b><a name="externalRepositories">externalRepositories</a>:</b></p>
+        
+<div>for TomEE and wars only, add some external repositories to
+classloader.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="forceReloadable">forceReloadable</a>:</b></p>
+        
+<div>force webapp to be reloadable</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.force-reloadable</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="javaagents">javaagents</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="keepServerXmlAsthis">keepServerXmlAsthis</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.keep-server-xml</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="lib">lib</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.lib</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/tomee/lib</tt></li>
+        </ul><hr />
+<p><b><a name="libDir">libDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>lib</tt></li>
+        </ul><hr />
+<p><b><a name="libs">libs</a>:</b></p>
+        
+<div>supported formats: --&gt; groupId:artifactId:version... --&gt;
+unzip:groupId:artifactId:version... --&gt; remove:prefix (often
+prefix = artifactId)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="mainDir">mainDir</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main</tt></li>
+        </ul><hr />
+<p><b><a name="password">password</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.pwd</tt></li>
+        </ul><hr />
+<p><b><a name="quickSession">quickSession</a>:</b></p>
+        
+<div>use a real random instead of secure random. saves few ms at
+startup.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.quick-session</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="realm">realm</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.realm</tt></li>
+        </ul><hr />
+<p><b><a name="removeDefaultWebapps">removeDefaultWebapps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.remove-default-webapps</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="removeTomeeWebapp">removeTomeeWebapp</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.remove-tomee-webapps</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="runnerClass">runnerClass</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.runner-class</tt></li>
+          
+<li><b>Default</b>: <tt>org.apache.openejb.maven.plugin.runner.ExecRunner</tt></li>
+        </ul><hr />
+<p><b><a name="runtimeWorkingDir">runtimeWorkingDir</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.runtime-working-dir</tt></li>
+          
+<li><b>Default</b>: <tt>.distribution</tt></li>
+        </ul><hr />
+<p><b><a name="script">script</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.script</tt></li>
+          
+<li><b>Default</b>: <tt>bin/catalina[.sh|.bat]</tt></li>
+        </ul><hr />
+<p><b><a name="simpleLog">simpleLog</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.simple-log</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="skipCurrentProject">skipCurrentProject</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.skipCurrentProject</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="skipWarResources">skipWarResources</a>:</b></p>
+        
+<div>when you set docBases to src/main/webapp setting it to true will
+allow hot refresh.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.skipWarResources</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="systemVariables">systemVariables</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.Map</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="target">target</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeAjpPort">tomeeAjpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.ajp</tt></li>
+          
+<li><b>Default</b>: <tt>8009</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeAlreadyInstalled">tomeeAlreadyInstalled</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.exiting</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeArtifactId">tomeeArtifactId</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.artifactId</tt></li>
+          
+<li><b>Default</b>: <tt>apache-tomee</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeClassifier">tomeeClassifier</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.classifier</tt></li>
+          
+<li><b>Default</b>: <tt>webprofile</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeGroupId">tomeeGroupId</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.groupId</tt></li>
+          
+<li><b>Default</b>: <tt>org.apache.openejb</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHost">tomeeHost</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.host</tt></li>
+          
+<li><b>Default</b>: <tt>localhost</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHttpPort">tomeeHttpPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.http</tt></li>
+          
+<li><b>Default</b>: <tt>8080</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeHttpsPort">tomeeHttpsPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.Integer</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.https</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeShutdownCommand">tomeeShutdownCommand</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.shutdown-command</tt></li>
+          
+<li><b>Default</b>: <tt>SHUTDOWN</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeShutdownPort">tomeeShutdownPort</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>int</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.shutdown</tt></li>
+          
+<li><b>Default</b>: <tt>8005</tt></li>
+        </ul><hr />
+<p><b><a name="tomeeVersion">tomeeVersion</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.version</tt></li>
+          
+<li><b>Default</b>: <tt>-1</tt></li>
+        </ul><hr />
+<p><b><a name="useConsole">useConsole</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.use-console</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="useOpenEJB">useOpenEJB</a>:</b></p>
+        
+<div>use openejb-standalone automatically instead of TomEE</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.openejb</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="user">user</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.user</tt></li>
+        </ul><hr />
+<p><b><a name="warFile">warFile</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/${project.build.finalName}.${project.packaging}</tt></li>
+        </ul><hr />
+<p><b><a name="webappClasses">webappClasses</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappClasses</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.outputDirectory}</tt></li>
+        </ul><hr />
+<p><b><a name="webappDefaultConfig">webappDefaultConfig</a>:</b></p>
+        
+<div>forcing nice default for war development (WEB-INF/classes and web
+resources)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappDefaultConfig</tt></li>
+          
+<li><b>Default</b>: <tt>false</tt></li>
+        </ul><hr />
+<p><b><a name="webappDir">webappDir</a>:</b></p>
+        
+<div>relative to tomee.base.</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.lang.String</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>Default</b>: <tt>webapps</tt></li>
+        </ul><hr />
+<p><b><a name="webappResources">webappResources</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.webappResources</tt></li>
+          
+<li><b>Default</b>: <tt>${project.basedir}/src/main/webapp</tt></li>
+        </ul><hr />
+<p><b><a name="webapps">webapps</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.util.List</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+        </ul><hr />
+<p><b><a name="zip">zip</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>boolean</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.zip</tt></li>
+          
+<li><b>Default</b>: <tt>true</tt></li>
+        </ul><hr />
+<p><b><a name="zipFile">zipFile</a>:</b></p>
+        
+<div>(no description)</div>
+        
+<ul>
+          
+<li><b>Type</b>: <tt>java.io.File</tt></li>
+          
+<li><b>Required</b>: <tt>No</tt></li>
+          
+<li><b>User Property</b>: <tt>tomee-plugin.zip-file</tt></li>
+          
+<li><b>Default</b>: <tt>${project.build.directory}/${project.build.finalName}.zip</tt></li>
+        </ul>
+      </div>
+    </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/maven/favicon.ico
----------------------------------------------------------------------
diff --git a/docs/maven/favicon.ico b/docs/maven/favicon.ico
new file mode 100644
index 0000000..f0c22ad
Binary files /dev/null and b/docs/maven/favicon.ico differ


[03/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/security-annotations.mdtext
----------------------------------------------------------------------
diff --git a/docs/security-annotations.mdtext b/docs/security-annotations.mdtext
new file mode 100644
index 0000000..bdd8d6d
--- /dev/null
+++ b/docs/security-annotations.mdtext
@@ -0,0 +1,294 @@
+Title: Security Annotations
+This page shows the correct usage of the security related annotations:
+
+ - javax.annotation.security.RolesAllowed
+ - javax.annotation.security.PermitAll
+ - javax.annotation.security.DenyAll
+ - javax.annotation.security.RunAs
+ - javax.annotation.security.DeclareRoles
+
+<a name="SecurityAnnotations-Basicidea"></a>
+## Basic idea
+
+- By default all methods of a business interface are accessible, logged in
+or not
+- The annotations go on the bean class, not the business interface
+- Security annotations can be applied to entire class and/or individual
+methods
+- The names of any security roles used must be declared via @DeclareRoles
+
+<a name="SecurityAnnotations-Norestrictions"></a>
+## No restrictions
+
+Allow anyone logged in or not to invoke 'svnCheckout'.
+
+These three examples are all equivalent.
+
+
+    @Stateless
+    public class OpenSourceProjectBean implements Project {
+    
+        public String svnCheckout(String s) {
+    	return s;
+        }
+    }
+
+
+    @Stateless
+    @PermitAll
+    public class OpenSourceProjectBean implements Project {
+    
+        public String svnCheckout(String s) {
+    	return s;
+        }
+    }
+
+
+    @Stateless
+    public class OpenSourceProjectBean implements Project {
+    
+        @PermitAll
+        public String svnCheckout(String s) {
+    	return s;
+        }
+    }
+
+
+ - Allow anyone logged in or not to invoke 'svnCheckout'.
+
+<a name="SecurityAnnotations-RestrictingaMethod"></a>
+## Restricting a Method
+
+Restrict the 'svnCommit' method to only individuals logged in and part of
+the "committer" role.  Note that more than one role can be listed.
+
+
+    @Stateless
+    @DeclareRoles({"committer"})
+    public class OpenSourceProjectBean implements Project {
+    
+        @RolesAllowed({"committer"})
+        public String svnCommit(String s) {
+    	return s;
+        }
+    
+        public String svnCheckout(String s) {
+    	return s;
+        }
+    }
+
+
+ - Allow only logged in users in the "committer" role to invoke
+'svnCommit'.
+ - Allow anyone logged in or not to invoke 'svnCheckout'.
+
+
+<a name="SecurityAnnotations-DeclareRoles"></a>
+## DeclareRoles
+
+You need to update the @DeclareRoles when referencing roles via
+isCallerInRole(roleName).
+
+
+    @Stateless
+    @DeclareRoles({"committer", "contributor"})
+    public class OpenSourceProjectBean implements Project {
+    
+        @Resource SessionContext ctx;
+    
+        @RolesAllowed({"committer"})
+        public String svnCommit(String s) {
+    	ctx.isCallerInRole("committer"); // Referencing a Role
+    	return s;
+        }
+    
+        @RolesAllowed({"contributor"})
+        public String submitPatch(String s) {
+    	return s;
+        }
+    }
+
+
+<a name="SecurityAnnotations-Restrictingallmethodsinaclass"></a>
+##  Restricting all methods in a class
+
+Placing the annotation at the class level changes the default of PermitAll
+
+
+    @Stateless
+    @DeclareRoles({"committer"})
+    @RolesAllowed({"committer"})
+    public class OpenSourceProjectBean implements Project {
+    
+        public String svnCommit(String s) {
+    	return s;
+        }
+    
+        public String svnCheckout(String s) {
+    	return s;
+        }
+    
+        public String submitPatch(String s) {
+    	return s;
+        }
+    }
+
+
+- Allow only logged in users in the "committer" role to invoke 'svnCommit',
+'svnCheckout' or 'submitPatch'.
+
+<a name="SecurityAnnotations-Mixingclassandmethodlevelrestrictions"></a>
+##  Mixing class and method level restrictions
+
+Security annotations can be used at the class level and method level at the
+same time.  These rules do not stack, so marking 'submitPatch' overrides
+the default of "committers".
+
+
+    @Stateless
+    @DeclareRoles({"committer", "contributor"})
+    @RolesAllowed({"committer"})
+    public class OpenSourceProjectBean implements Project {
+    
+        public String svnCommit(String s) {
+    	return s;
+        }
+    
+        public String svnCheckout(String s) {
+    	return s;
+        }
+    
+        @RolesAllowed({"contributor"})
+        public String submitPatch(String s) {
+    	return s;
+        }
+    }
+
+
+ - Allow only logged in users in the "committer" role to invoke 'svnCommit'
+or 'svnCheckout'
+ - Allow only logged in users in the "contributor" role to invoke
+'submitPatch'.	
+
+<a name="SecurityAnnotations-PermitAll"></a>
+##  PermitAll
+
+When annotating a bean class with @RolesAllowed, the @PermitAll annotation
+becomes very useful on individual methods to open them back up again.
+
+
+    @Stateless
+    @DeclareRoles({"committer", "contributor"})
+    @RolesAllowed({"committer"})
+    public class OpenSourceProjectBean implements Project {
+    
+        public String svnCommit(String s) {
+    	return s;
+        }
+    
+        @PermitAll
+        public String svnCheckout(String s) {
+    	return s;
+        }
+    
+        @RolesAllowed({"contributor"})
+        public String submitPatch(String s) {
+    	return s;
+        }
+    }
+
+
+ - Allow only logged in users in the "committer" role to invoke
+'svnCommit'.
+ - Allow only logged in users in the "contributor" role to invoke
+'submitPatch'.
+ - Allow anyone logged in or not to invoke 'svnCheckout'.
+
+
+<a name="SecurityAnnotations-DenyAll"></a>
+##  DenyAll
+
+The @DenyAll annotation can be used to restrict business interface access
+from anyone, logged in or not.	The method is still invokable from within
+the bean class itself.
+
+
+    @Stateless
+    @DeclareRoles({"committer", "contributor"})
+    @RolesAllowed({"committer"})
+    public class OpenSourceProjectBean implements Project {
+    
+        public String svnCommit(String s) {
+    	return s;
+        }
+    
+        @PermitAll
+        public String svnCheckout(String s) {
+    	return s;
+        }
+    
+        @RolesAllowed({"contributor"})
+        public String submitPatch(String s) {
+    	return s;
+        }
+    
+        @DenyAll
+        public String deleteProject(String s) {
+    	return s;
+        }
+    }
+
+
+ - Allow only logged in users in the "committer" role to invoke
+'svnCommit'.
+ - Allow only logged in users in the "contributor" role to invoke
+'submitPatch'.
+ - Allow anyone logged in or not to invoke 'svnCheckout'.
+ - Allow *no one* logged in or not to invoke 'deleteProject'.
+
+<a name="SecurityAnnotations-IllegalUsage"></a>
+#  Illegal Usage
+
+Generally, security restrictions cannot be made on AroundInvoke methods and
+most callbacks.
+
+The following usages of @RolesAllowed have no effect.
+
+
+    @Stateful
+    @DecalredRoles({"committer"})
+    public class MyStatefulBean implements	MyBusinessInterface  {
+    
+        @PostConstruct
+        @RolesAllowed({"committer"})
+        public void constructed(){
+    
+        }
+    
+        @PreDestroy
+        @RolesAllowed({"committer"})
+        public void destroy(){
+    
+        }
+    
+        @AroundInvoke
+        @RolesAllowed({"committer"})
+        public Object invoke(InvocationContext invocationContext) throws
+Exception {
+    	return invocationContext.proceed();
+        }
+    
+        @PostActivate
+        @RolesAllowed({"committer"})
+        public void activated(){
+    
+        }
+    
+        @PrePassivate
+        @RolesAllowed({"committer"})
+        public void passivate(){
+    
+        }
+    }
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/security.mdtext
----------------------------------------------------------------------
diff --git a/docs/security.mdtext b/docs/security.mdtext
new file mode 100644
index 0000000..95fee1c
--- /dev/null
+++ b/docs/security.mdtext
@@ -0,0 +1,144 @@
+Title: Security
+<a name="Security-Security-HowTo."></a>
+# Security - How To.
+
+We currently have two authentication mechanisms to choose from:
+* *PropertiesLoginModule* (a basic text file based login that looks up
+users and groups from the specified properties files)
+* *SQLLoginModule* (database based login that looks up users and groups
+in a database through SQL queries)
+
+To make your program authenticate itself to the server, simply construct
+your InitialContext with the standard javax.naming.Context properties for
+user/pass info, which is:
+
+    Properties props = new Properties();
+    props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
+    props.setProperty(Context.PROVIDER_URL, "ejbd://localhost:4201");
+    props.setProperty(Context.SECURITY_PRINCIPAL, "someuser");
+    props.setProperty(Context.SECURITY_CREDENTIALS, "thepass");
+    props.setProperty("openejb.authentication.realmName", "PropertiesLogin");
+    // optional
+    InitialContext ctx = new InitialContext(props);
+    ctx.lookup(...);
+
+That will get you logged in and all your calls from that context should
+execute as you.
+
+*$\{openejb.base\}/conf/login.config* is a standard JAAS config file.
+Here, you can configure any number of security realms to authenticate
+against.
+To specify which of the realms you want to authenticate against, you can
+set the *openejb.authentication.realmName* property to any of the
+configured realm names in *login.config*.
+If you don't speficy a realm name, the default (currently
+*PropertiesLogin*) is used.
+For examples and more information on JAAS configuration, see the [JAAS Reference Guide](http://java.sun.com/javase/6/docs/technotes/guides/security/jaas/JAASRefGuide.html)
+.
+
+<a name="Security-PropertiesLoginModule"></a>
+## PropertiesLoginModule
+
+Supported options:
+<table>
+<tr><th>Option</th><th>Description</th><th>Required</th></tr>
+<tr><td>UsersFile</td><td>name of the properties file that contains the users and their
+passwords</td><td>*yes*</td></tr>
+<tr><td>GroupsFile</td><td>name of the properties file that contains the groups and their
+member lists</td><td>*yes*</td></tr>
+</table>
+
+*UsersFile* and *GroupsFile* are read in on every login, so +you can
+update them+ on a running system and those users will "show up" immediately
++without the need for a restart+ of any kind.
+
+<a name="Security-SQLLoginModule"></a>
+## SQLLoginModule
+
+You can either use a data source or configure the JDBC URL through which
+the user/group lookups will be made.
+
+If you use a *DataSource*, you must specify its JNDI name with the
+*dataSourceName* option.
+
+If you use JDBC directly, you have to specify at least the JDBC URL of the
+database.
+The driver should be autodetected (provided the appropriate jar is on your
+classpath), but if that fails for some reason, you can force a specific
+driver using the *jdbcDriver* option.
+For more information on JDBC URLs, see the [JDBC Guide](http://java.sun.com/javase/6/docs/technotes/guides/jdbc/)
+
+The *userSelect* query must return a two-column list of user names
+(column 1) and passwords (column 2). This query should normally return a
+single row, which can be achieved by the use of a query parameter
+placeholder "?".
+Any such placeholders in both queries will be filled in with the username
+that the client is trying to log in with.
+The *groupSelect* query must return a two-column list of user names and
+their groups (or "roles" in the EJB world).
+
+Supported options:
+<table>
+<tr><th>Option</th><th>Description</th><th>Required</th></tr>
+<tr><td>dataSourceName</td><td>the name of a data source</td><td>*yes* (alternative 1)</td></tr>
+<tr><td>jdbcURL</td><td>a standard JDBC URL</td><td>*yes* (alternative 2)</td></tr>
+<tr><td>jdbcDriver</td><td>the fully qualified class name of the database driver</td><td>no</td></tr>
+<tr><td>jdbcUser</td><td>the user name for accessing the database</td><td>no</td></tr>
+<tr><td>jdbcPassword</td><td>the password for accessing the database</td><td>no</td></tr>
+<tr><td>userSelect</td><td>the SQL query that returns a list of users and their
+passwords</td><td>*yes*
+</tr>
+<tr><td>groupSelect</td><td>the SQL query that returns a list of users and groups
+(roles)</td><td>*yes*
+</tr>
+<tr><td>digest</td><td>the name of the digest algorithm (e.g. "MD5" or "SHA") for digest
+authentication</td><td>no</td></tr>
+<tr><td>encoding</td><td>the digest encoding, can be "hex" or "base64"</td><td>no</td></tr>
+</table>
+
+<a name="Security-PLUGPOINTS"></a>
+# PLUG POINTS
+
+There are four-five different plug points where you could customize the
+functionality.	From largest to smallest:
+- *The SecurityService interface*:  As before all security work
+(authentication and authorization) is behind this interface, only the
+methods on it have been updated.  If you want to do something really "out
+there" or need total control, this is where you go. Plugging in your own
+SecurityService should really be a last resort. We still have our "do
+nothing" SecurityService implementation just as before, but it is no longer
+the default. +You can add a new SecurityService impl by creating a
+service-jar.xml and packing it in your jar+.  You can configure OpenEJB to
+use a different SecurityService via the openejb.xml.
+
+- *JaccProvider super class*:  If you want to plug in your own JACC
+implementation to perform custom authorization (maybe do some fancy
+auditing), this is one way to do it without really having to understand
+JACC too much.	We will plug your provider in to all the places required by
+JACC if you simply +set the system property+
+"*org.apache.openejb.core.security.JaccProvider*" with the name of your
+JaccProvider impl.
+
+- *Regular JACC*.  The JaccProvider is simply a wrapper around the many
+things you have to do to create and plugin a JACC provider, but you can
+still plugin a JACC provider in the standard ways.  Read the JACC spec for
+that info.
+
+- *JAAS LoginModule*.  You can setup a different JAAS LoginModule to do all
+your authentication by simply editing the conf/login.config file which is a
+plain JAAS config file.  At the moment we only support username/password
+based login modules.  At some point it would be nice to support any kind of
+input for a JAAS LoginModule, but username/password at least covers the
+majority.  It actually *is* possible to support any LoginModule, but you
+would have to supply your clients with your own way to authenticate to it
+and write a strategy for telling the OpenEJB client what data to send to
+the server with each invocation request. See the [JAAS LoginModule Developer's Guide](http://java.sun.com/javase/6/docs/technotes/guides/security/jaas/JAASLMDevGuide.html)
+ for more information.
+
+- *Client IdentityResolver*.  This is the just mentioned interface you
+would have to implement to supply the OpenEJB client with alternate data to
+send to the server with each invocation request. If you're plugging in a
+new version of this it is likely that you may also want to plugin in your
+own SecurityService implementation. Reason being, the object returned from
+IdentiyResolve.getIdentity() is sent across the wire and straight in to the
+SecurityService.associate(Object) method.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/securityservice-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/securityservice-config.mdtext b/docs/securityservice-config.mdtext
new file mode 100644
index 0000000..84c354c
--- /dev/null
+++ b/docs/securityservice-config.mdtext
@@ -0,0 +1,34 @@
+Title: SecurityService Configuration
+
+
+A SecurityService can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <SecurityService id="mySecurityService" type="SecurityService">
+        defaultUser = guest         
+    </SecurityService>
+
+Alternatively, a SecurityService can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    mySecurityService = new://SecurityService?type=SecurityService
+    mySecurityService.defaultUser = guest         
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared SecurityService a warning will be logged.  If a SecurityService is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple SecurityService declarations are allowed.
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+<tr>
+  <td>defaultUser</td>
+  <td>String</td>
+  <td>guest&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+  <td>
+
+</td>
+</tr>
+</table>
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/service-locator.mdtext
----------------------------------------------------------------------
diff --git a/docs/service-locator.mdtext b/docs/service-locator.mdtext
new file mode 100644
index 0000000..b96344c
--- /dev/null
+++ b/docs/service-locator.mdtext
@@ -0,0 +1,169 @@
+Title: Service Locator
+The functionality of the [openejb.jndiname.format](jndi-names.html)
+ allows for writing some really fun service locator code.  Creating the
+exact layout you want using the exact data you want means you can create
+robust libraries for pulling things out of JNDI.
+
+<a name="ServiceLocator-Lookupexamples"></a>
+# Lookup examples
+
+To get the creative juices flowing here are a few examples of lookup
+methods you could create for your service locator, the jndi name formats
+that would work with those lookups, and examples of client code using the
+service locator.  For simplicity, we'll assume all the lookup examples
+start with this basic class that has a built-in lookup allowing for a
+common prefix to be optionally applied to the beginning of all lookup
+strings.
+
+    public class MyLocator {
+        private final Context context;
+
+        public MyLocator() throws NamingException {
+            this(null);
+        }
+
+        public MyLocator(String commonPrefix) throws NamingException {
+            Properties properties = new Properties();
+            properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
+            properties.put(Context.PROVIDER_URL, "ejbd://localhost:4201/");
+            this.context = new InitialContext(properties);
+        }
+
+        public Object lookup(String name) {
+            try {
+                if (commonPrefix != null) name = commonPrefix + "/" +name;
+                return context.lookup(name);
+            } catch (NamingException e) {
+                throw new IllegalArgumentException(e);
+            }
+        }
+    }
+
+
+<a name="ServiceLocator-Justtheinterface"></a>
+##  Just the interface
+Usable with JNDI name formats ending in the full class name of the
+interface such as:
+ - \{interfaceClass}
+
+
+    public <T> T lookup(Class<T> type) {
+        return (T) lookup(type.getName());
+    }
+
+
+
+    MyLocator locator = new MyLocator();
+    Widget widget = locator.lookup(Widget.class);	
+
+
+Or with a common prefix or with a common prefix supplied in constructor
+such as:
+ - \{moduleId}/\{interfaceClass}
+ - ejb/\{moduleId}/\{interfaceClass}
+
+
+    MyLocator locator = new MyLocator("ejb/superbiz");
+    Widget widget = locator.lookup(Widget.class);	
+    Store store = locator.lookup(Store.class);
+
+
+
+<a name="ServiceLocator-Interfaceclassandaprefix"></a>
+##  Interface class and a prefix
+
+Usable with JNDI name formats including a varying prefix such as ejbName or
+deploymentID
+and ending in the full class name of the interface
+
+ - \{ejbName}/\{interfaceClass}
+ - \{deploymentId}/\{interfaceClass}
+
+
+    public <T> T lookup(String prefix, Class<T> type) {
+        return (T) lookup(prefix + "/" + type.getName());
+    }
+
+
+
+    MyLocator locator = new MyLocator();
+    Widget redWidget = locator.lookup("RedWidgetBean", Widget.class);   
+    Widget blueWidget = locator.lookup("BlueWidgetBean", Widget.class);   
+
+
+Or with a common prefix or with a common prefix supplied in constructor
+such as:
+ - \{moduleId}/\{ejbName}/\{interfaceClass}
+ - ejb/\{moduleId}/\{deploymentId}/\{interfaceClass}
+
+
+    MyLocator locator = new MyLocator("accountingApp");
+    Widget widget = locator.lookup("RedWidgetBean", Widget.class);	 
+    Store store = locator.lookup("StoreBean", Store.class);
+
+
+<a name="ServiceLocator-Interfaceclassandejbclass"></a>
+##  Interface class and ejb class
+
+Usable with JNDI name formats comprised of the interfaceClass and ejbClass
+
+For variation, the interface class is the prefix and the ejb class is the
+suffix.  This is neat as the the prefix (the interface class name) becomes
+a jndi context with one binding in it for each implementing ejb class.
+
+Works with:
+ - \{interfaceClass}/\{ejbClass}
+
+
+    public <T> T lookup(Class<T> type, Class ejbClass) {
+        return (T) lookup(type.getName() + "/" + ejbClass.getName());
+    }
+
+
+
+    MyLocator locator = new MyLocator();
+    Widget widget = locator.lookup(Widget.class, BlueWidgetBean.class);   
+
+
+Or with a common prefix or with a common prefix supplied in constructor
+such as:
+ - \{moduleId}/\{interfaceClass}/\{ejbClass}
+ - ejb/\{moduleId}/\{interfaceClass}/\{ejbClass}
+
+
+    MyLocator locator = new MyLocator("ejb/purchasingApp");
+    Widget widget = locator.lookup(Widget.class, RedWidgetBean.class);
+    Store store = locator.lookup(Store.class, StoreBean.class);
+
+
+
+<a name="ServiceLocator-Interfaceclassandejbclasswithsimplenames"></a>
+## Interface class and ejb class with simple names
+
+Similar to the above example but using the simple name of the classes
+resulting
+in a JNDI tree that's a bit more human readable.
+ - \{ejbClass.simpleName}/\{interfaceClass.simpleName}
+
+
+    public <T> T lookup(Class ejbClass, Class<T> type) {
+        return (T) lookup(ejbClass.getSimpleName() + "" + type.getSimpleName());
+    }
+
+and
+
+    MyLocator locator = new MyLocator();
+    Widget widget = locator.lookup(RedWidgetBean.class, Widget.class);   
+
+
+Or with a common prefix or with a common prefix supplied in constructor
+such as:
+ - \{moduleId}/\{ejbClass.simpleName}/\{interfaceClass.simpleName}
+ - ejb/\{moduleId}/\{ejbClass.simpleName}/\{interfaceClass.simpleName}
+
+
+    MyLocator locator = new MyLocator("shippingApp");
+    Widget widget = locator.lookup(GreenWidgetBean.class, Widget.class);   
+    Store store = locator.lookup(SuperStoreBean.class, Store.class);
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/services.mdtext
----------------------------------------------------------------------
diff --git a/docs/services.mdtext b/docs/services.mdtext
new file mode 100644
index 0000000..5e3bc4b
--- /dev/null
+++ b/docs/services.mdtext
@@ -0,0 +1,16 @@
+Title: ServicePool and Services
+
+OpenEJB and TomEE services using ServicePool as wrapper - for instance ejbd service or all services not implementing SelfManaging interface - support some additional configuration due
+to the pooling. Here is the list of the additional properties (either configure them in the service configuration file in conf/conf.d/${service}.properties or in conf/system.properties prefixing them by “{service}.”).
+
+Basically using ServicePool the service is associated to a ThreadPoolExecutor and this one is configured with these properties (see ThreadPoolExecutor constructor for the detail):
+
+* threadsCore (default 10)
+* threads (default 150)
+* queue (default threadCore-1)
+* block (default true)
+* keepAliveTime (default 60000)
+
+Additionally you can force the socket to be closed after each request (this is an advanced setting, use it with caution):
+
+* forceSocketClose (default true)

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/singleton-beans.mdtext
----------------------------------------------------------------------
diff --git a/docs/singleton-beans.mdtext b/docs/singleton-beans.mdtext
new file mode 100644
index 0000000..3cee7d2
--- /dev/null
+++ b/docs/singleton-beans.mdtext
@@ -0,0 +1,223 @@
+Title: Singleton Beans
+<a name="SingletonBeans-SingletonOverview"></a>
+# Singleton Overview
+For the first time in years EJB has a new bean type, the *@Singleton*.	In
+my opinion, the javax.ejb.Singleton will replace a lot of what people are
+using @Stateless for today.  
+
+The Singleton is essentially what you get if you take a Stateless bean and
+adjust the pool size to be exactly 1 resulting in there being exactly one
+instance of the Singleton bean in the application which can be invoked
+concurrently by multiple threads, like a servlet.  It can do everything a
+Stateless can do such as support local and remote business interfaces, web
+services, security, transactions, and more.  Additionally, the Singleton
+can have its @PostConstruct method called with the application starts up
+and its @PreDestroy method called when the application shuts down.  This
+allows it to serve as an application lifecycle listener which is something
+only Servlets could do before.	It has an *@Startup* annotation which is
+similar in concept to the servlet <load-on-startup>, but unlike servlets it
+doesn't take a number as an argument.  Instead, you can use an *@DependsOn*
+annotation to say which other Singletons you need and the container will
+ensure they start before you.
+
+See the [Singleton Example](singleton-example.html)
+ for sample bean code and client.
+
+<a name="SingletonBeans-Concurrency"></a>
+## Concurrency
+
+Singletons support two modes of concurrent access, Container-Managed
+Concurrency (the default) and Bean-Managed Concurrency.
+
+<a name="SingletonBeans-Bean-ManagedConcurrency"></a>
+### Bean-Managed Concurrency
+
+With Bean-Managed Concurrency, annotated as *@ConcurrencyManagement(BEAN)*,
+the container sends all invocations into the bean and lets the Singleton
+bean instance decide how and when to synchronize access, if at all.  Here
+the 'synchronization' keyword is allowed as well as the full
+javax.util.concurrent set of libraries.  
+
+<a name="SingletonBeans-Container-ManagedConcurrency"></a>
+### Container-Managed Concurrency
+
+With Container-Managed Concurrency, annotated as
+*@ConcurrencyManagement(CONTAINER)*, the container will enforce concurrency
+for you via locking method access to the bean.	Two modes, called locks
+exist and can be assigned to both the bean class and methods of the bean
+class.
+
+<a name="SingletonBeans-Locktype"></a>
+#### Lock type
+
+The first and the default is a "write" lock, annotated as *@Lock(WRITE)*. 
+Essentially, with a write lock the caller holds an exclusive lock on the
+bean for the duration of the method call and all other threads for that or
+any other method must wait.  
+
+The second option is a "read" lock, annotated as *@Lock(READ)*.  The read
+lock allows full concurrent access to the methods (assuming no write locks
+are held).  The default mode of "write" essentially makes your bean a
+single-threaded bean, which is very slow.  The more conservative
+@Lock(WRITE) was chosen as the default as this is how all the other bean
+types work (only a single thread may access a bean instance at any given
+time).	Those that are aware of how to handle concurrent access can easily
+put @Lock(READ) on their bean class, thus changing the default, and then
+@Lock(WRITE) on specific methods if needed.  
+
+The locking modes of Container-Managed Concurrency map directly to the *[java.util.concurrent.ReadWriteLock](http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/locks/ReadWriteLock.html)
+* API which looks like this:
+
+    public interface ReadWriteLock {
+       /**
+        * Returns the lock used for reading.
+        *
+        * @return the lock used for reading.
+        */
+       Lock readLock();
+    
+       /**
+        * Returns the lock used for writing.
+        *
+        * @return the lock used for writing.
+        */
+       Lock writeLock();
+    }
+
+
+Literally 100% of the Singleton locking we're talking about is taken from
+this interface and its javadoc is a great source of information.  It's safe
+to imagine that under the covers the Singleton Container has an instance of
+ReadWriteLock which it uses to enforce the locking for all the Singleton
+bean's methods.  Essentially:
+
+  - @Lock(READ) == theSingletonReadWriteLock.readLock().lock()
+  - @Lock(WRITE) == theSingletonReadWriteLock.writeLock().lock()
+
+The EJB container may use something other than ReadWriteLock but the
+semantics of a ReadWriteLock must be followed.	Internally, we use an
+instance of [java.util.concurrent.ReentrantReadWriteLock](http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html)
+ which supports correct memory synchronization, some reentrancy, lock
+downgrading, and [more|http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html]
+.
+
+<a name="SingletonBeans-AcquiringtheLock"></a>
+#### Acquiring the Lock
+
+The *@AccessTimetout* annotation can configure how long a thread will wait
+to acquire the read or write lock.  This annotation can be used on the bean
+class or individual methods.  The annotation maps directly to the [java.util.concurrent.locks.Lock](http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/locks/Lock.html)
+ interface.
+
+    public interface Lock {
+    
+        /**
+         * Blocks (potentially) forever
+         *
+         * @AccessTimout with a value of -1
+         */
+        void lock();
+    
+        /**
+         * Non-blocking
+         *
+         * @AccessTimout with a value of 0
+         */
+        boolean tryLock();
+    
+        /**
+         * Blocks (potentially) up to a limit
+         * 
+         * @AccessTimout(30, TimeUnit.SECONDS)
+         */
+        boolean tryLock(long time, TimeUnit unit) throws InterruptedException;
+    
+    }
+
+
+In the event it is not possible to acquire the lock a
+*javax.ejb.ConcurrentAccessException* or
+*javax.ejb.ConcurrentAccessTimeoutException* will be thrown.
+
+<a name="SingletonBeans-DefaultTimeout"></a>
+#### Default Timeout
+
+The default value of *@AccessTimeout* annotation is vendor specific.  In
+OpenEJB it defaults to the value of the *AccessTimeout* property which can
+be configured in many different scopes.  Here is the order of preference:
+
+1. bean-level in
+openejb-jar.xml/<openejb-jar>/<ejb-deployment>/<properties>
+1. jar-level in openejb-jar.xml/<openejb-jar>/<properties>
+1. container-level in openejb.xml/<openejb>/<Container>
+1. boot-level via InitialContext(Properties) or
+EJBContainer.createEjbContainer(Map<Object,Object>)
+1. system-level in System.getProperties()
+
+The value of the property can be phrased in plain english such as "1 hour
+and 23 minutes and 17 seconds" see [Configuring Durations](configuring-durations.html)
+ for details.
+
+<a name="SingletonBeans-StartupandStartupOrdering"></a>
+## Startup and Startup Ordering
+
+Singletons have an *@Startup* annotation which can be applied to the bean
+class.	When used, the Container will instantiate the Singleton instance
+_eagerly_ when the application starts up, otherwise the Container will
+instantiate the Singleton instance _lazily_ when the bean is first
+accessed.
+
+If one Singleton refers to another Singleton in the @PostConstruct or
+@PreDestroy method, there must be some measure taken to ensure the other
+Singleton exists and is started.  This sort of ordering is achieved with
+the *@DependsOn* annotation which can be used to list the names of
+Singleton beans that must be started before the Singleton bean using the
+annotation.
+
+
+    @DependsOn({"SingletonB", "SingletonC"})
+    @Singleton
+    public class SingletonA {
+    
+    }
+
+
+Circular references are not supported.	If BeanA uses @DependsOn to point
+to BeanB and BeanB also uses @DependsOn to point at BeanA, the result is a
+deployment exception.  Be aware that circular references can happen in less
+trivial ways such as A referring to B which refers to C which refers to D
+which refers back to A.  We will detect and print all circular dependencies
+(called circuits) at deploy time.
+
+Note that @DependsOn is only required (and should only be used) if a
+Singleton *uses* another Singleton in its @PostConstruct method or
+@PreDestroy method.  Simply having a reference to another Singleton and
+using it in other business methods does not require an @DependsOn
+declaration.  The @DependsOn allows the Container to calculate the correct
+startup order and shutdown order so that it can guarantee the Singletons
+you need are available in your @PostConstruct or @PreDestroy methods.  All
+Singletons will automatically be available to your business methods
+regardless if @DependsOn is used.  Because of the greater chance of
+creating circular dependencies, it is better not to use the @DependsOn
+annotation "just in case" and should only be used when truly needed.
+
+<a name="SingletonBeans-XMLandAnnotationOverriding"></a>
+# XML and Annotation Overriding
+
+Singletons can be declared in the ejb-jar.xml as follows:
+
+    <ejb-jar>
+      <enterprise-beans>
+        <session>
+          <ejb-name>MySingletonBean</ejb-name>
+          <ejb-class>org.superbiz.MySingletonBean</ejb-class>
+          <session-type>Singleton</session-type>
+          <load-on-startup/>
+          <depends-on>
+              <ejb-name>SingletonFoo</ejb-name>
+              <ejb-name>SingletonBar</ejb-name>
+          </depends-on>
+        </session>
+      </enterprise-beans>
+    </ejb-jar>
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/singleton-ejb.mdtext
----------------------------------------------------------------------
diff --git a/docs/singleton-ejb.mdtext b/docs/singleton-ejb.mdtext
new file mode 100644
index 0000000..3297c07
--- /dev/null
+++ b/docs/singleton-ejb.mdtext
@@ -0,0 +1,2 @@
+Title: Singleton EJB
+{include:OPENEJBx30:Singleton Beans}

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/singletoncontainer-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/singletoncontainer-config.mdtext b/docs/singletoncontainer-config.mdtext
new file mode 100644
index 0000000..162ad2c
--- /dev/null
+++ b/docs/singletoncontainer-config.mdtext
@@ -0,0 +1,53 @@
+Title: SingletonContainer Configuration
+
+
+A SingletonContainer can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <Container id="mySingletonContainer" type="SINGLETON">
+        accessTimeout = 30 seconds
+    </Container>
+
+Alternatively, a SingletonContainer can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    mySingletonContainer = new://Container?type=SINGLETON
+    mySingletonContainer.accessTimeout = 30 seconds
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared SingletonContainer a warning will be logged.  If a SingletonContainer is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple SingletonContainer declarations are allowed.
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+<tr>
+  <td><a href="#accessTimeout">accessTimeout</a></td>
+  <td><a href="configuring-durations.html">time</a></td>
+  <td>30&nbsp;seconds</td>
+  <td>
+Specifies the maximum time an invocation could wait for the
+`@Singleton` bean instance to become available before giving up.
+</td>
+</tr>
+</table>
+
+
+
+<a name="accessTimeout"></a>
+## accessTimeout
+
+Specifies the maximum time an invocation could wait for the
+`@Singleton` bean instance to become available before giving up.
+
+After the timeout is reached a `javax.ejb.ConcurrentAccessTimeoutException`
+will be thrown.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+`1 hour and 27 minutes and 10 seconds`
+
+Any usage of the `javax.ejb.AccessTimeout` annotation will
+override this setting for the bean or method where the
+annotation is used.
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/spring-and-openejb-3.0.mdtext
----------------------------------------------------------------------
diff --git a/docs/spring-and-openejb-3.0.mdtext b/docs/spring-and-openejb-3.0.mdtext
new file mode 100644
index 0000000..6251937
--- /dev/null
+++ b/docs/spring-and-openejb-3.0.mdtext
@@ -0,0 +1,185 @@
+{note}OpenEJB 3.1 and later users should refer to the [Spring] page.{note}
+# Bootstrapping OpenEJB in Spring
+
+If you wish to use OpenEJB inside Spring you can do so pretty easily.  Include OpenEJB and its dependencies in your classpath as you would in a plain embedded scenario then add a custom factory like the following:
+
+    public class OpenEjbFactoryBean implements org.springframework.beans.factory.FactoryBean {
+
+        private Properties properties = new Properties();
+
+        public OpenEjbFactoryBean() {
+            properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
+        }
+
+        public Properties getJndiEnvironment() {
+            return properties;
+        }
+
+        public void setJndiEnvironment(Properties properties) {
+            this.properties.putAll(properties);
+        }
+
+        public Object getObject() {
+            try {
+                return new InitialContext(properties);
+            } catch (NamingException e) {
+                throw new RuntimeException(e);
+            }
+        }
+
+        public Class getObjectType(){
+            return Context.class;
+        }
+
+        boolean isSingleton() {
+            return true;
+        }
+    }
+
+And include that at the top of your spring xml file as follows:
+
+    <bean id="OpenEjbContext" class="org.acme.OpenEjbFactoryBean">
+      <property name="jndiEnvironment">
+        <props>
+          <prop key="myDs">new://Resource?type=DataSource</prop>
+          <prop key="myDs.JdbcDriver">com.mysql.jdbc.Driver</prop>
+          <prop key="myDs.JdbcUrl">jdbc:mysql://localhost/midastest?createDatabaseIfNotExist=true</prop>
+          <prop key="myDs.UserName">root</prop>
+          <prop key="myDs.Password"></prop>
+        </props>
+      </property>
+    </bean>
+
+The value of <props> is meant to be illustrative of the kinds of properties you can pass into OpenEJB.  It's possible to create any number of datasources, topics, queues, containers and more this way.
+
+Just as with Unit Testing, OpenEJB will find and automatically deploy all the EJB beans it [finds in the classpath|Application discovery via the classpath].  You can then expose any of these things to other Spring components with custom factory beans.
+
+# Injecting OpenEJB-created resources into Spring components
+
+If you want to have any of the Topics, Queues, DataSources, EntityManagers or more that OpenEJB creates injected into components that Spring creates, here's one technique....
+
+Let's say you have a persistence unit called "*OrangeUnit*" declared in a persistence.xml file.  One way to get the related *EntityManager* created by OpenEJB is to do as follows.  Create an @Stateless bean with an @PersistenceContext ref in it, then use a factory bean to look it up, pull the EntityManager out and return it
+
+OrangeUnitBean.java
+
+    /*
+     * OpenEJB will automatically find this bean.  Just put it in the same jar
+     * that your META-INF/persistence.xml file is located in and make sure that
+     * that same jar file also has a META-INF/ejb-jar.xml file.  The ejb-jar.xml
+     * need only contain the text "<ejb-jar/>" at minimum.
+     */
+    @Stateless
+    public class OrangeUnitBean implements OrangeUnitLocal {
+
+        @PersistenceContext(unitName="OrangeUnit")
+        private EntityManager entityManager;
+
+        public EntityManager getEntityManager() {
+            return entityManager;
+        }
+    }
+
+OrangeUnitLocal.java
+
+    /**
+     * The local interface for the OrangeUnitBean
+     */
+    public interface OrangeUnitLocal {
+       public EntityManager getEntityManager();
+    }
+
+OrangeUnitFactoryBean.java
+
+    /**
+     * This factory bean will lookup the OrangeUnitBean using the javax.naming.Context
+     * that is created via the OpenEjbFactoryBean above.  It will simply grab the EntityManager
+     * from that bean and hand it over to Spring.  Anyone in Spring-land can then easily get
+     * a reference to the EntityManager by simply referencing this factory bean.
+     */
+    public class OrangeUnitFactoryBean implements org.springframework.beans.factory.FactoryBean {
+        private Context context;
+
+        public Context getContext() {
+            return context;
+        }
+
+        public void setContext(Context context) {
+            this.context = context;
+        }
+
+        public Object getObject() {
+            try {
+                ResourceLocal bean = (ResourceLocal) context.lookup("OrangeUnitBeanLocal");
+                return bean.getEntityManager();
+            } catch (NamingException e) {
+                throw new RuntimeException(e);
+            }
+        }
+
+        public Class getObjectType(){
+            return EntityManager.class;
+        }
+
+        boolean isSingleton() {
+            return true;
+        }
+    }
+
+The factory bean would then be declared in your spring xml file as follows:
+
+
+    <bean id="OrangeUnit" class="org.acme.OrangeUnitFactoryBean">
+      <property name="context" ref="OpenEjbContext">
+    </bean>
+
+The EntityManager can then easily be consumed by a spring bean.
+
+    public class SomePojo {
+
+        private EntityManager entityManager;
+
+        public void setEntityManager(EntityManager entityManager) {
+            this.entityManager = entityManager;
+        }
+
+        ...
+    }
+
+In the spring xml
+
+    <bean id="SomePojo" class="org.acme.SomePojo">
+      <property name="entityManager" ref="OrangeUnit">
+    </bean>
+
+Here's what all three declarations would look like together in your spring xml:
+
+Spring bean definitions combined
+
+    <bean id="OpenEjbContext" class="org.acme.OpenEjbFactoryBean">
+      <property name="jndiEnvironment">
+        <props>
+          <prop key="myDs">new://Resource?type=DataSource</prop>
+          <prop key="myDs.JdbcDriver">com.mysql.jdbc.Driver</prop>
+          <prop key="myDs.JdbcUrl">jdbc:mysql://localhost/midastest?createDatabaseIfNotExist=true</prop>
+          <prop key="myDs.UserName">root</prop>
+          <prop key="myDs.Password"></prop>
+        </props>
+      </property>
+    </bean>
+
+    <bean id="OrangeUnit" class="org.acme.OrangeUnitFactoryBean">
+      <property name="context" ref="OpenEjbContext">
+    </bean>
+
+    <bean id="SomePojo" class="org.acme.SomePojo">
+      <property name="entityManager" ref="OrangeUnit">
+    </bean>
+
+{info:title=Some more useful info.}
+Here is a bunch of links suggested by a user. If anybody has time to go through them and write a doc, that would be great. These links explain how to make available spring components to openejb
+http://twasink.net/blog/archives/2007/01/using_spring_wi.html
+http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/ejb/interceptor/SpringBeanAutowiringInterceptor.html
+http://wiki.netbeans.org/MavenSpringEJBsOnGlassfish
+
+{info} 
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/spring-ejb-and-jpa.mdtext
----------------------------------------------------------------------
diff --git a/docs/spring-ejb-and-jpa.mdtext b/docs/spring-ejb-and-jpa.mdtext
new file mode 100644
index 0000000..eeb27e4
--- /dev/null
+++ b/docs/spring-ejb-and-jpa.mdtext
@@ -0,0 +1,170 @@
+Title: Spring EJB and JPA
+{note}OpenEJB 3.1 or later required{note}
+This example shows how to combine Spring, OpenEJB and Hibernate using the
+integration code provided by OpenEJB.  Here, OpenEJB is used as an
+embeddable EJB container inside of Spring.  See the [Spring](spring.html)
+ page for details.
+
+We use the basic Movie example and expand it to include more objects to
+demonstrate both Spring beans, EJB Session beans, and JPA persistent
+objects in one application.  The premise of the example is a Cineplex that
+has a number of Theaters (viewing screens), each playing a number of
+Movies.  The basic object layout is as follows:
+
+<table>
+<tr><th> Object </th><th> Type </th><th> Description </th></tr>
+<tr><td> [CineplexImpl](http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/spring-integration/src/main/java/org/superbiz/spring/CineplexImpl.java)
+ </td><td> @Stateless </td><td> Shows the use of @Resource to have Spring beans injected.
+Specifically, the _Theaters_ Spring bean </td></tr>
+<tr><td> [Theaters](http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/spring-integration/src/main/java/org/superbiz/spring/Theaters.java)
+ </td><td> Spring bean </td><td> Simple wrapper object injected into _CineplexImpl_ </td></tr>
+<tr><td> [Theater](http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/spring-integration/src/main/java/org/superbiz/spring/Theater.java)
+ </td><td> Spring bean </td><td> Shows that EJBs can be injected into Spring beans.  Uses
+both the _Movies_ EJB and the _Movie_ JPA objects </td></tr>
+<tr><td> [MoviesImpl](http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/spring-integration/src/main/java/org/superbiz/spring/MoviesImpl.java)
+ </td><td> @Stateful </td><td> Wraps a JPA EntityManager and provides transactional access
+to the persistent _Movie_ objects </td></tr>
+<tr><td> [Movie](http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/spring-integration/src/main/java/org/superbiz/spring/Movie.java)
+ </td><td> @Entity </td><td> Basic JPA bean that is used both by Spring beans and EJBs. 
+The same _Movie_ object as in all the other persistence related examples. </td></tr>
+<tr><td> [AvailableMovies](http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/spring-integration/src/main/java/org/superbiz/spring/AvailableMovies.java)
+ </td><td> Spring bean </td><td> Simple object used as a clever way to seed the
+EntityManager (and really, the database) with persistent _Movie_ objects </td></tr>
+</table>
+
+<a name="SpringEJBandJPA-Requiredjars"></a>
+# Required jars
+
+To setup the integration you'll need:
+
+1. The standard OpenEJB 3.1 libraries
+1. The [openejb-spring-3.1.jar](https://repository.apache.org/content/groups/public/org/apache/openejb/openejb-spring/3.1.2/openejb-spring-3.1.2.jar)
+ or later
+1. Spring 2.5 or other (any version should work)
+
+In Maven2 this can be done by adding the following dependencies to your
+pom.xml
+{snippet:id=required|url=openejb3/examples/spring-integration/pom.xml|lang=xml}
+For other environments, you can simply [download an openejb-3.1.zip](downloads.html)
+ or later and include all the jars under the lib/ directory in your
+classpath.  Then download and add the [openejb-spring-3.1.jar|http://people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/openejb/openejb-spring/3.1/openejb-spring-3.1.jar]
+ along with your Spring jars.
+
+<a name="SpringEJBandJPA-TheSpringxml"></a>
+# The Spring xml
+
+Bootstrapping and Configuring OpenEJB is fairly simple.
+{snippet:id=bootstrapping|url=openejb3/examples/spring-integration/src/main/resources/movies.xml|lang=xml}
+As well, you can optionally declare any resources or containers.  Anything
+declarable as a <Resource> or <Container> in the openejb.xml can instead be
+declared in the Spring xml file as shown here.
+{snippet:id=resources|url=openejb3/examples/spring-integration/src/main/resources/movies.xml|lang=xml}
+And finally our Spring beans.
+{snippet:id=pojos|url=openejb3/examples/spring-integration/src/main/resources/movies.xml|lang=xml}
+{note:title=Don't forget}
+{snippet:id=annotations|url=openejb3/examples/spring-integration/src/main/resources/movies.xml|lang=xml}
+It allows various annotations to be detected in bean classes: Spring's
+@Required and @Autowired, as well as JSR 250's @PostConstruct, @PreDestroy
+and @Resource (if available), JAX-WS's	@WebServiceRef (if available),
+EJB3's @EJB (if available), and JPA's @PersistenceContext and
+@PersistenceUnit (if available). Alternatively, you may choose to activate
+the individual BeanPostProcessors for those annotations.
+{note}
+
+<a name="SpringEJBandJPA-TheCode"></a>
+# The Code
+
+In efforts to keep the example page somewhat short, we'll show just three
+beans, each demonstrating a particular relationship.
+
+The first is the CineplexImpl EJB which shows EJB \-> Spring.
+{snippet:id=code|url=openejb3/examples/spring-integration/src/main/java/org/superbiz/spring/CineplexImpl.java|lang=java}
+
+The second is the Theater Spring bean which shows Spring \-> EJB.
+{snippet:id=code|url=openejb3/examples/spring-integration/src/main/java/org/superbiz/spring/Theater.java|lang=java}
+
+The last is the AvailableMovies Spring bean which Shows Spring \-> EJB \->
+JPA
+{snippet:id=code|url=openejb3/examples/spring-integration/src/main/java/org/superbiz/spring/AvailableMovies.java|lang=java}
+
+<a name="SpringEJBandJPA-TheTestCase"></a>
+# The TestCase
+
+The JUnit TestCase uses a ClassPathXmlApplicationContext to load the Spring
+ApplicationContext.  Anything that loads your Spring xml file should work
+fine.  The following code would work a plain java app as well.
+
+{snippet:id=code|url=openejb3/examples/spring-integration/src/test/java/org/superbiz/spring/MoviesTest.java|lang=java}
+
+<a name="SpringEJBandJPA-Running"></a>
+# Running
+
+The source for this example can be downloaded from svn via:
+
+$ svn co [http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/spring-integration](http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/spring-integration)
+
+Then, in the "spring-integration" directory, run:
+
+$ mvn clean install
+
+Which should create output like the following.
+
+
+    -------------------------------------------------------
+     T E S T S
+    -------------------------------------------------------
+    Running org.superbiz.spring.MoviesTest
+    log4j:WARN No appenders could be found for logger
+(org.springframework.context.support.ClassPathXmlApplicationContext).
+    log4j:WARN Please initialize the log4j system properly.
+    Apache OpenEJB 3.1    build: 20081009-03:31
+    http://tomee.apache.org/
+    INFO - openejb.home =
+/Users/dblevins/work/openejb3/examples/spring-integration
+    INFO - openejb.base =
+/Users/dblevins/work/openejb3/examples/spring-integration
+    INFO - Configuring Service(id=Default JDK 1.3 ProxyFactory,
+type=ProxyFactory, provider-id=Default JDK 1.3 ProxyFactory)
+    INFO - Configuring Service(id=MovieDatabase, type=Resource,
+provider-id=Default JDBC Database)
+    INFO - Configuring Service(id=MovieDatabaseUnmanaged, type=Resource,
+provider-id=Default JDBC Database)
+    INFO - Found EjbModule in classpath:
+/Users/dblevins/work/openejb3/examples/spring-integration/target/classes
+    INFO - Beginning load:
+/Users/dblevins/work/openejb3/examples/spring-integration/target/classes
+    INFO - Configuring enterprise application: classpath.ear
+    INFO - Configuring Service(id=Default Stateless Container, type=Container,
+provider-id=Default Stateless Container)
+    INFO - Auto-creating a container for bean CineplexImpl:
+Container(type=STATELESS, id=Default Stateless Container)
+    INFO - Auto-linking resource-ref
+'org.superbiz.spring.CineplexImpl/theaters' in bean CineplexImpl to
+Resource(id=theaters)
+    INFO - Configuring Service(id=Default Stateful Container, type=Container,
+provider-id=Default Stateful Container)
+    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL,
+id=Default Stateful Container)
+    INFO - Configuring PersistenceUnit(name=movie-unit,
+provider=org.hibernate.ejb.HibernatePersistence)
+    INFO - Enterprise application "classpath.ear" loaded.
+    INFO - Assembling app: classpath.ear
+    INFO - PersistenceUnit(name=movie-unit,
+provider=org.hibernate.ejb.HibernatePersistence)
+    INFO - Jndi(name=CineplexImplLocal) --> Ejb(deployment-id=CineplexImpl)
+    INFO - Jndi(name=MoviesLocal) --> Ejb(deployment-id=Movies)
+    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default
+Stateful Container)
+    INFO - Created Ejb(deployment-id=CineplexImpl, ejb-name=CineplexImpl,
+container=Default Stateless Container)
+    INFO - Deployed Application(path=classpath.ear)
+    INFO - Exported EJB Movies with interface org.superbiz.spring.Movies to
+Spring bean MoviesLocal
+    INFO - Exported EJB CineplexImpl with interface
+org.superbiz.spring.Cineplex to Spring bean CineplexImplLocal
+    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.141 sec
+    
+    Results :
+    
+    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/spring.mdtext
----------------------------------------------------------------------
diff --git a/docs/spring.mdtext b/docs/spring.mdtext
new file mode 100644
index 0000000..e6bc4c7
--- /dev/null
+++ b/docs/spring.mdtext
@@ -0,0 +1,121 @@
+Title: Spring
+{note}
+This document and the related feature is considered a prototype and will
+change based on user feedback.	All comments suggestions welcome.
+{note}
+
+<a name="Spring-Introduction"></a>
+# Introduction
+
+The OpenEJB Spring integration makes all Spring defined beans injectable to
+Java EE components, and all Java EE components can be injected to Spring beans. 
+The injection system supports arbitrarily complex nesting (e.g., Spring
+bean injected into a Java EE component, which is then injected into another
+Spring bean), including:
+
+ * @Resouce injection of any Spring bean into EJB
+ * Injection of any Java EE resource into a Spring bean, including:
+   ** EJB 3.0 beans
+   ** EJB 3.1 Singleton Bean
+   ** JDBC Connector
+   ** JMS Connector
+   ** JMS Queue and Topic
+   ** Generic Java EE Connector (JCA)
+
+In addition, the OpenEJB Spring integration add support for discovery and
+deployment of standard Java EE packages within a Spring context, including:
+
+ * EAR
+ * EJB Jar
+ * Persistence Unit
+ * RAR 
+
+*Requirements:*
+ * OpenEJB 3.1+
+ * Spring X.X
+ * Java 1.5 or 1.6
+
+<a name="Spring-SpringBeans"></a>
+#  Spring Beans
+
+The following beans are usable in any spring xml file.
+
+<table>
+<tr><th> Class </th><th> Description </th></tr>
+<tr><td> org.apache.openejb.spring.ClassPathApplication </td><td> Scrapes the classpath
+for all EJB, RAR, and Persistence applications, deploys them, and imports
+them into the current ApplicationContext.  All applications found are
+treated as one big EAR unless the _classpathAsEar_ property is set to
+_false_ </td></tr>
+<tr><td> org.apache.openejb.spring.Application </td><td> Scrapes an individual jar file
+for EJB, RAR, and Persistence applications, deploys them, and imports them
+into the current ApplicationContext.  The 'jarFile' property is required. 
+The application is treated as it's own self-contained EAR, separate from
+other uses of 'Application' </td></tr>
+<tr><td> org.apache.openejb.spring.Resource </td><td> Allows an OpenEJB <Resource> to be
+declared in the Spring ApplicationContext </td></tr>
+<tr><td> org.apache.openejb.spring.OpenEJBResource </td><td> A FactoryBean that imports a
+Resource from OpenEJB into the Spring ApplicationContext.  Has the
+following properties: _type_ such as javax.sql.DataSource, and
+_resourceId_.  In the future this bean will not be required and all OpenEJB
+Resources will automatically be imported into the Spring ApplicationContext
+</td></tr>
+<tr><td> org.apache.openejb.spring.BmpContainer </td><td> Allows an OpenEJB BMP
+<Container> to be declared in the Spring ApplicationContext.  Has the
+following properties: _poolSize_ </td></tr>
+<tr><td> org.apache.openejb.spring.CmpContainer </td><td> Allows an OpenEJB CMP
+<Container> to be declared in the Spring ApplicationContext. </td></tr>
+<tr><td> org.apache.openejb.spring.SingletonContainer </td><td> Allows an OpenEJB
+Singleton <Container> to be declared in the Spring ApplicationContext.	Has
+the following properties: _accessTimeout_ </td></tr>
+<tr><td> org.apache.openejb.spring.StatefulContainer </td><td> Allows an OpenEJB Stateful
+<Container> to be declared in the Spring ApplicationContext.  Has the
+following properties: _timeOut_</td></tr>
+<tr><td> org.apache.openejb.spring.StatelessContainer </td><td> Allows an OpenEJB Stateful
+<Container> to be declared in the Spring ApplicationContext.  Has the
+following properties: _timeOut_, _poolSize_, and _strictPooling_ </td></tr>
+<tr><td> org.apache.openejb.spring.MdbContainer </td><td> Allows an OpenEJB Message-Driven
+<Container> to be declared in the Spring ApplicationContext.  Has the
+following properties: _resourceAdapter_, _messageListenerInterface_,
+_activationSpecClass_, and _instanceLimit_ </td></tr>
+<tr><td> org.apache.openejb.spring.EJB </td><td> A FactoryBean that imports an EJB from
+OpenEJB into the Spring ApplicationContext.  One of these is automatically
+created for each interface of each EJB, but explicit use can be nice if you
+desire to import an EJB with a specific name.  Has the following
+properties: _deploymentId_, _interface_ </td></tr>
+</table>
+
+<a name="Spring-Examples"></a>
+# Examples
+
+See the [Spring EJB and JPA](spring-ejb-and-jpa.html)
+ page for example code and a working Spring xml file.
+
+<a name="Spring-{anchor:problems}Problems?"></a>
+# {anchor:problems} Problems?
+
+If you are having problems with the installation, please send a message to
+the OpenEJB users [mailing list](mailing-lists.html)
+ containing any error message(s) and the following information:
+
+* OpenEJB Version
+* Spring Version
+* Java Version (execute java -version)
+* Operating System Type and Version
+
+<a name="Spring-Limitations"></a>
+# Limitations
+
+ *JavaAgent* - OpenEJB uses OpenJPA to provide JPA and CMP persistence, and
+OpenJPA currently requires a JavaAgent to function properly in a Java 1.5
+environment.  OpenJPA does not require a JavaAgent in Java 1.6.  Use
+Hibernate as your the provider in your persistence.xml files if you wish to
+avoid this requirement.
+
+ *EntityManager* - Having an OpenEJB created EntityManager or
+EntityManagerFactory injected into Spring beans is currently not supported.
+ This will be added to the next release.  A small workaround for this is to
+use an EJB as a factory by adding a 'getEntityManager' method an using it
+as a [Spring instance factory method](http://static.springframework.org/spring/docs/2.5.x/reference/beans.html#beans-factory-class-instance-factory-method)
+.
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/ssh.mdtext
----------------------------------------------------------------------
diff --git a/docs/ssh.mdtext b/docs/ssh.mdtext
new file mode 100644
index 0000000..998ad1b
--- /dev/null
+++ b/docs/ssh.mdtext
@@ -0,0 +1,48 @@
+Title: SSH
+
+# Connecting To OpenEJB or TomEE Through SSH
+## Description
+
+It can be very useful to connect to the server to get some informations.
+
+## Solution
+
+For such a case OpenEJB/TomEE proposes to start with the Java EE server a SSH server. Currently the security
+is based on JAAS (see how to configure JAAS for TomEE for more information about it).
+
+## Installation
+
+Simply extract the openejb-ssh jar in the lib of tomee (webapps/tomee/lib) or openejb libs (lib folder).
+Then simply connect using your JAAS credential.
+
+Note: you can use the provisioning features of openejb to do this job!
+
+Then simply activate the service manage: it is done setting the system property
+openejb.servicemanager.enabled to true.
+
+Note: it can be done through the conf/system.properties file.
+Note2: please take care to not add space after true (not 'true ' for instance).
+
+## OpenEJB SSH Shell
+
+Once you are connected you get some commands:
+
+* deploy <path>: deploy an application
+* undeploy <path>: undeploy an application
+* list: list deployed EJBs
+* classloader <app id>: print the classloader tree of the app specified by the id
+* jmx <operation> <options>: interact with JMX
+** jmx list: list mbeans
+** jmx get <attribute> <objectname>
+** jmx set <attribute> <objectname> <new value>
+** jmx invoke <methodname>([<arg1>, ...) <objectname>
+* properties: print server configuration as properties
+* script <language> <script code>: execute the following script code using the following language with the JSR 223
+* script file <script file>: execute the following script using the language (from the extension of the file) with the JSR 223
+* ls [<path>]: list the file in path is specified or in the base of the server if not
+* cat <path>: print a file
+* part <start>-<end> <path>: print the part of a file 
+
+Note1: JSR 223 can need to add some jar to openejb/tomee lib folder (groovy-all for instance to use groovy)
+Note2: ls, part, cat commands have to use $home and $base properties to specified the path
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/standalone-server.mdtext
----------------------------------------------------------------------
diff --git a/docs/standalone-server.mdtext b/docs/standalone-server.mdtext
new file mode 100644
index 0000000..4eee836
--- /dev/null
+++ b/docs/standalone-server.mdtext
@@ -0,0 +1,23 @@
+Title:
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+#Links to guide you through OpenEJB-Standalone-Server
+
+- [Startup](startup.html)
+- [Deploy Tool](deploy-tool.html)
+- [Properties Tool](properties-tool.html)

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/startup.mdtext
----------------------------------------------------------------------
diff --git a/docs/startup.mdtext b/docs/startup.mdtext
new file mode 100644
index 0000000..a258232
--- /dev/null
+++ b/docs/startup.mdtext
@@ -0,0 +1,293 @@
+Title: Startup
+<a name="Startup-NAME"></a>
+# NAME
+
+openejb start - OpenEJB Remote Server
+
+<a name="Startup-SYNOPSIS"></a>
+# SYNOPSIS
+
+openejb start [#options](#options.html)
+
+<a name="Startup-NOTE"></a>
+# NOTE
+
+The OpenEJB Remote Server can be started by running the openejb.bat script
+for windows and the openejb script for Linux and other Unix based OSes.
+Before running these scripts you need to set the environment variable
+_OPENEJB_HOME_ to the path of the directory where you unpacked the OpenEJB
+installation. 
+
+From now on we will refer to this directory as <OPENEJB_HOME> and assume
+that you unpacked OpenEJB into the directory *C:\openejb-3.0* The startup
+scripts are present in the <OPENEJB_HOME>/bin directory. You can set this
+directory in the system _PATH_ for starting openejb from the command shell. 
+ 
+In Windows, the remote server can be executed as follows:
+
+*C:\openejb-3.0> bin\openejb start*
+
+In UNIX, Linux, or Mac OS X, the deploy tool can be executed as follows:
+
+`\[user@host openejb-3.0](user@host-openejb-3.0.html)
+# ./bin/openejb start`
+
+Depending on your OpenEJB version, you may need to change execution bits to
+make the scripts executable. You can do this with the following command.
+
+`\[user@host openejb-3.0](user@host-openejb-3.0.html)
+# chmod 755 bin/openejb`
+
+From here on out, it will be assumed that you know how to execute the right
+openejb script for your operating system and commands will appear in
+shorthand as show below.
+
+*openejb start -help*
+
+<a name="Startup-DESCRIPTION"></a>
+# DESCRIPTION
+
+Starts OpenEJB as an EJB Server that can be accessed by remote clients via
+the OpenEJB Remote Server.
+
+ALWAYS check your openejb.log file for warnings immediately after starting
+the Remote Server.
+
+OpenEJB issues warnings when it works around a potential problem,
+encounters something it didn't expect, or when OpenEJB wants to let you
+know something may not work as you expected it.
+
+OpenEJB itself is configured with the OpenEJB configuration file, which is
+extremely simple and self-documenting. This file is located at
+c:\openejb-3.0\conf\openejb.xml.
+
+<a name="Startup-OPTIONS"></a>
+# OPTIONS
+
+ |  _-D<name>=<value>_		 |     Specifies a system property passed
+into OpenEJB at startup. |
+ |  _--admin-bind <host>_	 |     Sets the host to which the admin
+service should be bound.|
+ |  _--admin-port <int>_	 |     Sets the port to which the admin
+service should be bound.|
+ |  _--conf <file>_		 |     Sets the OpenEJB configuration to
+the specified file. |
+ |  _--ejbd-bind <host>_	 |     Sets the host to which the ejbd
+service should be bound. |
+ |  _--ejbd-port <int>_ 	 |     Sets the port to which the ejbd
+service should be bound. |  
+ |  _--examples_		 |     Show examples of how to use the
+options. |
+ |  -h, --_help_		 |     Print this help message. |
+ |  _--hsql-bind <host>_	 |     Sets the host to which the hsql
+service should be bound.|
+ |  _--hsql-port <int>_ 	 |     Sets the port to which the hsql
+service should be bound.|
+ |  _--httpejbd-bind <host>_	 |     Sets the host to which the httpejbd
+service should be bound.| 
+ |  _--httpejbd-port <int>_	 |     Sets the port to which the httpejbd
+service should be bound.| 
+ |  _--local-copy <boolean>_	 |     Instructs the container system to
+marshal (ie, copy) all calls between beans.  |
+ |  _--telnet-bind <host>_	 |     Sets the host to which the telnet
+service should be bound.|
+ |  _--telnet-port <int>_	 |     Sets the port to which the telnet
+service should be bound.|
+ |  -v, --_version_		 |     Print the version.  |
+
+<a name="Startup-EXAMPLES"></a>
+# EXAMPLES
+
+<a name="Startup-Example:Simplestscenario"></a>
+## Example: Simplest scenario
+
+*openejb start*
+
+That's it. The ejbd will start up and bind to IP 127.0.0.1 and port 4201.
+
+The following properties would then be used to get an InitialContext from
+the Remote Server.
+
+
+    java.naming.factory.initial	 =
+org.apache.openejb.client.RemoteInitialContextFactory
+       java.naming.provider.url	    = ejbd://127.0.0.1:4201
+       java.naming.security.principal   = myuser
+       java.naming.security.credentials = mypass
+
+
+<a name="Startup-Example:--conf=file"></a>
+## Example: --conf=file
+
+*openejb start --conf=C:\openejb-3.0\conf\mytest.conf*
+
+ Sets the openejb.configuration system variable to the file
+*C:\openejb\conf\mytest.conf*.  When the server starts up and initializes
+OpenEJB, this configuration will be used to assemble the container system
+and load beans.
+
+<a name="Startup-Example:--local-copy"></a>
+## Example: --local-copy
+
+The local-copy option controls whether Remote interface arguments and
+results are always copied. 
+
+*openejb start --local-copy=true* (default)
+
+Remote interface business method arguments and results are always copied
+(via serialization), which is compliant with the EJB standard. 
+
+*openejb start --local-copy=false*
+
+Remote interface business method arguments and results are copied only when
+the client is in a different JVM. Otherwise, they are passed by reference -
+as if it were a Local interface. This is faster, of course, but
+non-compliant with the EJB standard. 
+
+Local interfaces are not affected; their arguments and results are passed
+by reference and never copied. 
+
+<a name="Startup-CONFIGOVERRIDEEXAMPLES"></a>
+## CONFIG OVERRIDE EXAMPLES
+
+<a name="Startup-Example:-D<service>.bind=<address>"></a>
+## Example: -D<service>.bind=<address>
+
+ *openejb start -Dejbd.bind=10.45.67.8*
+
+ This is the most common way to use the EJBd Server Service.  The service
+will start up and bind to IP 10.45.67.8 and port 4201. The following
+properties would then be used to get an InitialContext from the EJBd Server
+Service.
+
+
+       java.naming.factory.initial	    =
+org.apache.openejb.client.RemoteInitialContextFactory
+       java.naming.provider.url	    = ejbd://10.45.67.8:4201
+       java.naming.security.principal   = myuser
+       java.naming.security.credentials = mypass
+
+
+ DNS names can also be used.
+
+ *openejb start -Dejbd.bind=myhost.foo.com*
+
+ The following properties would then be used to get an InitialContext from
+the Remote Server.
+
+
+       java.naming.factory.initial	    =
+org.apache.openejb.client.RemoteInitialContextFactory
+       java.naming.provider.url	    = ejbd://myhost.foo.com:4201
+       java.naming.security.principal   = myuser
+       java.naming.security.credentials = mypass
+
+
+ *openejb start -Dtelnet.bind=myhost.foo.com*
+
+ The following properties would then be used to log into the server via a
+telnet client as such:
+
+   *telnet myhost.foo.com 4202*
+
+
+<a name="Startup-Example:-D<service>.port=<port>"></a>
+## Example: -D<service>.port=<port>
+
+ *openejb start -Dejbd.port=8765*
+
+ The server will start up and bind to IP 127.0.0.1 and port 8765.
+
+ The following properties would then be used to get an InitialContext from
+the Remote Server.
+
+
+       java.naming.factory.initial	    =
+org.apache.openejb.client.RemoteInitialContextFactory
+       java.naming.provider.url	    = ejbd://127.0.0.1:8765
+       java.naming.security.principal   = myuser
+       java.naming.security.credentials = mypass
+
+
+ *openejb start -Dhttpejbd.port=8888*
+
+ The server will start up and the EJB over HTTP service will bind to IP
+127.0.0.1 and port 8888.
+
+ The following properties would then be used to get an InitialContext from
+the HTTP/Remote Server.
+
+
+       java.naming.factory.initial	    =
+org.apache.openejb.client.RemoteInitialContextFactory
+       java.naming.provider.url	    = http://127.0.0.1:8888/openejb
+       java.naming.security.principal   = myuser
+       java.naming.security.credentials = mypass
+
+
+<a name="Startup-Example:-D<service>.only_from=<addresses>"></a>
+## Example: -D<service>.only_from=<addresses>
+
+ *openejb start -Dadmin.only_from=192.168.1.12*
+
+ Adds 192.168.1.12 to the list of IP addresses that are authorized to
+shutdown the server or access the server
+ via a telnet client.  The host that this server was started on is always
+allowed to administer the server.
+
+ Multiple hosts can be given administrative access to this server by
+listing all the host names separated
+ by commas as such:
+
+ *openejb start -Dadmin.only_from=192.168.1.12,joe.foo.com,robert*
+
+ The first host in the string names the host explicitly using an IP address
+(192.168.1.12).
+
+ The second host uses a DNS name (joe.foo.com) to refer to the hosts IP
+address.  The DNS name will be resolved and the IP will be added to the
+admin list.
+
+ The third address refers to a the host by a name (robert)that the
+opperating system is able to resolve into a valid IP address.  This is
+usually done via a hosts file, interal DNS server, or Windows Domain
+Server.
+
+<a name="Startup-Example:-D<service>.threads=<max>"></a>
+## Example: -D<service>.threads=<max>
+
+ *openejb start -Dejbd.threads=200*
+
+ Sets the max number of concurrent threads that can enter the EJBd Server
+Service to 200.
+
+<a name="Startup-Example:-D<service>.disabled=<true/false>"></a>
+## Example: -D<service>.disabled=<true/false>
+
+ *openejb start -Dtelnet.disabled=true*
+
+ Prevents the Telnet Server Service from starting when the OpenEJB Server
+starts.
+
+<a name="Startup-CONSOLEOUTPUT"></a>
+# CONSOLE OUTPUT
+
+Once you start OpenEJB using the *openejb start* command the following
+output will be seen on the console 
+
+
+    Apache OpenEJB 3.0    build: 20070825-01:10
+    http://tomee.apache.org/
+    OpenEJB ready.
+    [OPENEJB:init]
+ OpenEJB Remote Server
+      ** Starting Services **
+      NAME		       IP	       PORT
+      httpejbd	       0.0.0.0	       4204
+      telnet	       0.0.0.0	       4202
+      ejbd		       0.0.0.0	       4201
+      hsql		       0.0.0.0	       9001
+      admin thread	       0.0.0.0	       4200
+    -------
+    Ready!
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/statefulcontainer-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/statefulcontainer-config.mdtext b/docs/statefulcontainer-config.mdtext
new file mode 100644
index 0000000..d823619
--- /dev/null
+++ b/docs/statefulcontainer-config.mdtext
@@ -0,0 +1,157 @@
+Title: StatefulContainer Configuration
+
+
+A StatefulContainer can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <Container id="myStatefulContainer" type="STATEFUL">
+        accessTimeout = 30 seconds
+        bulkPassivate = 100
+        cache = org.apache.openejb.core.stateful.SimpleCache
+        capacity = 1000
+        frequency = 60
+        passivator = org.apache.openejb.core.stateful.SimplePassivater
+        timeOut = 20
+    </Container>
+
+Alternatively, a StatefulContainer can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    myStatefulContainer = new://Container?type=STATEFUL
+    myStatefulContainer.accessTimeout = 30 seconds
+    myStatefulContainer.bulkPassivate = 100
+    myStatefulContainer.cache = org.apache.openejb.core.stateful.SimpleCache
+    myStatefulContainer.capacity = 1000
+    myStatefulContainer.frequency = 60
+    myStatefulContainer.passivator = org.apache.openejb.core.stateful.SimplePassivater
+    myStatefulContainer.timeOut = 20
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared StatefulContainer a warning will be logged.  If a StatefulContainer is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple StatefulContainer declarations are allowed.
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+<tr>
+  <td><a href="#accessTimeout">accessTimeout</a></td>
+  <td><a href="configuring-durations.html">time</a></td>
+  <td>30&nbsp;seconds</td>
+  <td>
+Specifies the maximum time an invocation could wait for the
+`@Stateful` bean instance to become available before giving up.
+</td>
+</tr>
+<tr>
+  <td>bulkPassivate</td>
+  <td>int</td>
+  <td>100</td>
+  <td>
+Property name that specifies the number of instances
+to passivate at one time when doing bulk passivation.
+</td>
+</tr>
+<tr>
+  <td>cache</td>
+  <td>String</td>
+  <td>org.apache.openejb.core.stateful.SimpleCache</td>
+  <td>
+The cache is responsible for managing stateful bean
+instances.  The cache can page instances to disk as memory
+is filled and can destroy abandoned instances.  A different
+cache implementation can be used by setting this property
+to the fully qualified class name of the Cache implementation.
+</td>
+</tr>
+<tr>
+  <td>capacity</td>
+  <td>int</td>
+  <td>1000</td>
+  <td>
+Specifies the size of the bean pools for this
+stateful SessionBean container.
+</td>
+</tr>
+<tr>
+  <td>frequency</td>
+  <td>int</td>
+  <td>60</td>
+  <td>
+Specifies the frequency (in seconds) at which the bean cache is checked for 
+idle beans.
+</td>
+</tr>
+<tr>
+  <td><a href="#passivator">passivator</a></td>
+  <td>String</td>
+  <td>org.apache.openejb.core.stateful.SimplePassivater</td>
+  <td>
+The passivator is responsible for writing beans to disk
+at passivation time. Different passivators can be used
+by setting this property to the fully qualified class name
+of the `PassivationStrategy` implementation. The passivator
+is not responsible for invoking any callbacks or other
+processing, its only responsibly is to write the bean state
+to disk.
+</td>
+</tr>
+<tr>
+  <td><a href="#timeOut">timeOut</a></td>
+  <td><a href="configuring-durations.html">time</a></td>
+  <td>20</td>
+  <td>
+Specifies the time a bean can be idle before it is removed by the container.
+</td>
+</tr>
+</table>
+
+
+
+<a name="accessTimeout"></a>
+## accessTimeout
+
+Specifies the maximum time an invocation could wait for the
+`@Stateful` bean instance to become available before giving up.
+
+After the timeout is reached a `javax.ejb.ConcurrentAccessTimeoutException`
+will be thrown.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+"1 hour and 27 minutes and 10 seconds"
+
+Any usage of the `javax.ejb.AccessTimeout` annotation will
+override this setting for the bean or method where the
+annotation is used.
+
+
+<a name="passivator"></a>
+## passivator
+
+The passivator is responsible for writing beans to disk
+at passivation time. Different passivators can be used
+by setting this property to the fully qualified class name
+of the `PassivationStrategy` implementation. The passivator
+is not responsible for invoking any callbacks or other
+processing, its only responsibly is to write the bean state
+to disk.
+
+Known implementations:
+
+- org.apache.openejb.core.stateful.RAFPassivater
+- org.apache.openejb.core.stateful.SimplePassivater
+
+
+<a name="timeOut"></a>
+## timeOut
+
+Specifies the time a bean can be idle before it is removed by the container.
+
+This value is measured in minutes. A value of 5 would
+result in a time-out of 5 minutes between invocations.
+A value of -1 would mean no timeout.
+A value of 0 would mean a bean can be immediately removed by the container.
+
+Any usage of the `javax.ejb.StatefulTimeout` annotation will
+override this setting for the bean where the annotation is used.
+


[06/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/refcard/css/cypher_main.css
----------------------------------------------------------------------
diff --git a/docs/refcard/css/cypher_main.css b/docs/refcard/css/cypher_main.css
new file mode 100644
index 0000000..0041e71
--- /dev/null
+++ b/docs/refcard/css/cypher_main.css
@@ -0,0 +1,493 @@
+html,body {
+  padding: 0;
+  margin: 0;
+  height: 100%;
+  background-color: #f0f0f0 ! important;
+  min-width: 400px;
+  font-family: "Droid Serif", Georgia, serif;
+}
+
+.col {
+  padding: 0;
+  margin: 0 10px;
+  width: 420px;
+  float: left;
+}
+
+@media screen and (min-width: 2640px) {
+  html,body {
+    font-size: 0.975em;
+  }
+  .mid {
+    margin: 0 auto;
+    width: 2640px;
+  }
+  header img.logo {
+    width: 282px;
+    float: left;
+    margin: 2em 0 0 3%;
+  }
+  header h1 {
+    float: right;
+    padding: 1.5em 3% 0 3%;
+  }
+  header {
+    height: 8em;
+  }
+  .col {
+    float: left;
+    width: 420px;
+    margin: 0 10px;
+    padding: 10px 0;
+  }
+}
+
+@media screen and (min-width: 2210px) and (max-width: 2639px) {
+  html,body {
+    font-size: 0.975em;
+  }
+  .mid {
+    margin: 0 auto;
+    width: 2210px;
+  }
+  header img.logo {
+    width: 282px;
+    float: left;
+    margin: 2em 0 0 3%;
+  }
+  header h1 {
+    float: right;
+    padding: 1.5em 3% 0 3%;
+  }
+  header {
+    height: 8em;
+  }
+  .col {
+    float: left;
+    width: 420px;
+    margin: 0 10px;
+    padding: 10px 0;
+  }
+}
+
+@media screen and (min-width: 1800px) and (max-width: 2209px) {
+  html,body {
+    font-size: 0.975em;
+  }
+  .mid {
+    margin: 0 auto;
+    width: 1800px;
+  }
+  header img.logo {
+    width: 282px;
+    float: left;
+    margin: 2em 0 0 3%;
+  }
+  header h1 {
+    float: right;
+    padding: 1.5em 3% 0 3%;
+  }
+  header {
+    height: 8em;
+  }
+  .col {
+    float: left;
+    width: 420px;
+    margin: 0 10px;
+    padding: 10px 0;
+  }
+}
+
+@media screen and (min-width: 1350px) and (max-width: 1799px) {
+  html,body {
+    font-size: 0.975em;
+  }
+  .mid {
+    margin: 0 auto;
+    width: 1330px;
+  }
+  header img.logo {
+    width: 282px;
+    float: left;
+    margin: 2em 0 0 3%;
+  }
+  header h1 {
+    float: right;
+    padding: 1.5em 3% 0 3%;
+  }
+  header {
+    height: 8em;
+  }
+  .col {
+    float: left;
+    width: 420px;
+    margin: 0 10px;
+    padding: 10px 0;
+  }
+}
+
+@media screen and (min-width: 978px) and (max-width: 1349px) {
+  html,body {
+    font-size: 0.975em;
+  }
+  .mid {
+    margin: 0 auto;
+    width: 90%;
+  }
+  header img.logo {
+    width: 282px;
+    float: left;
+    margin: 2em 0 0 3%;
+  }
+  header h1 {
+    float: right;
+    padding: 1.5em 3% 0 3%;
+  }
+  header {
+    height: 8em;
+  }
+  .col {
+    float: left;
+    width: 420px;
+    margin: 10px;
+  }
+}
+
+@media screen and (min-width: 780px) and (max-width: 977px) {
+  html,body {
+    font-size: 0.95em;
+  }
+  .mid {
+    margin: 0 auto;
+    width: 80%;
+  }
+  header img.logo {
+    width: 282px;
+    float: left;
+    margin: 2em 0 0 3%;
+  }
+  header h1 {
+    float: right;
+    padding: 1.5em 3% 0 3%;
+  }
+  header {
+    height: 8em;
+  }
+  .col {
+    float: left;
+    width: 600px;
+    margin: 0 10px;
+    padding: 10px 0;
+  }
+}
+
+@media screen and (min-width: 521px) and (max-width: 779px) {
+  html,body {
+    font-size: 0.9em;
+  }
+  .mid {
+    margin: 0 auto;
+    width: 93%;
+  }
+  header img.logo {
+    width: 212px;
+    float: left;
+    margin: 2em 0 0 3%;
+  }
+  header h1 {
+    float: right;
+    padding: 1em 3% 0 3%;
+    font-size: 1.5em;
+  }
+  header {
+    height: 7em;
+  }
+  .col {
+    float: left;
+    width: 96%;
+  }
+  .col img {
+    width: 80%;
+  }
+}
+
+@media screen and (max-width: 520px) {
+  html,body {
+    font-size: 0.9em;
+  }
+  .mid {
+    margin: 0;
+    width: 100%;
+  }
+  header img.logo {
+    width: 212px;
+    float: none;
+    margin: 1em 0 0 3%;
+  }
+  header h1 {
+    float: none;
+    padding: 0.25em 3% 0 3%;
+    font-size: 1.3em;
+  }
+  header {
+    height: 8em;
+  }
+  .col {
+    float: none;
+    width: 92%;
+  }
+  .col img {
+    width: 98%;
+  }
+}
+
+@media print {
+  html,body {
+    font-size: 8pt;
+  }
+  footer div.mid {
+    float: right;
+  }
+  table {
+    border: solid 1px #e5e5e5 !important;
+    border-collapse: collapse !important;
+    page-break-inside: avoid;
+  }
+  th {
+    border-bottom: solid 1px #e5e5e5 !important;
+  }
+  .mid {
+    margin: 0;
+    width: 100%;
+  }
+  header img.logo {
+    width: 282px;
+    float: left;
+    margin: 2em 0 0 3%;
+  }
+  header h1 {
+    float: right;
+    padding: 1.5em 3% 0 3%;
+  }
+  header {
+    height: 8em;
+  }
+  body .col {
+    float: left;
+    width: 44%;
+    margin: 0 10px;
+    padding: 5px 0;
+    clear: none;
+  }
+  html,body {
+    background-color: #ffffff !important;
+  }
+  .main .mid {
+    background: none !important;
+    box-shadow: none !important;
+  }
+  .columns {
+    display: none;
+  }
+  div.moved {
+    display: block;
+  }
+  a[href]:after {
+    content: "";
+  }
+  body .syntaxhighlighter a,body .syntaxhighlighter div,body .syntaxhighlighter code,body .syntaxhighlighter table,body .syntaxhighlighter table td,body .syntaxhighlighter table tr,body .syntaxhighlighter table tbody,body .syntaxhighlighter table thead,body .syntaxhighlighter table caption,body .syntaxhighlighter textarea
+    {
+    font-size: 12px !important;
+    line-height: 16px !important;
+  }
+}
+
+@page {
+  size: 8.5in 11in;
+}
+
+.page {
+  margin: 0 0 2em 0;
+  padding: 0 0 3em 0;
+  /*  page-break-after : right;
+  page-break-inside : avoid;*/
+}
+
+header {
+  background: #005a72 url('bg.png');
+  color: #fff;
+  width: 100%;
+  margin: 0;
+  padding: 0;
+}
+
+.main .mid {
+  overflow: visible;
+  -moz-box-shadow: 0 10px 8px 4px #e5e5e5;
+  webkit-box-shadow: 0 10px 8px 4px #e5e5e5;
+  box-shadow: 0 10px 8px 4px #e5e5e5;
+  border-top: none;
+  position: relative;
+  background-color: #fff ! important;
+}
+
+header .mid {
+  background-color: #005a72;
+}
+
+header h1 {
+  margin: 0;
+  font-family: 'Ubuntu', Candara, sans-serif;
+  font-weight: 500;
+}
+
+footer div.mid {
+  padding-bottom: 1em;
+}
+
+.col h3 {
+  font-size: 1.1em;
+  margin-top: 0.5em;
+}
+
+.col h2 {
+  font-size: 1.3em;
+  margin-top: 0;
+  color: #005a72;
+}
+
+.twoCols {
+  width: 88%;
+  float: left;
+  padding: 0 3%;
+  margin: 2% 0 0 0;
+}
+
+.col table {
+  width: 100%;
+  border-spacing: 0;
+  margin: 0;
+  /*table-layout: fixed;*/
+}
+
+.col table.tableblock > tbody > tr:nth-child(even) {
+  background-color: #f5f5f5;
+}
+
+.col tr th {
+  padding: 0.125em 0.125em 0.25em 0.125em;
+  border: none;
+  /*background: #005a72 url('005a72.gif') repeat-x repeat-y top left;*/
+  background: #005a72 url('bg.png');
+  color: #fff;
+  font-family: 'Ubuntu', Candara, serif;
+  font-weight: 500;
+}
+
+/*p.cardread span {
+  color: #ffffff;
+  padding: 2px 4px;
+  border-radius: 4px;
+}*/
+.col tr th:first-child {
+  border-top-left-radius: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -moz-border-top-left-radius: 5px;
+  width: 40%;
+}
+
+.col tr th:last-child {
+  border-top-right-radius: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -moz-border-top-right-radius: 5px;
+  width: 60%;
+}
+
+.col tr td {
+  border-top: none;
+  margin: 0;
+  padding: 0.25em;
+  border-left: 1px solid #e5e5e5;
+  border-right: 1px solid #e5e5e5;
+  border-bottom: 1px solid #e5e5e5;
+}
+
+.col td pre,.blk pre {
+  white-space: nowrap;
+}
+
+.col td pre {
+  padding: 0;
+  margin: 0;
+}
+
+code,em.code,em.tx,span.monospaced {
+  font-family: "Ubuntu Mono", "Courier New", Courier, monospace, serif;
+  font-style: normal;
+  font-size: 14px;
+}
+
+code,span.monospaced {
+  color: #004759;
+}
+
+p.tableblock {
+  font-size: 14px;
+}
+
+em.tx {
+  font-weight: bold;
+}
+
+.twoCols {
+  float: left;
+}
+
+.twoCols p {
+  width: 100%;
+  height: 100%;
+  padding-top: 1%;
+  overflow: auto;
+}
+
+td p {
+  margin-top: 0.1em;
+  margin-bottom: 0.1em;
+}
+
+ul {
+  padding-left: 15px;
+}
+
+#page_1,#page_2,#page_3,#page_4 {
+  /*border: 1px solid red;*/
+  overflow: auto;
+}
+
+.syntaxhighlighter a,.syntaxhighlighter div,.syntaxhighlighter code,.syntaxhighlighter table,.syntaxhighlighter table td,.syntaxhighlighter table tr,.syntaxhighlighter table tbody,.syntaxhighlighter table thead,.syntaxhighlighter table caption,.syntaxhighlighter textarea
+  {
+  font-size: 14px !important;
+  font-family: "Ubuntu Mono", Consolas, Monaco, "Bitstream Vera Sans Mono", monospace !important;
+  line-height: 18px !important;
+}
+
+body .syntaxhighlighter,body .syntaxhighlighter .line.alt2 {
+  background-color: transparent !important;
+}
+
+body .syntaxhighlighter {
+  overflow: visible !important;
+  margin: 0.1em 0 0 0 !important;
+}
+
+body .syntaxhighlighter table td.code .line {
+  padding: 0 !important;
+}
+
+html, body {
+    background-color: #ffffff !important;
+}
+.main .mid {
+    background: none !important;
+    box-shadow: none !important;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/refcard/css/github.min.css
----------------------------------------------------------------------
diff --git a/docs/refcard/css/github.min.css b/docs/refcard/css/github.min.css
new file mode 100644
index 0000000..d292d82
--- /dev/null
+++ b/docs/refcard/css/github.min.css
@@ -0,0 +1,129 @@
+/*
+
+github.com style (c) Vasily Polovnyov <va...@whiteants.net>
+
+*/
+
+pre code {
+  display: block; padding: 0.5em;
+  color: #333;
+  background: #f8f8ff
+}
+
+pre .comment,
+pre .template_comment,
+pre .diff .header,
+pre .javadoc {
+  color: #998;
+  font-style: italic
+}
+
+pre .keyword,
+pre .css .rule .keyword,
+pre .winutils,
+pre .javascript .title,
+pre .nginx .title,
+pre .subst,
+pre .request,
+pre .status {
+  color: #333;
+  font-weight: bold
+}
+
+pre .number,
+pre .hexcolor,
+pre .ruby .constant {
+  color: #099;
+}
+
+pre .string,
+pre .tag .value,
+pre .phpdoc,
+pre .tex .formula {
+  color: #d14
+}
+
+pre .title,
+pre .id,
+pre .coffeescript .params,
+pre .scss .preprocessor {
+  color: #900;
+  font-weight: bold
+}
+
+pre .javascript .title,
+pre .lisp .title,
+pre .clojure .title,
+pre .subst {
+  font-weight: normal
+}
+
+pre .class .title,
+pre .haskell .type,
+pre .vhdl .literal,
+pre .tex .command {
+  color: #458;
+  font-weight: bold
+}
+
+pre .tag,
+pre .tag .title,
+pre .rules .property,
+pre .django .tag .keyword {
+  color: #000080;
+  font-weight: normal
+}
+
+pre .attribute,
+pre .variable,
+pre .lisp .body {
+  color: #008080
+}
+
+pre .regexp {
+  color: #009926
+}
+
+pre .class {
+  color: #458;
+  font-weight: bold
+}
+
+pre .symbol,
+pre .ruby .symbol .string,
+pre .lisp .keyword,
+pre .tex .special,
+pre .prompt {
+  color: #990073
+}
+
+pre .built_in,
+pre .lisp .title,
+pre .clojure .built_in {
+  color: #0086b3
+}
+
+pre .preprocessor,
+pre .pi,
+pre .doctype,
+pre .shebang,
+pre .cdata {
+  color: #999;
+  font-weight: bold
+}
+
+pre .deletion {
+  background: #fdd
+}
+
+pre .addition {
+  background: #dfd
+}
+
+pre .diff .change {
+  background: #0086b3
+}
+
+pre .chunk {
+  color: #aaa
+}

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/refcard/css/refcard.css
----------------------------------------------------------------------
diff --git a/docs/refcard/css/refcard.css b/docs/refcard/css/refcard.css
new file mode 100644
index 0000000..d4a13f1
--- /dev/null
+++ b/docs/refcard/css/refcard.css
@@ -0,0 +1,491 @@
+html,body {
+  padding: 0;
+  margin: 0;
+  height: 100%;
+  background-color: #f0f0f0 ! important;
+  min-width: 400px;
+  font-family: "Droid Serif", Georgia, serif;
+}
+
+p {
+  -webkit-margin-before: 0em;
+  -webkit-margin-after: 0em;
+}
+
+.col {
+  padding: 0;
+  margin: 0 10px;
+  width: 420px;
+  float: left;
+}
+
+@media screen and (min-width: 2640px) {
+  html,body {
+    font-size: 0.975em;
+  }
+  .mid {
+    margin: 0 auto;
+    width: 2640px;
+  }
+  header img.logo {
+    width: 282px;
+    float: left;
+  }
+  header h1 {
+    float: right;
+    padding: 0.5em 3% 0 3%;
+  }
+  header {
+    height: 4em;
+  }
+  .col {
+    float: left;
+    width: 420px;
+    margin: 0 10px;
+    padding: 10px 0;
+  }
+}
+
+@media screen and (min-width: 2210px) and (max-width: 2639px) {
+  html,body {
+    font-size: 0.975em;
+  }
+  .mid {
+    margin: 0 auto;
+    width: 2210px;
+  }
+  header img.logo {
+    width: 282px;
+    float: left;
+  }
+  header h1 {
+    float: right;
+    padding: 0.5em 3% 0 3%;
+  }
+  header {
+    height: 4em;
+  }
+  .col {
+    float: left;
+    width: 420px;
+    margin: 0 10px;
+    padding: 10px 0;
+  }
+}
+
+@media screen and (min-width: 1800px) and (max-width: 2209px) {
+  html,body {
+    font-size: 0.975em;
+  }
+  .mid {
+    margin: 0 auto;
+    width: 1800px;
+  }
+  header img.logo {
+    width: 282px;
+    float: left;
+  }
+  header h1 {
+    float: right;
+    padding: 0.5em 3% 0 3%;
+  }
+  header {
+    height: 4em;
+  }
+  .col {
+    float: left;
+    width: 420px;
+    margin: 0 10px;
+    padding: 10px 0;
+  }
+}
+
+@media screen and (min-width: 1350px) and (max-width: 1799px) {
+  html,body {
+    font-size: 0.975em;
+  }
+  .mid {
+    margin: 0 auto;
+    width: 1330px;
+  }
+  header img.logo {
+    width: 282px;
+    float: left;
+  }
+  header h1 {
+    float: right;
+    padding: 0.5em 3% 0 3%;
+  }
+  header {
+    height: 4em;
+  }
+  .col {
+    float: left;
+    width: 420px;
+    margin: 0 10px;
+    padding: 10px 0;
+  }
+}
+
+@media screen and (min-width: 978px) and (max-width: 1349px) {
+  html,body {
+    font-size: 0.975em;
+  }
+  .mid {
+    margin: 0 auto;
+    width: 90%;
+  }
+  header img.logo {
+    width: 282px;
+    float: left;
+  }
+  header h1 {
+    float: right;
+    padding: 0.5em 3% 0 3%;
+  }
+  header {
+    height: 4em;
+  }
+  .col {
+    float: left;
+    width: 420px;
+    margin: 10px;
+  }
+}
+
+@media screen and (min-width: 780px) and (max-width: 977px) {
+  html,body {
+    font-size: 0.95em;
+  }
+  .mid {
+    margin: 0 auto;
+    width: 80%;
+  }
+  header img.logo {
+    width: 282px;
+    float: left;
+  }
+  header h1 {
+    float: right;
+    padding: 0.5em 3% 0 3%;
+  }
+  header {
+    height: 4em;
+  }
+  .col {
+    float: left;
+    width: 600px;
+    margin: 0 10px;
+    padding: 10px 0;
+  }
+}
+
+@media screen and (min-width: 521px) and (max-width: 779px) {
+  html,body {
+    font-size: 0.9em;
+  }
+  .mid {
+    margin: 0 auto;
+    width: 93%;
+  }
+  header img.logo {
+    height: 4em;
+    float: left;
+  }
+  header h1 {
+    float: right;
+    padding: 1em 3% 0 3%;
+    font-size: 0.5em;
+  }
+  header {
+    height: 7em;
+  }
+  .col {
+    float: left;
+    width: 96%;
+  }
+  .col img {
+    width: 80%;
+  }
+}
+
+@media screen and (max-width: 520px) {
+  html,body {
+    font-size: 0.9em;
+  }
+  .mid {
+    margin: 0;
+    width: 100%;
+  }
+  header img.logo {
+    height: 4em;
+    float: none;
+  }
+  header h1 {
+    float: none;
+    padding: 0.5em 3% 0 3%;
+    font-size: 0.3em;
+  }
+  header {
+    height: 4em;
+  }
+  .col {
+    float: none;
+    width: 92%;
+  }
+  .col img {
+    width: 98%;
+  }
+}
+
+@media print {
+  html,body {
+    font-size: 8pt;
+  }
+  footer div.mid {
+    float: right;
+  }
+  table {
+    border: solid 1px #e5e5e5 !important;
+    border-collapse: collapse !important;
+    page-break-inside: avoid;
+  }
+  th {
+    border-bottom: solid 1px #e5e5e5 !important;
+  }
+  .mid {
+    margin: 0;
+    width: 100%;
+  }
+  header img.logo {
+    width: 282px;
+    float: left;
+  }
+  header h1 {
+    float: right;
+    padding: 0.5em 3% 0 3%;
+  }
+  header {
+    height: 4em;
+  }
+  body .col {
+    float: left;
+    width: 44%;
+    margin: 0 10px;
+    padding: 5px 0;
+    clear: none;
+  }
+  html,body {
+
+  }
+  .main .mid {
+    background: none !important;
+    box-shadow: none !important;
+  }
+  .columns {
+    display: none;
+  }
+  div.moved {
+    display: block;
+  }
+  a[href]:after {
+    content: "";
+  }
+  body .syntaxhighlighter a,body .syntaxhighlighter div,body .syntaxhighlighter code,body .syntaxhighlighter table,body .syntaxhighlighter table td,body .syntaxhighlighter table tr,body .syntaxhighlighter table tbody,body .syntaxhighlighter table thead,body .syntaxhighlighter table caption,body .syntaxhighlighter textarea
+    {
+    font-size: 12px !important;
+    line-height: 16px !important;
+  }
+}
+
+@page {
+  size: 8.5in 11in;
+}
+
+.page {
+  /* margin: 0 0 2em 0;
+  padding: 0 0 3em 0;*/
+  /*  page-break-after : right;
+  page-break-inside : avoid;*/
+}
+
+header {
+  color: #fff;
+  width: 100%;
+  margin: 0;
+  padding: 0;
+}
+
+.main .mid {
+  overflow: visible;
+  -moz-box-shadow: 0 10px 8px 4px #e5e5e5;
+  webkit-box-shadow: 0 10px 8px 4px #e5e5e5;
+  box-shadow: 0 10px 8px 4px #e5e5e5;
+  border-top: none;
+  position: relative;
+  background-color: #fff ! important;
+}
+
+header .mid {
+  background-color: #FF2F39;
+}
+
+header h1 {
+  margin: 0;
+  font-family: 'Ubuntu', Candara, sans-serif;
+  font-weight: 500;
+}
+
+footer div.mid {
+  padding-bottom: 1em;
+}
+
+.col h3 {
+  font-size: 1.1em;
+  margin-top: 0.5em;
+}
+
+.columns-container h2 {
+  font-size: 1.3em;
+  margin-top: 0;
+  color: #FF2F39;
+  text-align: center;
+}
+
+.twoCols {
+  width: 88%;
+  float: left;
+  padding: 0 3%;
+  margin: 2% 0 0 0;
+}
+
+.col table {
+  width: 100%;
+  border-spacing: 0;
+  margin: 0;
+  /*table-layout: fixed;*/
+}
+
+.col table.tableblock > tbody > tr:nth-child(even) {
+  background-color: #f5f5f5;
+}
+
+.col tr th {
+  border: none;
+  background: #ff2f39;
+  color: #fff;
+  font-family: 'Ubuntu', Candara, serif;
+  font-weight: 500;
+}
+
+/*p.cardread span {
+  color: #ffffff;
+  padding: 2px 4px;
+  border-radius: 4px;
+}*/
+.col tr th:first-child {
+  border-top-left-radius: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -moz-border-top-left-radius: 5px;
+  width: 40%;
+}
+
+.col tr th:last-child {
+  border-top-right-radius: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -moz-border-top-right-radius: 5px;
+  width: 60%;
+}
+
+.col tr td {
+  border-top: none;
+  margin: 0;
+  border-left: 1px solid #e5e5e5;
+  border-right: 1px solid #e5e5e5;
+  border-bottom: 1px solid #e5e5e5;
+}
+
+.col td pre {
+  padding: 0;
+  margin: 0;
+}
+
+code,em.code,em.tx,span.monospaced {
+  font-family: "Ubuntu Mono", "Courier New", Courier, monospace, serif;
+  font-style: normal;
+  font-size: 14px;
+}
+
+code,span.monospaced {
+  color: #004759;
+}
+
+p.tableblock {
+  font-size: 14px;
+}
+
+em.tx {
+  font-weight: bold;
+}
+
+.twoCols {
+  float: left;
+}
+
+.twoCols p {
+  width: 100%;
+  height: 100%;
+  padding-top: 1%;
+  overflow: auto;
+}
+
+td p {
+  margin-top: 0.1em;
+  margin-bottom: 0.1em;
+}
+
+ul {
+  padding-left: 15px;
+}
+
+#page_1,#page_2,#page_3,#page_4 {
+  /*border: 1px solid red;*/
+  overflow: auto;
+}
+
+.syntaxhighlighter a,.syntaxhighlighter div,.syntaxhighlighter code,.syntaxhighlighter table,.syntaxhighlighter table td,.syntaxhighlighter table tr,.syntaxhighlighter table tbody,.syntaxhighlighter table thead,.syntaxhighlighter table caption,.syntaxhighlighter textarea
+  {
+  font-size: 14px !important;
+  font-family: "Ubuntu Mono", Consolas, Monaco, "Bitstream Vera Sans Mono", monospace !important;
+  line-height: 18px !important;
+}
+
+body .syntaxhighlighter,body .syntaxhighlighter .line.alt2 {
+  background-color: transparent !important;
+}
+
+body .syntaxhighlighter {
+  overflow: visible !important;
+  margin: 0.1em 0 0 0 !important;
+}
+
+body .syntaxhighlighter table td.code .line {
+  padding: 0 !important;
+}
+
+.col {
+    clear: left;
+}
+.columns {
+    float: left;
+    width: 440px;
+}
+.page {
+    /* float: left; */
+}
+footer div.mid {
+    padding: 1em;
+}
+.moved {
+    display: none;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/refcard/css/style.css
----------------------------------------------------------------------
diff --git a/docs/refcard/css/style.css b/docs/refcard/css/style.css
new file mode 100644
index 0000000..f2e8f65
--- /dev/null
+++ b/docs/refcard/css/style.css
@@ -0,0 +1,102 @@
+/* HTML5 Boilerplate  */
+
+article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; }
+audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; }
+audio:not([controls]) { display: none; }
+[hidden] { display: none; }
+
+html { font-size: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; }
+html, button, input, select, textarea { font-family: sans-serif; color: #222; }
+
+::-moz-selection { background: #fe57a1; color: #fff; text-shadow: none; }
+::selection { background: #fe57a1; color: #fff; text-shadow: none; }
+
+a { color: #00e; }
+a:visited { color: #551a8b; }
+a:hover { color: #06e; }
+a:focus { outline: thin dotted; }
+a:hover, a:active { outline: 0; }
+abbr[title] { border-bottom: 1px dotted; }
+b, strong { font-weight: bold; }
+blockquote { margin: 1em 40px; }
+dfn { font-style: italic; }
+hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; }
+ins { background: #ff9; color: #000; text-decoration: none; }
+mark { background: #ff0; color: #000; font-style: italic; font-weight: bold; }
+pre, code, kbd, samp { font-family: monospace, serif; _font-family: 'courier new', monospace; font-size: 1em; }
+pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; }
+
+q { quotes: none; }
+q:before, q:after { content: ""; content: none; }
+small { font-size: 85%; }
+sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
+sup { top: -0.5em; }
+sub { bottom: -0.25em; }
+
+ul, ol { margin: 1em 0; padding: 0 0 0 40px; }
+dd { margin: 0 0 0 40px; }
+nav ul, nav ol { list-style: none; list-style-image: none; margin: 0; padding: 0; }
+
+img { border: 0; -ms-interpolation-mode: bicubic; vertical-align: middle; }
+svg:not(:root) { overflow: hidden; }
+figure { margin: 0; }
+
+form { margin: 0; }
+fieldset { border: 0; margin: 0; padding: 0; }
+
+label { cursor: pointer; }
+legend { border: 0; *margin-left: -7px; padding: 0; white-space: normal; }
+button, input, select, textarea { font-size: 100%; margin: 0; vertical-align: baseline; *vertical-align: middle; }
+button, input { line-height: normal; }
+button, input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; *overflow: visible; }
+button[disabled], input[disabled] { cursor: default; }
+input[type="checkbox"], input[type="radio"] { box-sizing: border-box; padding: 0; *width: 13px; *height: 13px; }
+input[type="search"] { -webkit-appearance: textfield; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; box-sizing: content-box; }
+input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; }
+button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
+textarea { overflow: auto; vertical-align: top; resize: vertical; }
+input:valid, textarea:valid {  }
+input:invalid, textarea:invalid { background-color: #f0dddd; }
+
+/*table { border-collapse: collapse; border-spacing: 0; }*/
+td { vertical-align: top; }
+
+.chromeframe { margin: 0.2em 0; background: #ccc; color: black; padding: 0.2em 0; }
+
+
+
+
+
+
+
+
+
+@media only screen and (min-width: 35em) {
+  
+
+}
+
+.ir { display: block; border: 0; text-indent: -999em; overflow: hidden; background-color: transparent; background-repeat: no-repeat; text-align: left; direction: ltr; *line-height: 0; }
+.ir br { display: none; }
+.hidden { display: none !important; visibility: hidden; }
+.visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
+.visuallyhidden.focusable:active, .visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; }
+.invisible { visibility: hidden; }
+.clearfix:before, .clearfix:after { content: ""; display: table; }
+.clearfix:after { clear: both; }
+.clearfix { *zoom: 1; }
+
+@media print {
+  * { background: transparent !important; color: black !important; box-shadow:none !important; text-shadow: none !important; filter:none !important; -ms-filter: none !important; } 
+  a, a:visited { text-decoration: underline; }
+  a[href]:after { content: " (" attr(href) ")"; }
+  abbr[title]:after { content: " (" attr(title) ")"; }
+  .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } 
+  pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
+  thead { display: table-header-group; } 
+  tr, img { page-break-inside: avoid; }
+  img { max-width: 100% !important; }
+  @page { margin: 0.5cm; }
+  p, h2, h3 { orphans: 3; widows: 3; }
+  h2, h3 { page-break-after: avoid; }
+}

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/refcard/favicon.ico
----------------------------------------------------------------------
diff --git a/docs/refcard/favicon.ico b/docs/refcard/favicon.ico
new file mode 100644
index 0000000..f0c22ad
Binary files /dev/null and b/docs/refcard/favicon.ico differ

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/refcard/images/github.png
----------------------------------------------------------------------
diff --git a/docs/refcard/images/github.png b/docs/refcard/images/github.png
new file mode 100644
index 0000000..3d1083a
Binary files /dev/null and b/docs/refcard/images/github.png differ

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/refcard/images/tomee.png
----------------------------------------------------------------------
diff --git a/docs/refcard/images/tomee.png b/docs/refcard/images/tomee.png
new file mode 100644
index 0000000..9bd4c8a
Binary files /dev/null and b/docs/refcard/images/tomee.png differ

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/refcard/js/highlight.min.js
----------------------------------------------------------------------
diff --git a/docs/refcard/js/highlight.min.js b/docs/refcard/js/highlight.min.js
new file mode 100644
index 0000000..be2cc09
--- /dev/null
+++ b/docs/refcard/js/highlight.min.js
@@ -0,0 +1 @@
+var hljs=new function(){function l(o){return o.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;")}function b(p){for(var o=p.firstChild;o;o=o.nextSibling){if(o.nodeName=="CODE"){return o}if(!(o.nodeType==3&&o.nodeValue.match(/\s+/))){break}}}function h(p,o){return Array.prototype.map.call(p.childNodes,function(q){if(q.nodeType==3){return o?q.nodeValue.replace(/\n/g,""):q.nodeValue}if(q.nodeName=="BR"){return"\n"}return h(q,o)}).join("")}function a(q){var p=(q.className+" "+q.parentNode.className).split(/\s+/);p=p.map(function(r){return r.replace(/^language-/,"")});for(var o=0;o<p.length;o++){if(e[p[o]]||p[o]=="no-highlight"){return p[o]}}}function c(q){var o=[];(function p(r,s){for(var t=r.firstChild;t;t=t.nextSibling){if(t.nodeType==3){s+=t.nodeValue.length}else{if(t.nodeName=="BR"){s+=1}else{if(t.nodeType==1){o.push({event:"start",offset:s,node:t});s=p(t,s);o.push({event:"stop",offset:s,node:t})}}}}return s})(q,0);return o}function j(x,v,w){var p=0;var y="";var r=[]
 ;function t(){if(x.length&&v.length){if(x[0].offset!=v[0].offset){return(x[0].offset<v[0].offset)?x:v}else{return v[0].event=="start"?x:v}}else{return x.length?x:v}}function s(A){function z(B){return" "+B.nodeName+'="'+l(B.value)+'"'}return"<"+A.nodeName+Array.prototype.map.call(A.attributes,z).join("")+">"}while(x.length||v.length){var u=t().splice(0,1)[0];y+=l(w.substr(p,u.offset-p));p=u.offset;if(u.event=="start"){y+=s(u.node);r.push(u.node)}else{if(u.event=="stop"){var o,q=r.length;do{q--;o=r[q];y+=("</"+o.nodeName.toLowerCase()+">")}while(o!=u.node);r.splice(q,1);while(q<r.length){y+=s(r[q]);q++}}}}return y+l(w.substr(p))}function f(q){function o(s,r){return RegExp(s,"m"+(q.cI?"i":"")+(r?"g":""))}function p(y,w){if(y.compiled){return}y.compiled=true;var s=[];if(y.k){var r={};function z(A,t){t.split(" ").forEach(function(B){var C=B.split("|");r[C[0]]=[A,C[1]?Number(C[1]):1];s.push(C[0])})}y.lR=o(y.l||hljs.IR,true);if(typeof y.k=="string"){z("keyword",y.k)}else{for(var x in y.k){
 if(!y.k.hasOwnProperty(x)){continue}z(x,y.k[x])}}y.k=r}if(w){if(y.bWK){y.b="\\b("+s.join("|")+")\\s"}y.bR=o(y.b?y.b:"\\B|\\b");if(!y.e&&!y.eW){y.e="\\B|\\b"}if(y.e){y.eR=o(y.e)}y.tE=y.e||"";if(y.eW&&w.tE){y.tE+=(y.e?"|":"")+w.tE}}if(y.i){y.iR=o(y.i)}if(y.r===undefined){y.r=1}if(!y.c){y.c=[]}for(var v=0;v<y.c.length;v++){if(y.c[v]=="self"){y.c[v]=y}p(y.c[v],y)}if(y.starts){p(y.starts,w)}var u=[];for(var v=0;v<y.c.length;v++){u.push(y.c[v].b)}if(y.tE){u.push(y.tE)}if(y.i){u.push(y.i)}y.t=u.length?o(u.join("|"),true):{exec:function(t){return null}}}p(q)}function d(D,E){function o(r,M){for(var L=0;L<M.c.length;L++){var K=M.c[L].bR.exec(r);if(K&&K.index==0){return M.c[L]}}}function s(K,r){if(K.e&&K.eR.test(r)){return K}if(K.eW){return s(K.parent,r)}}function t(r,K){return K.i&&K.iR.test(r)}function y(L,r){var K=F.cI?r[0].toLowerCase():r[0];return L.k.hasOwnProperty(K)&&L.k[K]}function G(){var K=l(w);if(!A.k){return K}var r="";var N=0;A.lR.lastIndex=0;var L=A.lR.exec(K);while(L){r+=K.subs
 tr(N,L.index-N);var M=y(A,L);if(M){v+=M[1];r+='<span class="'+M[0]+'">'+L[0]+"</span>"}else{r+=L[0]}N=A.lR.lastIndex;L=A.lR.exec(K)}return r+K.substr(N)}function z(){if(A.sL&&!e[A.sL]){return l(w)}var r=A.sL?d(A.sL,w):g(w);if(A.r>0){v+=r.keyword_count;B+=r.r}return'<span class="'+r.language+'">'+r.value+"</span>"}function J(){return A.sL!==undefined?z():G()}function I(L,r){var K=L.cN?'<span class="'+L.cN+'">':"";if(L.rB){x+=K;w=""}else{if(L.eB){x+=l(r)+K;w=""}else{x+=K;w=r}}A=Object.create(L,{parent:{value:A}});B+=L.r}function C(K,r){w+=K;if(r===undefined){x+=J();return 0}var L=o(r,A);if(L){x+=J();I(L,r);return L.rB?0:r.length}var M=s(A,r);if(M){if(!(M.rE||M.eE)){w+=r}x+=J();do{if(A.cN){x+="</span>"}A=A.parent}while(A!=M.parent);if(M.eE){x+=l(r)}w="";if(M.starts){I(M.starts,"")}return M.rE?0:r.length}if(t(r,A)){throw"Illegal"}w+=r;return r.length||1}var F=e[D];f(F);var A=F;var w="";var B=0;var v=0;var x="";try{var u,q,p=0;while(true){A.t.lastIndex=p;u=A.t.exec(E);if(!u){break}q=C(E.
 substr(p,u.index-p),u[0]);p=u.index+q}C(E.substr(p));return{r:B,keyword_count:v,value:x,language:D}}catch(H){if(H=="Illegal"){return{r:0,keyword_count:0,value:l(E)}}else{throw H}}}function g(s){var o={keyword_count:0,r:0,value:l(s)};var q=o;for(var p in e){if(!e.hasOwnProperty(p)){continue}var r=d(p,s);r.language=p;if(r.keyword_count+r.r>q.keyword_count+q.r){q=r}if(r.keyword_count+r.r>o.keyword_count+o.r){q=o;o=r}}if(q.language){o.second_best=q}return o}function i(q,p,o){if(p){q=q.replace(/^((<[^>]+>|\t)+)/gm,function(r,v,u,t){return v.replace(/\t/g,p)})}if(o){q=q.replace(/\n/g,"<br>")}return q}function m(r,u,p){var v=h(r,p);var t=a(r);if(t=="no-highlight"){return}var w=t?d(t,v):g(v);t=w.language;var o=c(r);if(o.length){var q=document.createElement("pre");q.innerHTML=w.value;w.value=j(o,c(q),v)}w.value=i(w.value,u,p);var s=r.className;if(!s.match("(\\s|^)(language-)?"+t+"(\\s|$)")){s=s?(s+" "+t):t}r.innerHTML=w.value;r.className=s;r.result={language:t,kw:w.keyword_count,re:w.r};if(w
 .second_best){r.second_best={language:w.second_best.language,kw:w.second_best.keyword_count,re:w.second_best.r}}}function n(){if(n.called){return}n.called=true;Array.prototype.map.call(document.getElementsByTagName("pre"),b).filter(Boolean).forEach(function(o){m(o,hljs.tabReplace)})}function k(){window.addEventListener("DOMContentLoaded",n,false);window.addEventListener("load",n,false)}var e={};this.LANGUAGES=e;this.highlight=d;this.highlightAuto=g;this.fixMarkup=i;this.highlightBlock=m;this.initHighlighting=n;this.initHighlightingOnLoad=k;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM=
 {cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\* ",e:" \\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.inherit=function(q,r){var o={};for(var p in q){o[p]=q[p]}if(r){for(var p in r){o[p]=r[p]}}return o}}();hljs.LANGUAGES.bash=function(a){var g="true false";var e="if then else elif fi for break continue while in do done echo exit return set declare";var c={cN:"variable",b:"\\$[a-zA-Z0-9_#]+"};var b={cN:"variable",b:"\\${([^}]|\\\\})+}"};var h={cN:"string",b:'"',e:'"',i:"\\n",c:[a.BE,c,b],r:0};var d={cN:"string",b:"'",e:"'",c:[{b:"''"}],r:0};var f={cN:"test_condition",b:"",e:"",c:[h,d,c,b],k:{literal:g},r:0};return{k:{keyword:e,literal:g},c:[{cN:"shebang",b:"(#!\\/bin\\/bash)|(#!\\/bin\\/sh)",r:10},c,b,a.HCM,h,d,a.inherit(f,{b:"\\[ ",e:" \\]",r:0}),a.inherit(f,{b:"\\[\\[ ",e:" \\]\\]"})]}}(hljs);hljs.LA
 NGUAGES.cs=function(a){return{k:"abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while ascending descending from get group into join let orderby partial select set value var where yield",c:[{cN:"comment",b:"///",e:"$",rB:true,c:[{cN:"xmlDocTag",b:"///|<!--|-->"},{cN:"xmlDocTag",b:"</?",e:">"}]},a.CLCM,a.CBLCLM,{cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line region endregion pragma checksum"},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},a.ASM,a.QSM,a.CNM]}}(hljs);hljs.LANGUAGES.ruby=function(e){var a="[a-zA-Z_][a-z
 A-Z0-9_]*(\\!|\\?)?";var j="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?";var g={keyword:"and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include"};var c={cN:"yardoctag",b:"@[A-Za-z]+"};var k=[{cN:"comment",b:"#",e:"$",c:[c]},{cN:"comment",b:"^\\=begin",e:"^\\=end",c:[c],r:10},{cN:"comment",b:"^__END__",e:"\\n$"}];var d={cN:"subst",b:"#\\{",e:"}",l:a,k:g};var i=[e.BE,d];var b=[{cN:"string",b:"'",e:"'",c:i,r:0},{cN:"string",b:'"',e:'"',c:i,r:0},{cN:"string",b:"%[qw]?\\(",e:"\\)",c:i},{cN:"string",b:"%[qw]?\\[",e:"\\]",c:i},{cN:"string",b:"%[qw]?{",e:"}",c:i},{cN:"string",b:"%[qw]?<",e:">",c:i,r:10},{cN:"string",b:"%[qw]?/",e:"/",c:i,r:10},{cN:"string",b:"%[qw]?%",e:"%",c:i,r:10},{cN:"string",b:"%[qw]?-",e:"-",c:i,r:10},{cN:"string",b:"%[qw]?\\|",e:"\\|",c:i,r:10}];var h={cN:"function",bWK:tru
 e,e:" |$|;",k:"def",c:[{cN:"title",b:j,l:a,k:g},{cN:"params",b:"\\(",e:"\\)",l:a,k:g}].concat(k)};var f=k.concat(b.concat([{cN:"class",bWK:true,e:"$|;",k:"class module",c:[{cN:"title",b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?",r:0},{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+e.IR+"::)?"+e.IR}]}].concat(k)},h,{cN:"constant",b:"(::)?(\\b[A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:":",c:b.concat([{b:j}]),r:0},{cN:"symbol",b:a+":",r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"number",b:"\\?\\w"},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"("+e.RSR+")\\s*",c:k.concat([{cN:"regexp",b:"/",e:"/[a-z]*",i:"\\n",c:[e.BE,d]}]),r:0}]));d.c=f;h.c[1].c=f;return{l:a,k:g,c:f}}(hljs);hljs.LANGUAGES.diff=function(a){return{c:[{cN:"chunk",b:"^\\@\\@ +\\-\\d+,\\d+ +\\+\\d+,\\d+ +\\@\\@$",r:10},{cN:"chunk",b:"^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$",r:10},{cN:"chunk",b:"^\\-\\-\\- +\\d+,\\d+ +\\-\\-\\-\\-$",r:10},{cN:"header",b:"Index: ",e:"$"
 },{cN:"header",b:"=====",e:"=====$"},{cN:"header",b:"^\\-\\-\\-",e:"$"},{cN:"header",b:"^\\*{3} ",e:"$"},{cN:"header",b:"^\\+\\+\\+",e:"$"},{cN:"header",b:"\\*{5}",e:"\\*{5}$"},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"change",b:"^\\!",e:"$"}]}}(hljs);hljs.LANGUAGES.javascript=function(a){return{k:{keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const",literal:"true false null undefined NaN Infinity"},c:[a.ASM,a.QSM,a.CLCM,a.CBLCLM,a.CNM,{b:"("+a.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[a.CLCM,a.CBLCLM,{cN:"regexp",b:"/",e:"/[gim]*",i:"\\n",c:[{b:"\\\\/"}]},{b:"<",e:">;",sL:"xml"}],r:0},{cN:"function",bWK:true,e:"{",k:"function",c:[{cN:"title",b:"[A-Za-z$_][0-9A-Za-z$_]*"},{cN:"params",b:"\\(",e:"\\)",c:[a.CLCM,a.CBLCLM],i:"[\"'\\(]"}],i:"\\[|%"}]}}(hljs);hljs.LANGUAGES.css=function(a){var b={cN:"function",b:a.IR+"\\(",e
 :"\\)",c:[a.NM,a.ASM,a.QSM]};return{cI:true,i:"[=/|']",c:[a.CBLCLM,{cN:"id",b:"\\#[A-Za-z0-9_-]+"},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"pseudo",b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{cN:"at_rule",b:"@",e:"[{;]",eE:true,k:"import page media charset",c:[b,a.ASM,a.QSM,a.NM]},{cN:"tag",b:a.IR,r:0},{cN:"rules",b:"{",e:"}",i:"[^\\s]",r:0,c:[a.CBLCLM,{cN:"rule",b:"[^\\s]",rB:true,e:";",eW:true,c:[{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:true,i:"[^\\s]",starts:{cN:"value",eW:true,eE:true,c:[b,a.NM,a.QSM,a.ASM,a.CBLCLM,{cN:"hexcolor",b:"\\#[0-9A-F]+"},{cN:"important",b:"!important"}]}}]}]}]}}(hljs);hljs.LANGUAGES.xml=function(a){var c="[A-Za-z0-9\\._:-]+";var b={eW:true,c:[{cN:"attribute",b:c,r:0},{b:'="',rB:true,e:'"',c:[{cN:"value",b:'"',eW:true}]},{b:"='",rB:true,e:"'",c:[{cN:"value",b:"'",eW:true}]},{b:"=",c:[{cN:"value",b:"[^\\s/>]+"}]}]};return{cI:true,c:[{cN
 :"pi",b:"<\\?",e:"\\?>",r:10},{cN:"doctype",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"<!--",e:"-->",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{title:"style"},c:[b],starts:{e:"</style>",rE:true,sL:"css"}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{title:"script"},c:[b],starts:{e:"<\/script>",rE:true,sL:"javascript"}},{b:"<%",e:"%>",sL:"vbscript"},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"title",b:"[^ />]+"},b]}]}}(hljs);hljs.LANGUAGES.http=function(a){return{i:"\\S",c:[{cN:"status",b:"^HTTP/[0-9\\.]+",e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{cN:"request",b:"^[A-Z]+ (.*?) HTTP/[0-9\\.]+$",rB:true,e:"$",c:[{cN:"string",b:" ",e:" ",eB:true,eE:true}]},{cN:"attribute",b:"^\\w",e:": ",eE:true,i:"\\n|\\s|=",starts:{cN:"string",e:"$"}},{b:"\\n\\n",starts:{sL:"",eW:true}}]}}(hljs);hljs.LANGUAGES.java=function(a){return{k:"false synchronized int abstract float private char boolean static null if const for true while long thr
 ow strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws",c:[{cN:"javadoc",b:"/\\*\\*",e:"\\*/",c:[{cN:"javadoctag",b:"@[A-Za-z]+"}],r:10},a.CLCM,a.CBLCLM,a.ASM,a.QSM,{cN:"class",bWK:true,e:"{",k:"class interface",i:":",c:[{bWK:true,k:"extends implements",r:10},{cN:"title",b:a.UIR}]},a.CNM,{cN:"annotation",b:"@[A-Za-z]+"}]}}(hljs);hljs.LANGUAGES.php=function(a){var e={cN:"variable",b:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"};var b=[a.inherit(a.ASM,{i:null}),a.inherit(a.QSM,{i:null}),{cN:"string",b:'b"',e:'"',c:[a.BE]},{cN:"string",b:"b'",e:"'",c:[a.BE]}];var c=[a.BNM,a.CNM];var d={cN:"title",b:a.UIR};return{cI:true,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empt
 y require_once do xor return implements parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception php_user_filter default die require __FUNCTION__ enddeclare final try this switch continue endfor endif declare unset true false namespace trait goto instanceof insteadof __DIR__ __NAMESPACE__ __halt_compiler",c:[a.CLCM,a.HCM,{cN:"comment",b:"/\\* ",e:" \\*/",c:[{cN:"phpdoc",b:"\\s@[A-Za-z]+"}]},{cN:"comment",eB:true,b:"__halt_compiler.+?;",eW:true},{cN:"string",b:"<<<['\"]?\\w+['\"]?$",e:"^\\w+;",c:[a.BE]},{cN:"preprocessor",b:"<\\?php",r:10},{cN:"preprocessor",b:"\\?>"},e,{cN:"function",bWK:true,e:"{",k:"function",i:"\\$|\\[|%",c:[d,{cN:"params",b:"\\(",e:"\\)",c:["self",e,a.CBLCLM].concat(b).concat(c)}]},{cN:"class",bWK:true,e:"{",k:"class",i:"[:\\(\\$]",c:[{bWK:true,eW:true,k:"extends",c:[d]},d]},{b:"=>"}].concat(b).concat(c)}}(hljs);hljs.LANGUAGES.python=function(a){var f={cN:"prompt",b:"^(>>>|\\.\\.\\.) "};var c=[{cN:"string",b:"(u|b)?r?'''",e:"
 '''",c:[f],r:10},{cN:"string",b:'(u|b)?r?"""',e:'"""',c:[f],r:10},{cN:"string",b:"(u|r|ur)'",e:"'",c:[a.BE],r:10},{cN:"string",b:'(u|r|ur)"',e:'"',c:[a.BE],r:10},{cN:"string",b:"(b|br)'",e:"'",c:[a.BE]},{cN:"string",b:'(b|br)"',e:'"',c:[a.BE]}].concat([a.ASM,a.QSM]);var e={cN:"title",b:a.UIR};var d={cN:"params",b:"\\(",e:"\\)",c:["self",a.CNM,f].concat(c)};var b={bWK:true,e:":",i:"[${=;\\n]",c:[e,d],r:10};return{k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda nonlocal|10",built_in:"None True False Ellipsis NotImplemented"},i:"(</|->|\\?)",c:c.concat([f,a.HCM,a.inherit(b,{cN:"function",k:"def"}),a.inherit(b,{cN:"class",k:"class"}),a.CNM,{cN:"decorator",b:"@",e:"$"},{b:"\\b(print|exec)\\("}])}}(hljs);hljs.LANGUAGES.sql=function(a){return{cI:true,c:[{cN:"operator",b:"(begin|start|commit|rollback|savepoint|lock|alter|create|drop|rename|call|delete|do|handler|in
 sert|load|replace|select|truncate|update|set|show|pragma|grant)\\b(?!:)",e:";",eW:true,k:{keyword:"all partial global month current_timestamp using go revoke smallint indicator end-exec disconnect zone with character assertion to add current_user usage input local alter match collate real then rollback get read timestamp session_user not integer bit unique day minute desc insert execute like ilike|2 level decimal drop continue isolation found where constraints domain right national some module transaction relative second connect escape close system_user for deferred section cast current sqlstate allocate intersect deallocate numeric public preserve full goto initially asc no key output collation group by union session both last language constraint column of space foreign deferrable prior connection unknown action commit view or first into float year primary cascaded except restrict set references names table outer open select size are rows from prepare distinct leading create only n
 ext inner authorization schema corresponding option declare precision immediate else timezone_minute external varying translation true case exception join hour default double scroll value cursor descriptor values dec fetch procedure delete and false int is describe char as at in varchar null trailing any absolute current_time end grant privileges when cross check write current_date pad begin temporary exec time update catalog user sql date on identity timezone_hour natural whenever interval work order cascade diagnostics nchar having left call do handler load replace truncate start lock show pragma exists number",aggregate:"count sum min max avg"},c:[{cN:"string",b:"'",e:"'",c:[a.BE,{b:"''"}],r:0},{cN:"string",b:'"',e:'"',c:[a.BE,{b:'""'}],r:0},{cN:"string",b:"`",e:"`",c:[a.BE]},a.CNM]},a.CBLCLM,{cN:"comment",b:"--",e:"$"}]}}(hljs);hljs.LANGUAGES.ini=function(a){return{cI:true,i:"[^\\s]",c:[{cN:"comment",b:";",e:"$"},{cN:"title",b:"^\\[",e:"\\]"},{cN:"setting",b:"^[a-z0-9\\[\\]_-]+[
  \\t]*=[ \\t]*",e:"$",c:[{cN:"value",eW:true,k:"on off true false yes no",c:[a.QSM,a.NM]}]}]}}(hljs);hljs.LANGUAGES.perl=function(e){var a="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarra
 y hex getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when";var d={cN:"subst",b:"[$@]\\{",e:"\\}",k:a,r:10};var b={cN:"variable",b:"\\$\\d"};var i={cN:"variable",b:"[\\$\\%\\@\\*](\\^\\w\\b|#\\w+(\\:\\:\\w+)*|[^\\s\\w{]|{\\w+}|\\w+(\\:\\:\\w*)*)"};var f=[e.BE,d,b,i];var h={b:"->",c:[{b:e.IR},{b:"{",e:"}"}]};var g={cN:"comment",b:"^(__END__|_
 _DATA__)",e:"\\n$",r:5};var c=[b,i,e.HCM,g,{cN:"comment",b:"^\\=\\w",e:"\\=cut",eW:true},h,{cN:"string",b:"q[qwxr]?\\s*\\(",e:"\\)",c:f,r:5},{cN:"string",b:"q[qwxr]?\\s*\\[",e:"\\]",c:f,r:5},{cN:"string",b:"q[qwxr]?\\s*\\{",e:"\\}",c:f,r:5},{cN:"string",b:"q[qwxr]?\\s*\\|",e:"\\|",c:f,r:5},{cN:"string",b:"q[qwxr]?\\s*\\<",e:"\\>",c:f,r:5},{cN:"string",b:"qw\\s+q",e:"q",c:f,r:5},{cN:"string",b:"'",e:"'",c:[e.BE],r:0},{cN:"string",b:'"',e:'"',c:f,r:0},{cN:"string",b:"`",e:"`",c:[e.BE]},{cN:"string",b:"{\\w+}",r:0},{cN:"string",b:"-?\\w+\\s*\\=\\>",r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"("+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,g,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"sub",bWK:true,e:"(\\s*\\(.*?\\))?[;{]",k:"sub",r:5},{cN:"operator",b:"-\\w\\b",r:0}];d.c=c;h.c[1].c=c;retu
 rn{k:a,c:c}}(hljs);hljs.LANGUAGES.json=function(a){var e={literal:"true false null"};var d=[a.QSM,a.CNM];var c={cN:"value",e:",",eW:true,eE:true,c:d,k:e};var b={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:true,eE:true,c:[a.BE],i:"\\n",starts:c}],i:"\\S"};var f={b:"\\[",e:"\\]",c:[a.inherit(c,{cN:null})],i:"\\S"};d.splice(d.length,0,b,f);return{c:d,k:e,i:"\\S"}}(hljs);hljs.LANGUAGES.cpp=function(a){var b={keyword:"false int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long throw volatile static protected bool template mutable if public friend do return goto auto void enum else break new extern using true class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue wchar_t inline delete alignof char16_t char32_t constexpr decltype noexcept nullptr static_assert thread_local restrict _Bool complex",bu
 ilt_in:"std string cin cout cerr clog stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr"};return{k:b,i:"</",c:[a.CLCM,a.CBLCLM,a.QSM,{cN:"string",b:"'\\\\?.",e:"'",i:"."},{cN:"number",b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},a.CNM,{cN:"preprocessor",b:"#",e:"$"},{cN:"stl_container",b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:b,r:10,c:["self"]}]}}(hljs);
\ No newline at end of file


[04/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/refcard/js/modernizr.custom.2.6.2.js
----------------------------------------------------------------------
diff --git a/docs/refcard/js/modernizr.custom.2.6.2.js b/docs/refcard/js/modernizr.custom.2.6.2.js
new file mode 100644
index 0000000..e7d7b4e
--- /dev/null
+++ b/docs/refcard/js/modernizr.custom.2.6.2.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.6.2 (Custom Build) | MIT & BSD
+ * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexboxlegacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-shiv-teststyles-testprop-testallprops-prefixes-domprefixes
+ */
+;window.Modernizr=function(a,b,c){function z(a){i.cssText=a}function A(a,b){return z(m.join(a+";")+(b||""))}function B(a,b){return typeof a===b}function C(a,b){return!!~(""+a).indexOf(b)}function D(a,b){for(var d in a){var e=a[d];if(!C(e,"-")&&i[e]!==c)return b=="pfx"?e:!0}return!1}function E(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:B(f,"function")?f.bind(d||b):f}return!1}function F(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+o.join(d+" ")+d).split(" ");return B(b,"string")||B(b,"undefined")?D(e,b):(e=(a+" "+p.join(d+" ")+d).split(" "),E(e,b,c))}var d="2.6.2",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k=":)",l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n="Webkit Moz O ms",o=n.split(" "),p=n.toLowerCase().split(" "),q={},r={},s={},t=[],u=t.slice,v,w=function(a,c,d,e){var h,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:g+
 (d+1),l.appendChild(j);return h=["&#173;",'<style id="s',g,'">',a,"</style>"].join(""),l.id=g,(m?l:n).innerHTML+=h,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=f.style.overflow,f.style.overflow="hidden",f.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),f.style.overflow=k),!!i},x={}.hasOwnProperty,y;!B(x,"undefined")&&!B(x.call,"undefined")?y=function(a,b){return x.call(a,b)}:y=function(a,b){return b in a&&B(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=u.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(u.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(u.call(arguments)))};return e}),q.flexbox=function(){return F("flexWrap")},q.flexboxlegacy=function(){return F("boxDirection")},q.rgba=function(){return z("ba
 ckground-color:rgba(150,255,150,.5)"),C(i.backgroundColor,"rgba")},q.hsla=function(){return z("background-color:hsla(120,40%,100%,.5)"),C(i.backgroundColor,"rgba")||C(i.backgroundColor,"hsla")},q.multiplebgs=function(){return z("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(i.background)},q.backgroundsize=function(){return F("backgroundSize")},q.borderimage=function(){return F("borderImage")},q.borderradius=function(){return F("borderRadius")},q.boxshadow=function(){return F("boxShadow")},q.textshadow=function(){return b.createElement("div").style.textShadow===""},q.opacity=function(){return A("opacity:.55"),/^0.55$/.test(i.opacity)},q.cssanimations=function(){return F("animationName")},q.csscolumns=function(){return F("columnCount")},q.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return z((a+"-webkit- ".split(" ").join(b+a)+m.join(c+a
 )).slice(0,-a.length)),C(i.backgroundImage,"gradient")},q.cssreflections=function(){return F("boxReflect")},q.csstransforms=function(){return!!F("transform")},q.csstransforms3d=function(){var a=!!F("perspective");return a&&"webkitPerspective"in f.style&&w("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},q.csstransitions=function(){return F("transition")},q.fontface=function(){var a;return w('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},q.generatedcontent=function(){var a;return w(["#",g,"{font:0/0 a}#",g,':after{content:"',k,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a};for(var G in q)y(q,G)&&(v=G.toLowerCase(),e[v]=q[G](),t.push((e[v]?""
 :"no-")+v));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)y(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof enableClasses!="undefined"&&enableClasses&&(f.className+=" "+(b?"":"no-")+a),e[a]=b}return e},z(""),h=j=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e
 <g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",f="hidden
 "in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.testProp=function(a){return D([a])},e.testAllProps=F,e.testStyles=w,e}(this,this.document);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/refcard/js/refcard.js
----------------------------------------------------------------------
diff --git a/docs/refcard/js/refcard.js b/docs/refcard/js/refcard.js
new file mode 100644
index 0000000..01e7a42
--- /dev/null
+++ b/docs/refcard/js/refcard.js
@@ -0,0 +1,74 @@
+$(function () {
+    function init() {
+        var pageWidth = $(window).width();
+        var numberOfColumns = 1;
+
+        switch (true) {
+            case pageWidth >= 978 && pageWidth < 1350:
+                numberOfColumns = 2;
+                break;
+            case pageWidth >= 1350 && pageWidth < 1800:
+                numberOfColumns = 3;
+                break;
+            case pageWidth >= 1800 && pageWidth < 2210:
+                numberOfColumns = 4;
+                break;
+            case pageWidth >= 2210 && pageWidth < 2640:
+                numberOfColumns = 5;
+                break;
+            case pageWidth >= 2640:
+                numberOfColumns = 6;
+                break;
+        }
+        if (numberOfColumns < 2) {
+            return;
+        }
+
+        var page = $("#clearing-div");
+
+        $('div.horizontal-block').each(function () {
+            var container = $(this);
+            var id = container.attr('id');
+
+            var newContainer = $('<div class="columns-container" id="container-' + id + '" />');
+            newContainer.insertBefore(page);
+            newContainer.append($('<h2>' + id + '</h2>'));
+
+            var columns = [];
+            for (var i = 1; i <= numberOfColumns; i++) {
+                column = $('<div class="columns" id="column-' + i + '-' + id + '"/>');
+                newContainer.append(column);
+                columns.push(column);
+            }
+            newContainer.append($('<div style="clear: both;" />'));
+            newContainer.append($('<hr />'));
+
+            $("#" + id + " > div.col").each(function () {
+                var element = $(this);
+                for (var i = 1; i <= numberOfColumns; i++) {
+                    var moveTo = "c" + numberOfColumns + "-" + i;
+                    if (element.hasClass(moveTo)) {
+                        var clone = element.clone(true);
+                        columns[i - 1].append(clone);
+                        element.addClass("moved");
+                    }
+                }
+            });
+        });
+    }
+
+    init();
+    $(window).resize(function () {
+        $("div.columns").remove();
+        $("div.columns-container").remove();
+        $('div.horizontal-block').each(function () {
+            var id = $(this).attr('id');
+            $("#" + id + " > div.col").each(function () {
+                $(this).removeClass("moved");
+            })
+        });
+        init();
+    });
+});
+
+hljs.initHighlightingOnLoad()

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/refcard/refcard.html
----------------------------------------------------------------------
diff --git a/docs/refcard/refcard.html b/docs/refcard/refcard.html
new file mode 100644
index 0000000..295e755
--- /dev/null
+++ b/docs/refcard/refcard.html
@@ -0,0 +1,1556 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
+<meta charset="utf-8">
+<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
+<meta content="Asciidoctor 0.1.4" name="generator">
+<meta content="RefCard" name="description">
+<meta content="refcard" name="keywords">
+<title>Apache TomEE Reference Card</title>
+<link href="css/style.css" rel="stylesheet">
+<link href="css/github.min.css" rel="stylesheet">
+<link href="css/refcard.css" media="print, screen" rel="stylesheet" type="text/css">
+<script src="js/jquery.min.js"></script>
+<script src="js/modernizr.custom.2.6.2.js"></script>
+<script src="js/highlight.min.js"></script>
+<script src="js/refcard.js"></script>
+</head>
+<body class="article">
+<header>
+<div class="mid">
+<img id="logo" src="images/tomee.png">
+<h1>
+TomEE RefCard
+</h1>
+</div>
+</header>
+<div class="main">
+<div class="mid">
+<div class="page" id="page">
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p><strong>Apache TomEE is a JavaEE 6 application server.</strong></p>
+</div>
+<div class="paragraph">
+<p>This RefCard tries to sum up basic things to know.</p>
+</div>
+<div class="horizontal-block" id="Overview">
+<div class="col c2-1 c3-1 c4-1 c5-1 c6-1"><div class="blk">
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">TomEE Philosophy</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>Apache TomEE, pronounced "Tommy", is an all-Apache Java EE 6 Web Profile
+certified stack where Tomcat is top dog. Apache TomEE is assembled from
+a vanilla Apache Tomcat zip file. We start with Tomcat, add our jars and zip
+up the rest. The result is Tomcat with added EE features - TomEE.</p>
+</div>
+<div class="paragraph">
+<p>Its core values are:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Be Tomcat</p>
+</li>
+<li>
+<p>Be certified</p>
+</li>
+<li>
+<p>Be small</p>
+</li>
+</ul>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">TomEE Links</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div class="ulist">
+<ul>
+<li>
+<p>TomEE Website: <a href="http://tomee.apache.org">http://tomee.apache.org</a></p>
+</li>
+<li>
+<p>TomEE Examples: <a href="http://tomee.apache.org/examples-trunk/index.html">http://tomee.apache.org/examples-trunk/index.html</a></p>
+</li>
+</ul>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+
+</div></div>
+
+<div class="col c2-2 c3-2 c4-2 c5-2 c6-2"><div class="blk">
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">TomEE ClassLoading</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div>
+<div class="content monospaced">
+<pre class="highlight"><code>bootstrap ($JAVA_HOME/jre/lib/ext)
+      |
+    system (bin/boostrap.jar:bin/tomcat-juli.jar)
+      |
+    common (lib/*.jar)
+    /    \
+webapp1 webapp2</code></pre>
+</div>
+</div>
+
+<div class="paragraph">
+<p>Classloading configuration (properties):</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>openejb.classloader.forced-load=&lt;comma separated list of class name prefixes&gt;</code>: classes to load from the webapp first
+whatever is in the container</p>
+</li>
+<li>
+<p><code>openejb.classloader.forced-skip=&lt;idem&gt;</code>: classes to load from the container
+whatever is in the application</p>
+</li>
+</ul>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+
+</div></div>
+
+<div class="col c2-1 c3-3 c4-3 c5-3 c6-3"><div class="blk">
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 50%">
+<col style="width: 50%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top" colspan="2">TomEE Basic Operation</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Start and wait Ctrl+C</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>./bin/catalina.sh run</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Start and forget</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>./bin/catalina.sh start</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Stop</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>./bin/catalina.sh stop</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Deploy manually a webapp</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>copy war over webapps/</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Redeploy manually a webapp</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>delete exploded war then deploy</code></p></td>
+</tr>
+</tbody>
+</table>
+
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">TomEE Distributions</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div class="ulist">
+<ul>
+<li>
+<p>TomEE Web Profile: JavaEE 6 Web profile sever (certified)</p>
+</li>
+<li>
+<p>TomEE JAX-RS: previous one + JAX-RS (certified)</p>
+</li>
+<li>
+<p>TomEE+: previous one + JAXWS + JMS + Connectors</p>
+</li>
+</ul>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+
+</div></div>
+
+<div class="col c2-2 c3-1 c4-4 c5-4 c6-4"><div class="blk">
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 33%">
+<col style="width: 66%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top" colspan="2">TomEE Directory Layout</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>bin</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">contains script to manage (start/stop/&#8230;) TomEE</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>conf</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">server global configuration</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>endorsed</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">override JVM API because too old for JavaEE</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>lib</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">server libraries</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>logs</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">logs directory (using default configuration)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>temp</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">default tmp directory</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>webapps</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">default folder which aims to contain webapps</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>work</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">folder used by Tomcat to store "work" binaries (compiled jsp&#8230;)</p></td>
+</tr>
+</tbody>
+</table>
+
+</div></div>
+</div>
+<div class="horizontal-block" id="Configuration">
+<div class="col c2-1 c3-1 c4-1 c5-1 c6-1"><div class="blk">
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Scanning/Loader configuration, conf/catalina.properties</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div>
+<div class="content monospaced">
+<pre class="highlight"><code class="ini"># the main server classloader configuration,
+# JDBC drivers go here in general
+common.loader=${catalina.base}/lib,\
+${catalina.base}/lib/*.jar,\
+${catalina.home}/lib,${catalina.home}/lib/*.jar
+
+# other defaults are generally fine</code></pre>
+</div>
+</div>
+</div></td>
+</tr>
+</tbody>
+</table>
+
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">TomEE system properties, conf/system.properties</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div>
+<div class="content monospaced">
+<pre class="highlight"><code class="ini"># handle global configuration
+# this file is an alternative
+# to JVM system properties -Dxxxx=yyyy
+
+# check libraries
+openejb.check.classloader = false
+
+# deploy internal application
+# only relevant in dev
+openejb.system.apps = true
+
+# deactivate JMX
+openejb.jmx.active = false
+
+# where to find the TomEE config file
+openejb.conf.file = conf/tomee.xml
+
+# force inclusion/exclusion of packages during classloading
+openejb.classloader.forced-load = my.pack1,my.pack2
+openejb.classloader.forced-skip = my.pack3,my.pack4
+
+# app ones
+my.system.property.config = my value
+
+# more on http://tomee.apache.org/properties-listing.html</code></pre>
+</div>
+</div>
+</div></td>
+</tr>
+</tbody>
+</table>
+
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Logging configuration, conf/logging.properties</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div>
+<div class="content monospaced">
+<pre class="highlight"><code class="ini"># available handlers for logging: console, file...
+handlers = 5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
+
+# file handler configuration
+# 3 main items: level of the handler, where to log, with wich prefix
+5tomee.org.apache.juli.FileHandler.level = FINEST
+5tomee.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
+5tomee.org.apache.juli.FileHandler.prefix = tomee.
+
+# each category can be configured (ex: OpenEJB)
+## level: FINEST &gt; FINE &gt; INFO &gt; WARNING &gt; SEVERE
+OpenEJB.level = WARNING
+
+## handler
+OpenEJB.handlers = 5tomee.org.apache.juli.FileHandler,\
+java.util.logging.ConsoleHandler
+
+# more on tomcat website:
+# http://tomcat.apache.org/tomcat-7.0-doc/logging.html</code></pre>
+</div>
+</div>
+</div></td>
+</tr>
+</tbody>
+</table>
+
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Daemons configuration, conf/conf.d/*.properties</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>OpenEJB and TomEE rely on daemons for extensibility.</p>
+</div>
+<div class="paragraph">
+<p>Typically JAXWS and JAXRS uses this feature to be
+added to the server.</p>
+</div>
+<div class="paragraph">
+<p>Each daemon can get configuration.</p>
+</div>
+<div class="paragraph">
+<p>It is configurable through:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>system properties: <code>&lt;daemon name.&lt;attribute&gt;=value</code></p>
+</li>
+<li>
+<p>conf/conf.d/&lt;daemon name&gt;.properties</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>All daemons have a property <code>disabled</code> which can be set to true
+to deactivate it.</p>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+
+</div></div>
+
+<div class="col c2-2 c3-2 c4-2 c5-2 c6-2"><div class="blk">
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Server configuration, conf/server.xml</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div>
+<div class="content monospaced">
+<pre class="highlight"><code class="xml">&lt;?xml version='1.0' encoding='utf-8'?&gt;
+&lt;Server port="8005" shutdown="SHUTDOWN"&gt;
+ &lt;!-- TomEE integration with Tomcat --&gt;
+ &lt;Listener className="org.apache.tomee.catalina.ServerListener" /&gt;
+
+ &lt;Service name="Catalina"&gt;
+
+  &lt;!-- Connectors are entry points (HTTP, AJP...) --&gt;
+  &lt;Connector port="8080" protocol="HTTP/1.1" /&gt;
+
+  &lt;Engine name="Catalina" defaultHost="localhost"&gt;
+   &lt;!--
+    folder webapps will scanned for webapps
+    and webapps will be deployed on localhost
+   --&gt;
+   &lt;Host name="localhost"  appBase="webapps" /&gt;
+  &lt;/Engine&gt;
+ &lt;/Service&gt;
+&lt;/Server&gt;</code></pre>
+</div>
+</div>
+</div></td>
+</tr>
+</tbody>
+</table>
+
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">JAXWS WS Security configuration</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>It basically relies on openejb-jar.xml (in META-INF or WEB-INF):</p>
+</div>
+<div class="paragraph">
+<p>A complete example can be found within TomEE examples: <code>webservice-ws-security</code>.</p>
+</div>
+<div>
+<div class="content monospaced">
+<pre class="highlight"><code class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1"&gt;
+ &lt;ejb-deployment ejb-name="CalculatorImpl"&gt;
+  &lt;properties&gt;
+   # webservice.security.realm
+   # webservice.security.securityRealm
+   # webservice.security.transportGarantee = NONE
+   webservice.security.authMethod = WS-SECURITY
+
+   wss4j.in.action = UsernameToken
+   wss4j.in.passwordType = PasswordText
+   wss4j.in.passwordCallbackClass = org.superbiz.MyPwdHandler
+
+   # automatically added
+   wss4j.in.validator
+   .{http://docs.oasis-open.org/wss/2004/01/oasis-200401
+   -wss-wssecurity-secext-1.0.xsd}UsernameToken =
+   org.apache.openejb.server.cxf.OpenEJBLoginValidator
+  &lt;/properties&gt;
+ &lt;/ejb-deployment&gt;
+&lt;/openejb-jar&gt;</code></pre>
+</div>
+</div>
+
+<div class="paragraph">
+<p><code>wss4j.out.*</code> properties exist too.</p>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Scanning configuration</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>Scanning is used to find EE classes (EJB, CDI beans&#8230;).</p>
+</div>
+<div class="paragraph">
+<p>It is common to not scan <em>utility libraries</em> like commons-lang for instance.</p>
+</div>
+<div class="paragraph">
+<p>TomEE/OpenEJB support two main configurations regarding the scanning:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>exclusions.list</code>: can be in WEB-INF or in <code>&lt;tomee&gt;/conf/</code>: each line is a jar prefix
+which will not be included in the scanning. Defaults are in <code>openejb-core/!default.exclusions</code>.
+If you want to simply add your own exclusion you can use <code>default-list</code> which means the whole content of the default file.</p>
+</li>
+<li>
+<p><code>scan.xml</code>: in META-INF or WEB-INF it lists the classes/packages to scan. here is a sample:</p>
+</li>
+</ul>
+</div>
+<div>
+<div class="content monospaced">
+<pre class="highlight"><code class="xml">&lt;?xml version="1.0"?&gt;
+&lt;scan&gt;
+ &lt;packages&gt;
+  &lt;package&gt;org.foo1&lt;/package&gt;
+  &lt;package&gt;org.foo2&lt;/package&gt;
+ &lt;/packages&gt;
+ &lt;classes&gt;
+  &lt;class&gt;org.bar.Bar1&lt;/class&gt;
+  &lt;class&gt;org.anotherbar.Bar2&lt;/class&gt;
+ &lt;/classes&gt;
+&lt;/scan&gt;</code></pre>
+</div>
+</div>
+</div></td>
+</tr>
+</tbody>
+</table>
+
+</div></div>
+
+<div class="col c2-1 c3-3 c4-3 c5-3 c6-3"><div class="blk">
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">TomEE application configuration, WEB-INF/resources.xml</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div>
+<div class="content monospaced">
+<pre class="highlight"><code class="xml">&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;resources&gt;
+  &lt;!--
+    mainly a tomee.xml embed in the application
+    (META-INF or WEB-INF)
+  --&gt;
+  &lt;Resource id="name" type="DataSource"&gt;
+      JdbcUrl = jdbc:hsqldb:mem:my-ds
+  &lt;/Resource&gt;
+&lt;/resources&gt;</code></pre>
+</div>
+</div>
+</div></td>
+</tr>
+</tbody>
+</table>
+
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">JAXRS configuration</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>It basically relies on openejb-jar.xml (in META-INF or WEB-INF):</p>
+</div>
+<div>
+<div class="content monospaced">
+<pre class="highlight"><code class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1"&gt;
+ &lt;!--
+ class-name has to be the JAXRS application name
+ or this one if no Application is defined
+ --&gt;
+ &lt;pojo-deployment class-name="jaxrs-application"&gt;
+  &lt;properties&gt;
+   cxf.jaxrs.providers = org.foo.BarProvider, id1
+  &lt;/properties&gt;
+ &lt;/pojo-deployment&gt;
+&lt;/openejb-jar&gt;</code></pre>
+</div>
+</div>
+
+<div class="paragraph">
+<p>Values are either a class which will be instantiated (through <code>new</code>)
+or an id which will match a <code>Service</code> in a  <code>resources.xml</code> file:</p>
+</div>
+<div>
+<div class="content monospaced">
+<pre class="highlight"><code class="xml">&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;resources&gt;
+  &lt;Service id="json" class-name="org.foo.bar"&gt;
+      Attribute1 = Value1
+      Attribute2 = Value2
+  &lt;/Resource&gt;
+&lt;/resources&gt;</code></pre>
+</div>
+</div>
+
+<div class="paragraph">
+<p>Here is the full list of available properties configurable in <code>openejb-jar.xml</code>
+with the prefix <code>cxf.jaxrs</code>:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>properties</p>
+</li>
+<li>
+<p>features</p>
+</li>
+<li>
+<p>in-interceptors</p>
+</li>
+<li>
+<p>out-interceptors</p>
+</li>
+<li>
+<p>in-fault-interceptors</p>
+</li>
+<li>
+<p>out-fault-interceptors</p>
+</li>
+<li>
+<p>databinding</p>
+</li>
+<li>
+<p>providers</p>
+</li>
+</ul>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+excepted providers configuration all these configuration are available for CXF endpoints (including JAXWS ones).
+</td>
+</tr>
+</table>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+
+</div></div>
+
+<div class="col c2-2 c3-2 c4-4 c5-4 c6-4"><div class="blk">
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">TomEE main configuration, conf/tomee.xml</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div>
+<div class="content monospaced">
+<pre class="highlight"><code class="xml">&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;tomee&gt;
+  &lt;!--
+  resources can be declared here
+  To lookup it directly just use openejb:Resource/&lt;id&gt; name
+  --&gt;
+  &lt;Resource id="name" type="DataSource&gt;
+      # here comes the configuration in properties like format
+      JdbcUrl = jdbc:hsqldb:mem:my-ds
+      UserName = SA
+  &lt;/Resource&gt;
+
+  &lt;!-- resource can be any class available in the container loader --&gt;
+  &lt;Resource id="foo" class-name="org.foo.MyPojo"&gt;
+    pojoAttr1 = value2
+  &lt;/Resource&gt;
+
+  &lt;!--
+   if you want to deploy ear/jar,
+   declare it + put the file in apps folder
+  --&gt;
+  &lt;Deployments dir="apps" /&gt;
+
+  &lt;!-- more on http://tomee.apache.org/containers-and-resources.html --&gt;
+&lt;/tomee&gt;</code></pre>
+</div>
+</div>
+</div></td>
+</tr>
+</tbody>
+</table>
+
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Activating JAAS</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+in the snippets <code>o.a.o</code> means <code>org.apache.openejb</code>
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>Basic JAAS configuration needs:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>the system property:</p>
+</li>
+</ul>
+</div>
+<div>
+<div class="content monospaced">
+<pre class="highlight"><code>-Djava.security.auth.login.config=&lt;path to login.config&gt;</code></pre>
+</div>
+</div>
+
+<div class="ulist">
+<ul>
+<li>
+<p>the login.config file (see below)</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Here is a sample JAAS config file using PropertiesLoginModule:</p>
+</div>
+<div>
+<div class="content monospaced">
+<pre class="highlight"><code>PropertiesLoginModule {
+ o.a.o.core.security.jaas.PropertiesLoginModule
+ required
+ Debug=false
+ UsersFile="users.properties"
+ GroupsFile="groups.properties";
+};</code></pre>
+</div>
+</div>
+
+<div class="paragraph">
+<p>This login module needs 2 properties files, one for group and one for users.</p>
+</div>
+<div class="paragraph">
+<p>Here is a <code>users.properties</code> file (should be in <code>conf/</code>):</p>
+</div>
+<div>
+<div class="content monospaced">
+<pre class="highlight"><code class="ini">user1=pwd1
+user3=pwd2
+user3=pwd3</code></pre>
+</div>
+</div>
+
+<div class="paragraph">
+<p>Here is a <code>groups.properties</code> file (should be in <code>conf/</code>):</p>
+</div>
+<div>
+<div class="content monospaced">
+<pre class="highlight"><code class="ini">group1=user1
+group2=user2, user3</code></pre>
+</div>
+</div>
+
+<div class="paragraph">
+<p>To integrate JAAS with Tomcat just add/replace the default tomcat realm with:</p>
+</div>
+<div>
+<div class="content monospaced">
+<pre class="highlight"><code class="xml">&lt;Realm className="org.apache.catalina.realm.JAASRealm"
+ appName="PropertiesLoginModule"
+ userClassNames="o.a.o.core.security.jaas.UserPrincipal"
+ roleClassNames="o.a.o.core.security.jaas.GroupPrincipal" /&gt;</code></pre>
+</div>
+</div>
+</div></td>
+</tr>
+</tbody>
+</table>
+
+</div></div>
+</div>
+<div class="horizontal-block" id="Maven">
+<div class="col c2-2 c3-1 c4-1 c5-1 c6-1"><div class="blk">
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">OpenEJB dependencies</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div>
+<div class="content monospaced">
+<pre class="highlight"><code class="xml">&lt;!-- core: embedded cdi, ejb, EJBContainer... --&gt;
+&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.openejb&lt;/groupId&gt;
+  &lt;artifactId&gt;openejb-core&lt;/artifactId&gt;
+  &lt;version&gt;${openejb.version}&lt;/version&gt;
+&lt;/dependency&gt;
+
+&lt;!-- for JAXWS webservices --&gt;
+&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.openejb&lt;/groupId&gt;
+  &lt;artifactId&gt;openejb-cxf&lt;/artifactId&gt;
+  &lt;version&gt;${openejb.version}&lt;/version&gt;
+&lt;/dependency&gt;
+
+&lt;!-- for JAXRS webservices --&gt;
+&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.openejb&lt;/groupId&gt;
+  &lt;artifactId&gt;openejb-cxf-rs&lt;/artifactId&gt;
+  &lt;version&gt;${openejb.version}&lt;/version&gt;
+&lt;/dependency&gt;
+
+&lt;!-- embedded arquillian adapter --&gt;
+&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.openejb&lt;/groupId&gt;
+  &lt;artifactId&gt;arquillian-openejb-embedded-4&lt;/artifactId&gt;
+  &lt;version&gt;${openejb.version}&lt;/version&gt;
+&lt;/dependency&gt;</code></pre>
+</div>
+</div>
+</div></td>
+</tr>
+</tbody>
+</table>
+
+</div></div>
+
+<div class="col c2-2 c3-2 c4-2 c5-2 c6-2"><div class="blk">
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">TomEE dependencies</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div>
+<div class="content monospaced">
+<pre class="highlight"><code class="xml">&lt;!-- tomee zip --&gt;
+&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.openejb&lt;/groupId&gt;
+  &lt;artifactId&gt;apache-tomee&lt;/artifactId&gt;
+  &lt;version&gt;${tomee.version}&lt;/version&gt;
+  &lt;type&gt;zip&lt;/type&gt;
+&lt;/dependency&gt;
+
+&lt;!-- tomee arquillian adapter --&gt;
+&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.openejb&lt;/groupId&gt;
+  &lt;artifactId&gt;arquillian-tomee-remote&lt;/artifactId&gt;
+  &lt;version&gt;${tomee.version}&lt;/version&gt;
+&lt;/dependency&gt;</code></pre>
+</div>
+</div>
+</div></td>
+</tr>
+</tbody>
+</table>
+
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">TomEE Embedded dependencies</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div>
+<div class="content monospaced">
+<pre class="highlight"><code class="xml">&lt;!-- tomee zip --&gt;
+&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.openejb&lt;/groupId&gt;
+  &lt;artifactId&gt;tomee-embedded&lt;/artifactId&gt;
+  &lt;version&gt;${tomee.version}&lt;/version&gt;
+  &lt;type&gt;zip&lt;/type&gt;
+&lt;/dependency&gt;
+
+&lt;!-- tomee embedded arquillian adapter --&gt;
+&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.openejb&lt;/groupId&gt;
+  &lt;artifactId&gt;arquillian-tomee-embedded&lt;/artifactId&gt;
+  &lt;version&gt;${tomee.version}&lt;/version&gt;
+&lt;/dependency&gt;
+
+&lt;!-- tomee jaxrs --&gt;
+&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.openejb&lt;/groupId&gt;
+  &lt;artifactId&gt;tomee-jaxrs&lt;/artifactId&gt;
+  &lt;version&gt;${tomee.version}&lt;/version&gt;
+&lt;/dependency&gt;
+
+&lt;!-- tomee jaxws --&gt;
+&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.openejb&lt;/groupId&gt;
+  &lt;artifactId&gt;tomee-webservices&lt;/artifactId&gt;
+  &lt;version&gt;${tomee.version}&lt;/version&gt;
+&lt;/dependency&gt;</code></pre>
+</div>
+</div>
+</div></td>
+</tr>
+</tbody>
+</table>
+
+</div></div>
+
+<div class="col c2-1 c3-3 c4-3 c5-3 c6-3"><div class="blk">
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">TomEE maven plugin configuration</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+Configuration block is optional all attributes have defaul values.
+</td>
+</tr>
+</table>
+</div>
+<div>
+<div class="content monospaced">
+<pre class="highlight"><code class="xml">&lt;plugin&gt;
+ &lt;groupId&gt;org.apache.openejb.maven&lt;/groupId&gt;
+ &lt;artifactId&gt;tomee-maven-plugin&lt;/artifactId&gt;
+ &lt;version&gt;${tmp.version}&lt;/version&gt;
+ &lt;configuration&gt; &lt;!-- all is optional --&gt;
+  &lt;tomeeVersion&gt;1.5.0&lt;/tomeeVersion&gt;
+  &lt;tomeeClassifier&gt;plus&lt;/tomeeClassifier&gt; &lt;!-- webprofile, jaxrs --&gt;
+
+  &lt;!-- remote debugging --&gt;
+  &lt;debug&gt;false&lt;/debug&gt;
+  &lt;debugPort&gt;5005&lt;/debugPort&gt;
+
+  &lt;!-- http port - same exists for ajp and https --&gt;
+  &lt;tomeeHttpPort&gt;8080&lt;/tomeeHttpPort&gt;
+
+  &lt;!-- remove default tomee webapp --&gt;
+  &lt;removeDefaultWebapps&gt;true&lt;/removeDefaultWebapps&gt;
+  &lt;!-- remove even tomee webapp - if you don't use it --&gt;
+  &lt;removeTomeeWebapp&gt;true&lt;/removeTomeeWebapp&gt;
+
+  &lt;!-- add some libs to the server --&gt;
+  &lt;libs&gt;
+   &lt;lib&gt;mysql:mysql-connector-java:5.1.20&lt;/lib&gt;
+  &lt;/libs&gt;
+
+  &lt;!-- deploy another webapp, same exists for ear with &lt;apps /&gt; --&gt;
+  &lt;webapps&gt;
+   &lt;webapp&gt;org.superbiz:my-simple-webapp:1.0.0&lt;/webapp&gt;
+  &lt;/webapps&gt;
+
+  &lt;!-- auto update of the app --&gt;
+  &lt;/configuration&gt;
+   &lt;!-- can the app be redeployed after update --&gt;
+   &lt;reloadOnUpdate&gt;true&lt;/reloadOnUpdate&gt;
+   &lt;synchronization&gt;
+    &lt;!-- extensions updating and redeploying --&gt;
+    &lt;extensions&gt;
+     &lt;extension&gt;.class&lt;extension&gt;
+    &lt;/extensions&gt;
+    &lt;!-- extensions updating without redeploy --&gt;
+    &lt;updateOnlyExtensions&gt;
+     &lt;updateOnlyExtension&gt;.html&lt;updateOnlyExtension&gt;
+     &lt;updateOnlyExtension&gt;.js&lt;updateOnlyExtension&gt;
+     &lt;updateOnlyExtension&gt;.jcss&lt;updateOnlyExtension&gt;
+    &lt;/updateOnlyExtensions&gt;
+   &lt;/synchronization&gt;
+   &lt;!-- &lt;synchronizations/&gt; exist to handle multiple source/target --&gt;
+  &lt;/configuration&gt;
+ &lt;/configuration&gt;
+&lt;/plugin&gt;</code></pre>
+</div>
+</div>
+</div></td>
+</tr>
+</tbody>
+</table>
+
+</div></div>
+
+<div class="col c2-1 c3-2 c4-4 c5-4 c6-4"><div class="blk">
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">TomEE maven plugin information</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>Compatibility matrix:</p>
+</div>
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 50%">
+<col style="width: 50%">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>TomEE</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Maven plugin</strong></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.0-alpha-1</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.5.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.5.1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.1</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;= 1.5.2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">same as TomEE</p></td>
+</tr>
+</tbody>
+</table>
+
+<div class="paragraph">
+<p>Main goals:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>tomee:run: run and wait for the server</p>
+</li>
+<li>
+<p>tomee:debug: run in debug mode and wait for the server (alias of run)</p>
+</li>
+<li>
+<p>tomee:start: run the server</p>
+</li>
+<li>
+<p>tomee:stop: stop the server (to use with start)</p>
+</li>
+<li>
+<p>tomee:configtest: run configtest tomcat command</p>
+</li>
+<li>
+<p>tomee:deploy &lt;path&gt;: deploy path archive</p>
+</li>
+<li>
+<p>tomee:undeploy &lt;path&gt;: undeploy path archive. Note it should be the same path than the one used in deploy command</p>
+</li>
+<li>
+<p>tomee:list: list ejbs deployed</p>
+</li>
+<li>
+<p>tomee:build: build tomee but does not start it</p>
+</li>
+<li>
+<p>tomee:help: this</p>
+</li>
+</ul>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+almost all properties can be set as maven system properties prefixed by <code>tomee-plugin.</code>.
+</td>
+</tr>
+</table>
+</div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Tip</div>
+</td>
+<td class="content">
+to debug use <code>mvn tomee:debug</code> instead of <code>mvn tomee:run</code>.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>Doc is on <a href="http://tomee.apache.org/tomee-maven-plugin.html">http://tomee.apache.org/tomee-maven-plugin.html</a>.</p>
+</div>
+<div>
+<div class="content monospaced">
+<pre></pre>
+</div>
+</div>
+</div></td>
+</tr>
+</tbody>
+</table>
+
+</div></div>
+</div>
+<div class="horizontal-block" id="Arquillian">
+<div class="col c2-1 c3-1 c4-1 c5-1 c6-1"><div class="blk">
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">OpenEJB embedded adapter configuration</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div>
+<div class="content monospaced">
+<pre class="highlight"><code class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;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"&gt;
+ &lt;container qualifier="openejb" default="true"&gt;
+  &lt;configuration&gt;
+   &lt;!-- container properties (~ conf/system.properties) --&gt;
+   &lt;property name="properties"&gt;
+    # you can declare a resource, container...
+    db1 = new://Resource?type=DataSource
+    db1.JdbcUrl = jdbc:hsqldb:mem:db1
+
+    # special hook based on ShrinkWrap
+    # to predeployed some archives at startup
+    # (instead of by test)
+    #
+    # syntax is comma separated list
+    # and multiple archives in the same package
+    # can be aggregated: package.[A1|A2]
+    openejb.arquillian.predeploy-archives = org.foo.SimpleArchive
+   &lt;/property&gt;
+  &lt;/configuration&gt;
+ &lt;/container&gt;
+&lt;/arquillian&gt;</code></pre>
+</div>
+</div>
+</div></td>
+</tr>
+</tbody>
+</table>
+
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">TomEE Arquillian Adapters</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>TomEE arquillian adapters support the system property <code>openejb.arquillian.adapter</code>
+to select which adapter to use if multiple are at the classpath (Arquillian tolerate a single
+one by default).</p>
+</div>
+<div class="paragraph">
+<p>This way you can run your test against several OpenEJB/TomEE adapters in the same build (no need
+of any maven profile). A complete sample can be found here:
+<a href="http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/multiple-arquillian-adapters/">http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/multiple-arquillian-adapters/</a>).</p>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Simple Arquillian test</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div>
+<div class="content monospaced">
+<pre class="highlight"><code class="java">@RunWith(Arquillian.class)
+public class SimpleArquillianTest {
+ @Deployment(name = "archive")
+ public static WebArchive war() {
+  return ShrinkWrap.create(WebArchive.class, "test.war")
+   .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
+   .addClasses(MyBean.class);
+  }
+
+  @Inject
+  private MyBean bean;
+
+  @Test
+  public void testRunningInDep1() {
+    assertEquals("foo", bean.foo());
+  }
+}</code></pre>
+</div>
+</div>
+</div></td>
+</tr>
+</tbody>
+</table>
+
+</div></div>
+
+<div class="col c2-2 c3-2 c4-2 c5-2 c6-2"><div class="blk">
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">TomEE embedded adapter configuration</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div>
+<div class="content monospaced">
+<pre class="highlight"><code class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;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"&gt;
+ &lt;container qualifier="tomee" default="true"&gt;
+  &lt;configuration&gt;
+   &lt;property name="serverXml"&gt;conf/server.xml&lt;/property&gt;
+
+   &lt;!-- port = -1 means random --&gt;
+   &lt;property name="httpPort"&gt;-1&lt;/property&gt;
+   &lt;property name="stopPort"&gt;-1&lt;/property&gt;
+
+   &lt;!-- ssl --&gt;
+   &lt;property name="httpsPort"&gt;-1&lt;/property&gt;
+   &lt;property name="ssl"&gt;false&lt;/property&gt;
+   &lt;property name="keystoreFile"&gt;keystore-path&lt;/property&gt;
+   &lt;property name="keystorePass"&gt;changeit&lt;/property&gt;
+   &lt;property name="keystoreType"&gt;JKS&lt;/property&gt;
+   &lt;property name="clientAuth"&gt;false&lt;/property&gt;
+   &lt;property name="keyAlias"&gt;alias&lt;/property&gt;
+   &lt;property name="sslProtocol"&gt;protocol&lt;/property&gt;
+
+   &lt;!-- where to create TomEE files --&gt;
+   &lt;property name="dir"&gt;target/tomee-embedded&lt;/property&gt;
+
+   &lt;!-- where to dump on disk applications to deploy --&gt;
+   &lt;property name="appWorkingDir"&gt;target/working-dir&lt;/property&gt;
+
+   &lt;!-- optional - limit the port allowed when random --&gt;
+   &lt;property name="portRange"&gt;20001-30000&lt;/property&gt;
+
+   &lt;!-- container config --&gt;
+   &lt;property name="properties"&gt;
+    # same as embedded case
+   &lt;/property&gt;
+   
+   &lt;!-- Deployer config --&gt;
+   &lt;property name="deployerProperties"&gt;
+    # openejb.deployer.binaries.use=true
+    # openejb.deployer.forced.appId=[name]
+    # openejb.deployer.save-deployments=false
+   &lt;/property&gt;
+  &lt;/configuration&gt;
+ &lt;/container&gt;
+&lt;/arquillian&gt;</code></pre>
+</div>
+</div>
+</div></td>
+</tr>
+</tbody>
+</table>
+
+</div></div>
+
+<div class="col c2-1 c3-3 c4-3 c5-3 c6-3"><div class="blk">
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">TomEE remote adapter configuration</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div>
+<div class="content monospaced">
+<pre class="highlight"><code class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;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"&gt;
+ &lt;container qualifier="tomee" default="true"&gt;
+  &lt;configuration&gt;
+   &lt;property name="serverXml"&gt;conf/server.xml&lt;/property&gt;
+
+   &lt;!-- tomee zip to use --&gt;
+   &lt;property name="groupId"&gt;org.apache.openejb&lt;/property&gt;
+   &lt;property name="artifactId"&gt;apache-tomee&lt;/property&gt;
+   &lt;property name="version"&gt;LATEST&lt;/property&gt;
+   &lt;property name="type"&gt;zip&lt;/property&gt;
+
+   &lt;!-- tomee provided files, ignored by default --&gt;
+   &lt;property name="bin"&gt;src/test/tomee/bin&lt;/property&gt;
+   &lt;property name="conf"&gt;src/test/tomee/conf&lt;/property&gt;
+   &lt;property name="lib"&gt;src/test/tomee/lib&lt;/property&gt;
+
+   &lt;!--
+    remote debugging,
+    -Dopenejb.server.debug can activate it too
+   --&gt;
+   &lt;property name="debug"&gt;false&lt;/property&gt;
+   &lt;property name="debugPort"&gt;5005&lt;/property&gt;
+
+   &lt;!-- nice one line logging --&gt;
+   &lt;property name="simpleLog"&gt;true&lt;/property&gt;
+
+   &lt;!-- jvm config --&gt;
+   &lt;property name="catalina_opts"&gt;-XX:-UseParallelGC&lt;/property&gt;
+
+   &lt;!-- remove if exist --&gt;
+   &lt;property name="cleanOnStartUp"&gt;true&lt;/property&gt;
+
+   &lt;!-- remove default webapps --&gt;
+   &lt;property name="removeunusedWebapps"&gt;true&lt;/property&gt;
+
+   &lt;!-- port = -1 means random --&gt;
+   &lt;property name="httpPort"&gt;-1&lt;/property&gt;
+   &lt;property name="stopPort"&gt;-1&lt;/property&gt;
+
+   &lt;!-- where to create TomEE --&gt;
+   &lt;property name="dir"&gt;target/apache-tomee&lt;/property&gt;
+
+   &lt;!-- where to dump on disk applications to deploy --&gt;
+   &lt;property name="appWorkingDir"&gt;target/working-dir&lt;/property&gt;
+
+   &lt;!-- optional - limit the port allowed when random --&gt;
+   &lt;property name="portRange"&gt;20001-30000&lt;/property&gt;
+
+   &lt;!-- container config --&gt;
+   &lt;property name="properties"&gt;
+    # same as embedded case
+   &lt;/property&gt;
+   
+   &lt;!-- Deployer config --&gt;
+   &lt;property name="deployerProperties"&gt;
+    # openejb.deployer.binaries.use=true
+    # openejb.deployer.forced.appId=[name]
+    # openejb.deployer.save-deployments=false
+   &lt;/property&gt;
+   
+  &lt;/configuration&gt;
+ &lt;/container&gt;
+&lt;/arquillian&gt;</code></pre>
+</div>
+</div>
+</div></td>
+</tr>
+</tbody>
+</table>
+
+</div></div>
+
+<div class="col c2-2 c3-2 c4-4 c5-4 c6-4"><div class="blk">
+<table class="tableblock frame-all grid-all" style="width: 100%">
+<colgroup>
+<col style="width: 100%">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Multiple TomEE with Arquillian</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div>
+<div class="content monospaced">
+<pre class="highlight"><code class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;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"&gt;
+ &lt;group qualifier="tomee-cluster"&gt;
+  &lt;container qualifier="tomee-1"&gt;
+   &lt;configuration&gt;
+    &lt;property name="httpPort"&gt;-1&lt;/property&gt;
+    &lt;property name="stopPort"&gt;-1&lt;/property&gt;
+    &lt;property name="ajpPort"&gt;-1&lt;/property&gt;
+    &lt;property name="dir"&gt;target/tomee1&lt;/property&gt;
+    &lt;property name="appWorkingDir"&gt;target/wd1&lt;/property&gt;
+   &lt;/configuration&gt;
+  &lt;/container&gt;
+  &lt;container qualifier="tomee-2"&gt;
+   &lt;configuration&gt;
+    &lt;property name="httpPort"&gt;-1&lt;/property&gt;
+    &lt;property name="stopPort"&gt;-1&lt;/property&gt;
+    &lt;property name="ajpPort"&gt;-1&lt;/property&gt;
+    &lt;property name="dir"&gt;target/tomee2&lt;/property&gt;
+    &lt;property name="appWorkingDir"&gt;target/wd2&lt;/property&gt;
+   &lt;/configuration&gt;
+  &lt;/container&gt;
+ &lt;/group&gt;
+&lt;/arquillian&gt;</code></pre>
+</div>
+</div>
+
+<div class="paragraph">
+<p>Then in java just declare "as usual" multiple deployments and match them in your test methods:</p>
+</div>
+<div>
+<div class="content monospaced">
+<pre class="highlight"><code class="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></td>
+</tr>
+</tbody>
+</table>
+
+</div></div>
+</div>
+</div>
+</div>
+<div style="clear: both;"></div>
+<hr>
+
+</div>
+<div id="clearing-div" style="clear:both;"></div>
+</div>
+</div>
+<footer>
+<div class="mid">
+TomEE RefCard - revision 1-SNAPSHOT - 20140311-1059
+</div>
+</footer>
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/remote-server.mdtext
----------------------------------------------------------------------
diff --git a/docs/remote-server.mdtext b/docs/remote-server.mdtext
new file mode 100644
index 0000000..9839a8c
--- /dev/null
+++ b/docs/remote-server.mdtext
@@ -0,0 +1,60 @@
+Title: Remote Server
+
+!http://www.openejb.org/images/diagram-remote-server.gif|valign=top,
+align=right, hspace=15!
+<a name="RemoteServer-AccessingEJBsRemotely"></a>
+# Accessing EJBs Remotely
+
+When using OpenEJB as a stand-alone server you can connect across a network
+and access EJBs from a remote client.  The client code for accessing an
+EJB's Remote Interface is the same, however to actually connect across a
+network to the server, you need to specify different JNDI parameters.
+
+<a name="RemoteServer-Shortversion"></a>
+# Short version
+
+Using OpenEJB's default remote server implementation is pretty straight
+forward. You simply need to:
+
+1. Deploy your bean.
+1. Start the server on the IP and Port you want, 25.14.3.92 and 4201 for
+example.
+1. Use that information in your client to create an initial context
+1. Add the right jars to your client's classpath
+
+So, here it is in short.
+
+Deploy your bean with the Deploy Tool:
+
+    c:\openejb> openejb.bat deploy beans\myBean.jar
+
+See the [OPENEJBx30:Deploy Tool](openejbx30:deploy-tool.html)
+ documentation for more details on deploying beans.
+
+Start the server:
+
+    c:\openejb> openejb.bat start -h 25.14.3.92 -p 4201
+
+See the Remote Server command-line guide for more details on starting the
+Remote Server.
+
+Create an initial context in your client as such:
+
+
+    Properties p = new Properties();
+    p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
+    p.put("java.naming.provider.url", "ejbd://25.14.3.92:4201");
+    p.put("java.naming.security.principal", "myuser");
+    p.put("java.naming.security.credentials", "mypass");
+        
+    InitialContext ctx = new InitialContext(p);
+
+
+If you don't have any EJBs or clients to run, try the ubiquitous [Hello World](openejbx30:hello-world.html)
+ example.
+Add the following library to your clients classpath:
+
+* openejb-client-x.x.x.jar
+* javaee-api-x.x.jar
+
+Both can be found in the lib directory where you installed OpenEJB or in Maven repositories.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/resource-injection.mdtext
----------------------------------------------------------------------
diff --git a/docs/resource-injection.mdtext b/docs/resource-injection.mdtext
new file mode 100644
index 0000000..6a1a23b
--- /dev/null
+++ b/docs/resource-injection.mdtext
@@ -0,0 +1,180 @@
+<a name="ResourceInjection-Overview"></a>
+# @Resource Overview
+
+This example demonstrates the use of the injection of environment entries
+using <span style="color: #217D18;">**@Resource**</span> annotation.
+
+The EJB 3.0 specification (*EJB Core Contracts and Requirements*) section
+16.2.2 reads:
+
+*A field or method of a bean class may be annotated to request that an entry from the bean's environment be injected. Any of the types of resources or other environment entries described in this chapter may be injected. Injection may also be requested using entries in the deployment descriptor corresponding to each of these
+resource types.*
+
+*Environment entries may also be injected into the bean through bean methods that follow the naming conventions for JavaBeans properties. The annotation is applied to the set method for the property, which is the method that is called to inject the environment entry. The JavaBeans property name (not the method name) is used as the default JNDI name.*
+
+The *PurchaseOrderBean* class shows use of field-level **@Resource**
+annotation.
+
+The *InvoiceBean* class shows the use of method-level **@Resource**
+annotation.
+
+The source for this example can be checked out from svn:
+
+> $ svn co
+http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/injection-of-env-entry
+
+To run it change your working directory to the directory
+*injection-of-env-entry* and run the following maven2 commands:
+
+>$ cd injection-of-env-entry
+
+>$ mvn clean install
+
+<a name="ResourceInjection-TheCode"></a>
+# The Code
+
+<a name="ResourceInjection-Injectionthroughfield(field-levelinjection)"></a>
+## Injection through field (field-level injection)
+
+The *maxLineItem* field in *PurchaseOrderBean* class is annotated with **@Resource** annotation to inform the EJB container the location where in the code the injection of a simple environment entry should take place. The default value of 10 is assigned. You can modify the value of the environment entries at deployment time using deployment descriptor (**ejb-jar.xml**).
+
+<a name="ResourceInjection-@Resourceannotationofafield"></a>
+#### @Resource annotation of a field
+
+
+    @Resource
+    int maxLineItems = 10;
+
+
+<a name="ResourceInjection-Injectionthroughasettermethod(method-levelinjection)"></a>
+## Injection through a setter method (method-level injection)
+
+The *setMaxLineItem* method in *InvoiceBean* class is annotated with
+*@Resource* annotation to inject the simple environment entry. Only setters
+can be used as a way to inject environment entry values. 
+
+You could look up the env-entry using JNDI lookup() method and the
+following name:
+
+	java:comp/env/org.apache.openejb.examples.resource.InvoiceBean/maxLineItems
+
+The pattern is to combine the fully-qualified class name and the name of a
+instance field (or a name of the setter method without _set_ prefix and the
+first letter lowercased).
+
+<a name="ResourceInjection-@Resourceannotationofasettermethod"></a>
+#### @Resource annotation of a setter method
+
+
+    @Resource
+    public void setMaxLineItems(int maxLineItems) {
+        this.maxLineItems = maxLineItems;
+    }
+
+
+<a name="ResourceInjection-env-entryinejb-jar.xml"></a>
+#### Using env-entry in ejb-jar.xml
+
+    <env-entry>
+		<description>The maximum number of line items per invoice.</description>        
+		<env-entry-name>org.apache.openejb.examples.injection.InvoiceBean/maxLineItems</env-entry-name>
+		<env-entry-type>java.lang.Integer</env-entry-type>
+		<env-entry-value>15</env-entry-value>
+    </env-entry>
+
+
+<a name="ResourceInjection-Using@Resourceannotatedenv-entry"></a>
+#### Using @Resource annotated env-entry
+
+    public void addLineItem(LineItem item) throws TooManyItemsException {
+       if (item == null) {
+          throw new IllegalArgumentException("Line item must not be null");
+       }
+    
+       if (itemCount <= maxLineItems) {
+          items.add(item);
+          itemCount++;
+       } else {
+          throw new TooManyItemsException("Number of items exceeded the maximum limit");
+       }
+    }
+
+
+<a name="ResourceInjection-JUnitTest"></a>
+# JUnit Test
+
+Writing an JUnit test for this example is quite simple. We need just to
+write a setup method to create and initialize the InitialContext, and then
+write our test methods.
+
+<a name="ResourceInjection-Testfixture"></a>
+#### Test fixture
+
+
+    protected void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
+        properties.setProperty("openejb.deployments.classpath.include", ".*resource-injection.*");
+        initialContext = new InitialContext(properties);
+    }
+
+
+<a name="ResourceInjection-Testmethods"></a>
+#### Test methods
+
+    public void testAddLineItem() throws Exception {
+        Invoice order = (Invoice)initialContext.lookup("InvoiceBeanBusinessRemote");
+        assertNotNull(order);
+        LineItem item = new LineItem("ABC-1", "Test Item");
+    
+        try {
+    	order.addLineItem(item);
+        } catch (TooManyItemsException tmie) {
+    	fail("Test failed due to: " + tmie.getMessage());
+        }
+    }
+
+
+<a name="ResourceInjection-Running"></a>
+# Running
+
+Running the example is fairly simple. Just execute the following commands:
+
+>$ cd injection-of-env-entry
+>
+>$ mvn clean test
+
+
+    -------------------------------------------------------
+     T E S T S
+    -------------------------------------------------------
+    Running org.superbiz.injection.PurchaseOrderBeanTest
+    Apache OpenEJB 3.0.0-SNAPSHOT	 build: 20071218-01:41
+    http://tomee.apache.org/
+    INFO - openejb.home = c:\oss\openejb3\examples\injection-of-env-entry
+    INFO - openejb.base = c:\oss\openejb3\examples\injection-of-env-entry
+    WARN - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+    INFO - Configuring Service(id=Default Security Service,type=SecurityService, provider-id=Default Security Service)
+    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+    INFO - Configuring Service(id=Default JDK 1.3 ProxyFactory, type=ProxyFactory, provider-id=Default JDK 1.3 ProxyFactory)
+    INFO - Found EjbModule in classpath: c:\oss\openejb3\examples\injection-of-env-entry\target\classes
+    INFO - Configuring app: c:\oss\openejb3\examples\injection-of-env-entry\target\classes
+    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+    INFO - Auto-creating a container for bean InvoiceBean: Container(type=STATEFUL, id=Default Stateful Container)
+    INFO - Loaded Module: c:\oss\openejb3\examples\injection-of-env-entry\target\classes
+    INFO - Assembling app: c:\oss\openejb3\examples\injection-of-env-entry\target\classes
+    INFO - Jndi(name=InvoiceBeanRemote) --> Ejb(deployment-id=InvoiceBean)
+    INFO - Jndi(name=PurchaseOrderBeanRemote) --> Ejb(deployment-id=PurchaseOrderBean)
+    INFO - Created Ejb(deployment-id=InvoiceBean, ejb-name=InvoiceBean, container=Default Stateful Container)
+    INFO - Created Ejb(deployment-id=PurchaseOrderBean, ejb-name=PurchaseOrderBean, container=Default Stateful Container)
+    INFO - Deployed Application(path=c:\oss\openejb3\examples\injection-of-env-entry\target\classes)
+    INFO - OpenEJB ready.
+    OpenEJB ready.
+    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.859 sec
+    Running org.superbiz.injection.InvoiceBeanTest
+    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.031 sec
+    
+    Results :
+    
+    Tests run: 4, Failures: 0, Errors: 0, Skipped: 0
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/resource-ref-for-datasource.mdtext
----------------------------------------------------------------------
diff --git a/docs/resource-ref-for-datasource.mdtext b/docs/resource-ref-for-datasource.mdtext
new file mode 100644
index 0000000..e48552e
--- /dev/null
+++ b/docs/resource-ref-for-datasource.mdtext
@@ -0,0 +1,42 @@
+#  Via annotation
+
+    package org.superbiz.refs;
+
+    import javax.annotation.Resource;
+    import javax.ejb.Stateless;
+    import javax.naming.InitialContext;
+    import javax.sql.DataSource;
+
+    @Stateless
+    @Resource(name = "myFooDataSource", type = DataSource.class)
+    public class MyDataSourceRefBean implements MyBeanInterface {
+
+        @Resource
+        private DataSource myBarDataSource;
+
+        public void someBusinessMethod() throws Exception {
+            if (myBarDataSource == null) throw new NullPointerException("myBarDataSource not injected");
+
+            // Both can be looked up from JNDI as well
+            InitialContext context = new InitialContext();
+            DataSource fooDataSource = (DataSource) context.lookup("java:comp/env/myFooDataSource");
+            DataSource barDataSource = (DataSource) context.lookup("java:comp/env/org.superbiz.refs.MyDataSourceRefBean/myBarDataSource");
+        }
+    }
+
+# Via xml
+
+The above @Resource annotation usage is 100% equivalent to the following xml.
+
+    <resource-ref>
+        <res-ref-name>myFooDataSource</res-ref-name>
+        <res-type>javax.sql.DataSource</res-type>
+    </resource-ref>
+    <resource-ref>
+        <res-ref-name>org.superbiz.refs.MyDataSourceRefBean/myBarDataSource</res-ref-name>
+        <res-type>javax.sql.DataSource</res-type>
+        <injection-target>
+            <injection-target-class>org.superbiz.refs.MyDataSourceRefBean</injection-target-class>
+            <injection-target-name>myBarDataSource</injection-target-name>
+        </injection-target>
+    </resource-ref>

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/running-a-standalone-openejb-server.mdtext
----------------------------------------------------------------------
diff --git a/docs/running-a-standalone-openejb-server.mdtext b/docs/running-a-standalone-openejb-server.mdtext
new file mode 100644
index 0000000..2fd04bf
--- /dev/null
+++ b/docs/running-a-standalone-openejb-server.mdtext
@@ -0,0 +1,91 @@
+Title: Running a standalone OpenEJB server
+
+<a name="RunningastandaloneOpenEJBserver-ConfiguringtheOpenEJBRuntime"></a>
+# Configuring the OpenEJB Runtime
+The OpenEJB Eclipse plugin provides support for running OpenEJB as a
+standalone server in Eclipse using WTP.
+
+To setup a server, first of all, you will need to have a copy of OpenEJB
+extracted on your machine. Once you have that, the next step is to set up a
+runtime.
+
+To set up a new runtime, click on Window, Preferences, and select Installed
+Runtimes under the Server category. Click the Add button.
+
+![http://people.apache.org/~jgallimore/images/server_step_4.jpg][1]
+ 
+Select OpenEJB 3.0.0 from the Apache category, and click next. If you
+choose to 'also create a new server' on this panel, you can add a server
+straight after configuring the runtime.
+
+![http://people.apache.org/~jgallimore/images/server_step_5.jpg][2]
+ 
+Browse to, or enter the path to your copy of OpenEJB. Click on Finish.
+
+<a name="RunningastandaloneOpenEJBserver-ConfiguringtheOpenEJBServer"></a>
+# Configuring the OpenEJB Server
+Open the Servers view (if it isn't already), and right click and select
+New->Server.
+
+![http://people.apache.org/~jgallimore/images/server_step_8.jpg][3]
+ 
+Select OpenEJB 3.0.0 from the Apache category, ensure you have the OpenEJB
+runtime selected, and click Next.
+
+![http://people.apache.org/~jgallimore/images/server_step_9.jpg][4]
+ 
+Select the EJB port for the server, and select Finish.
+
+![http://people.apache.org/~jgallimore/images/server_step_10.jpg][5]
+
+<a name="RunningastandaloneOpenEJBserver-Deployingaproject"></a>
+# Deploying a project
+In order to deploy your project to an OpenEJB server in Eclipse, your
+project must be a Java EE project, with the EJB facet enabled. If your
+project doesn't have the Faceted nature, you can use the OpenEJB plugin to
+add it. Simply select OpenEJB->Add Faceted Nature from the menu bar.
+
+![http://people.apache.org/~jgallimore/images/server_step_1.jpg][6]
+ 
+To add the EJB facet, right click on the project in the navigator, and
+select Properties. Select Project Facets on the left hand side. Click on
+the Modify Project button.
+
+![http://people.apache.org/~jgallimore/images/server_step_2.jpg][7]
+ 
+Select the EJB Module facet, and the Java Facet. Remember to select your
+OpenEJB runtime too. Click Next.
+
+![http://people.apache.org/~jgallimore/images/server_step_6.jpg][8]
+ 
+Enter the source folder for the EJBs in your project and click Finish.
+
+![http://people.apache.org/~jgallimore/images/server_step_7.jpg][9]
+ 
+Now right click on your OpenEJB server in the servers view, and select Add
+and Remove Projects.
+
+![http://people.apache.org/~jgallimore/images/server_step_11.jpg][10]
+ 
+Add your project to the server, and click Finish.
+
+![http://people.apache.org/~jgallimore/images/server_step_12.jpg][11]
+ 
+To start the server, Right click on your OpenEJB server, and select Start.
+
+![http://people.apache.org/~jgallimore/images/server_step_13.jpg][12]
+ 
+
+
+  [1]: http://people.apache.org/~jgallimore/images/server_step_4.jpg
+  [2]: http://people.apache.org/~jgallimore/images/server_step_5.jpg
+  [3]: http://people.apache.org/~jgallimore/images/server_step_8.jpg
+  [4]: http://people.apache.org/~jgallimore/images/server_step_9.jpg
+  [5]: http://people.apache.org/~jgallimore/images/server_step_10.jpg
+  [6]: http://people.apache.org/~jgallimore/images/server_step_1.jpg
+  [7]: http://people.apache.org/~jgallimore/images/server_step_2.jpg
+  [8]: http://people.apache.org/~jgallimore/images/server_step_6.jpg
+  [9]: http://people.apache.org/~jgallimore/images/server_step_6.jpg
+  [10]: http://people.apache.org/~jgallimore/images/server_step_11.jpg
+  [11]: http://people.apache.org/~jgallimore/images/server_step_12.jpg
+  [12]: http://people.apache.org/~jgallimore/images/server_step_13.jpg
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/securing-a-web-service.mdtext
----------------------------------------------------------------------
diff --git a/docs/securing-a-web-service.mdtext b/docs/securing-a-web-service.mdtext
new file mode 100644
index 0000000..80b565e
--- /dev/null
+++ b/docs/securing-a-web-service.mdtext
@@ -0,0 +1,239 @@
+Title: Securing a Web Service
+
+Web Services are a very common way to implement a Service Oriented
+Architecture (SOA).
+ 
+There are lots of web service standards/specifications (XML, SOAP, WSDL,
+UUDI, WS-*, ...) coming from organizations like W3C, OASIS, WS-I, ...
+And there are java web service standards like JAX-WS 1.x (JSR 181), JAX-WS
+2.0 (JSR 224). 
+
+OpenEJB provides a standard way to implement web services transport
+protocol throughout the JAX-WS specification.
+Java basic standards for web services (JAX-WS) do lack some features that
+are required in most real world applications, e.g. standard ways for
+handling security and authentication (there is no java specification for
+Oasis's WS-Security specification).
+
+OpenEJB provides two mechanisms to secure webservices - HTTP authentication
+and WS-Security: 
+
+HTTPS : works at the transport level, enables a point-to-point security.
+It has no impact on developments. It allows you :
+
+1. To secure data over the network with data encrypted during transport
+2. To identify the end user with SSLv3 with client certificate required
+3. OpenEJB supports BASIC authentication over HTTP(S), using the configured
+JAAS provider. This will honour any EJB security roles you have setup using
+@RolesAllowed. See the webservice-security example in the OpenEJB codebase [http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/](http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/)
+
+*Warning:
+Currently only BASIC is the only HTTP authentication mechanism available
+when running OpenEJB standalone or in a unit test, but we hope to support
+DIGEST in the future.*
+
+
+WS-Security: works at the message (SOAP) level, enables a higher-level
+security, 
+Nowadays, SOAP implementations use other protocols than just HTTP so we
+need to apply security to the message itself and not only at the transport
+layer. Moreover, HTTPS can only be used for securing point-to-point
+services which tend to decrease with Enterprise Service Bus for example. 
+
+The Oasis organization has defined a standard (part of well-known WS-*)
+which aims at providing high level features in the context of web services:
+WS-Security. It provides a standard way to secure your services above and
+beyond transport level protocols such as HTTPS. WS-Security relies on other
+standards like XML-Encryption.
+
+Main features are:
+
+1. Timestamp a message,
+2. Pass credentials (plain text and/or ciphered) between services,
+3. Sign messages,
+4. Encrypt messages or part of messages.
+
+Again, JAX-WS doesn't standardize security for web services. OpenEJB
+provides a common and highly configurable way to configure WS-Security in
+association with the JAX-WS usage without vendor dependence. Internally,
+OpenEJB integrates Apache WSS4J as the WS-Security implementation. To use
+the integration, you will need to configure WSS4J using the
+*openejb-jar.xml*.
+ 
+*Warning:
+the proposed WS-Security integration is only used at server side.
+Currently, WS-Security client configuration is not managed by OpenEJB. You
+can use the JAX-WS API to create a stub and then rely on the implementation
+to set up WS-Security properties.* 
+
+This configuration file lets you set up incoming and outgoing security
+parameters. Incoming and outgoing configuration is independent so that you
+can configure either one or the other or both. You can decide to check
+client credentials for incoming messages and sign outgoing messages
+(response).
+
+<a name="SecuringaWebService-Configurationprinciples"></a>
+# Configuration principles
+The configuration is made in the *openejb-jar.xml*. Each endpoint web
+service can provide a set of properties to customize WS-Security behavior
+through the <properties> element. The content of this element is consistent
+with the overall structure of *openejb.xml*. The format for properties is
+the same as if you would use a common java property file.
+
+
+    
+    <properties>
+      wss4j.in.action = UsernameToken
+      wss4j.in.passwordType = PasswordDigest
+      wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler
+    </properties>
+    
+
+
+In order to recover WSS4J properties both for input and output, we use
+naming conventions.
+Each property is made of 
+   <wss4j>.<in|out>.<wss4j property name>=<wss4j property value>
+
+For example : *wss4j.in.action = UsernameToken*
+
+<a name="SecuringaWebService-UsernameToken(Passworddigest)example"></a>
+# Username Token (Password digest) example
+<a name="SecuringaWebService-Excerptfrom*openejb-jar.xml*."></a>
+#### Excerpt from *openejb-jar.xml*.
+
+
+    <openejb-jar xmlns="http://tomee.apache.org/xml/ns/openejb-jar-2.2">
+        <enterprise-beans>
+    	...
+    	<session>
+    	    <ejb-name>CalculatorImpl</ejb-name>
+    	    <web-service-security>
+    		<security-realm-name/>
+    		<transport-guarantee>NONE</transport-guarantee>
+    		<auth-method>WS-SECURITY</auth-method>
+    		<properties>
+    		    wss4j.in.action = UsernameToken
+    		    wss4j.in.passwordType = PasswordDigest
+            wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler
+    		</properties>
+    	    </web-service-security>
+    	</session>
+    	...
+        </enterprise-beans>
+    </openejb-jar>
+
+
+<a name="SecuringaWebService-Requestsentbytheclient."></a>
+#### Request sent by the client. 
+This request contains SOAP headers to manage security. You can see
+*UsernameToken* tag from the WS-Security specification.
+
+    POST /CalculatorImplUsernameTokenHashedPassword HTTP/1.1
+    Content-Type: text/xml; charset=UTF-8
+    SOAPAction: ""
+    Accept: *
+    Cache-Control: no-cache
+    Pragma: no-cache
+    User-Agent: Java/1.5.0_05
+    Host: 127.0.0.1:8204
+    Connection: keep-alive
+    Transfer-Encoding: chunked
+
+    524
+    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+      <soap:Header>
+        <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soap:mustUnderstand="1">
+          <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
+    wsu:Id="UsernameToken-22402238"
+    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
+            <wsse:Username xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">jane</wsse:Username>
+            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"
+    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">tf7k3a4GREIt1xec/KXVmBdRNIg=</wsse:Password>
+            <wsse:Nonce xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">cKhUhmjQ1hGYPsdOLez5kA==</wsse:Nonce>
+            <wsu:Created xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2009-04-14T20:16:26.203Z</wsu:Created>
+          </wsse:UsernameToken>
+        </wsse:Security>
+      </soap:Header>
+      <soap:Body>
+        <ns1:sum xmlns:ns1="http://superbiz.org/wsdl">
+          <arg0>4</arg0>
+          <arg1>6</arg1>
+        </ns1:sum>
+      </soap:Body>
+    </soap:Envelope>
+
+
+<a name="SecuringaWebService-Theresponsereturnedfromtheserver."></a>
+#### The response returned from the server.
+
+    HTTP/1.1 200 OK
+    Content-Length: 200
+    Connection: close
+    Content-Type: text/xml; charset=UTF-8
+    Server: OpenEJB/??? (unknown os)
+    
+    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+      <soap:Body>
+        <ns1:sumResponse xmlns:ns1="http://superbiz.org/wsdl">
+          <return>10</return>
+        </ns1:sumResponse>
+      </soap:Body>
+    </soap:Envelope>
+
+
+<a name="SecuringaWebService-JAASwithWS-Security"></a>
+# JAAS with WS-Security
+
+@RolesAllowed doesn't work straight off with WS-Security, but you can add
+calls to the OpenEJB SecurityService to login to a JAAS provider to a
+CallbackHandler. Once you have done this, any permissions configured with
+@RolesAllowed should be honoured.
+
+Here is a snippet from the webservice-ws-security example demonstrating
+this:
+
+
+    public class CustomPasswordHandler implements CallbackHandler {
+
+        public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+            WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
+
+            if (pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN) {
+                // TODO get the password from the users.properties if possible
+                pc.setPassword("waterfall");
+
+            } else if (pc.getUsage() == WSPasswordCallback.DECRYPT) {
+
+                pc.setPassword("serverPassword");
+
+            } else if (pc.getUsage() == WSPasswordCallback.SIGNATURE) {
+
+                pc.setPassword("serverPassword");
+
+            }
+
+            if ((pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN) || (pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN_UNKNOWN)) {
+
+                SecurityService securityService = SystemInstance.get().getComponent(SecurityService.class);
+                Object token = null;
+                try {
+                    securityService.disassociate();
+
+                    token = securityService.login(pc.getIdentifer(), pc.getPassword());
+                    securityService.associate(token);
+
+                } catch (LoginException e) {
+                    e.printStackTrace();
+                    throw new SecurityException("wrong password");
+                }
+            }
+        }
+    }
+    
+
+
+<a name="SecuringaWebService-Examples"></a>
+# Examples
+A full example (webservice-ws-security) is available with OpenEJB Examples.
+


[12/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/jms-resources-and-mdb-container.mdtext
----------------------------------------------------------------------
diff --git a/docs/jms-resources-and-mdb-container.mdtext b/docs/jms-resources-and-mdb-container.mdtext
new file mode 100644
index 0000000..91d305a
--- /dev/null
+++ b/docs/jms-resources-and-mdb-container.mdtext
@@ -0,0 +1,279 @@
+Title: JMS Resources and MDB Container
+
+# External ActiveMQ Broker
+
+    <tomee>
+        <Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
+            # Do not start the embedded ActiveMQ broker
+            BrokerXmlConfig  =
+            ServerUrl = tcp://someHostName:61616
+        </Resource>
+
+        <Resource id="MyJmsConnectionFactory" type="javax.jms.ConnectionFactory">
+            ResourceAdapter = MyJmsResourceAdapter
+        </Resource>
+
+        <Container id="MyJmsMdbContainer" ctype="MESSAGE">
+            ResourceAdapter = MyJmsResourceAdapter
+        </Container>
+
+        <Resource id="FooQueue" type="javax.jms.Queue"/>
+        <Resource id="BarTopic" type="javax.jms.Topic"/>
+    </tomee>
+
+    
+The `ServerUrl` would be changed to point to the host and port of the
+ActiveMQ process.  The various URL formats that ActiveMQ supports also
+work, such as 'failover:'.
+
+# Internal ActiveMQ Broker
+    
+    <tomee>
+        <Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
+            BrokerXmlConfig =  broker:(tcp://someHostName:61616)
+            ServerUrl       =  tcp://someHostName:61616
+        </Resource>
+
+        <Resource id="MyJmsConnectionFactory" type="javax.jms.ConnectionFactory">
+            ResourceAdapter = MyJmsResourceAdapter
+        </Resource>
+
+        <Container id="MyJmsMdbContainer" ctype="MESSAGE">
+            ResourceAdapter = MyJmsResourceAdapter
+        </Container>
+
+        <Resource id="FooQueue" type="javax.jms.Queue"/>
+        <Resource id="BarTopic" type="javax.jms.Topic"/>
+    </tomee>
+
+The `BrokerXmlConfig` tells ActiveMQ to start on the tcp host/port `someHostName` and `61616`
+
+## Internal ActiveMQ Broker with JDBC Persistence
+
+Adding the `DataSource` property to your `ActiveMQResourceAdapter` config will automatically setup JDBC Persistence using the
+`org.apache.activemq.store.jdbc.JDBCPersistenceAdapter`
+
+    <tomee>
+        <Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
+            BrokerXmlConfig =  broker:(tcp://someHostName:61616)
+            ServerUrl       =  tcp://someHostName:61616
+            DataSource      =  MyDataSource
+        </Resource>
+
+        <Resource id="MyDataSource" type="javax.sql.DataSource">
+            JdbcDriver  = org.hsqldb.jdbcDriver.
+            JdbcUrl	    = jdbc:hsqldb:file:data/hsqldb/hsqldb.
+            UserName    = sa
+            Password    = foo
+        </Resource>
+    </tomee>
+
+
+
+## Internal ActiveMQ Broker with activemq.xml
+
+The [activemq.xml](activemq.xml) file format requires a number of Spring dependencies, and is therefore not included in the distribution by default. This is purley due to the fact that this ActiveMQ file format is parsed using Spring libraries and this is beyond our control. However, the advantage is opening up the door to the huge number of configuration options available found here: [http://activemq.apache.org/xml-configuration.html](http://activemq.apache.org/xml-configuration.html).
+
+This support can be enabled by adding the right libraries and creating an [`[tomee]/conf/activemq.xml`](activemq.xml) file (Click the link for a basic example).
+
+Add the following jars to the `tomee/lib/` directory:
+
+- [spring-beans-3.2.9.RELEASE.jar](http://repo1.maven.org/maven2/org/springframework/spring-beans/3.2.9.RELEASE/spring-beans-3.2.9.RELEASE.jar)
+- [spring-context-3.2.9.RELEASE.jar](http://repo1.maven.org/maven2/org/springframework/spring-context/3.2.9.RELEASE/spring-context-3.2.9.RELEASE.jar)
+- [spring-core-3.2.9.RELEASE.jar](http://repo1.maven.org/maven2/org/springframework/spring-core/3.2.9.RELEASE/spring-core-3.2.9.RELEASE.jar)
+- [spring-web-3.2.9.RELEASE.jar](http://repo1.maven.org/maven2/org/springframework/spring-web/3.2.9.RELEASE/spring-web-3.2.9.RELEASE.jar)
+- [xbean-spring-3.9.jar](http://repo1.maven.org/maven2/org/apache/xbean/xbean-spring/3.2.9.RELEASE/xbean-spring-3.9.jar)
+
+Later versions should work, but have not been tested.
+
+Create an [activemq.xml file](activemq.xml) a in `[tomee]/conf/activemq.xml`.
+
+Then use the `xbean:file:` url prefix in the `BrokerXmlConfig` as shown belog.
+
+
+    <tomee>
+        <Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
+            BrokerXmlConfig =  xbean:file:conf/activemq.xml
+            ServerUrl       =  tcp://someHostName:61616
+        </Resource>
+
+        <Resource id="MyJmsConnectionFactory" type="javax.jms.ConnectionFactory">
+            ResourceAdapter = MyJmsResourceAdapter
+        </Resource>
+
+        <Container id="MyJmsMdbContainer" ctype="MESSAGE">
+            ResourceAdapter = MyJmsResourceAdapter
+        </Container>
+
+        <Resource id="FooQueue" type="javax.jms.Queue"/>
+        <Resource id="BarTopic" type="javax.jms.Topic"/>
+    </tomee>
+
+Finally, restart the server.
+
+
+# Configuration via System properties
+
+The same can be done via properties in an embedded configuration, via the
+`conf/system.properties` file or on the command line via `-D` flags.
+
+
+    Properties p = new Properties();
+    p.put(Context.INITIAL_CONTEXT_FACTORY, LocalInitialContextFactory.class.getName());
+
+    p.put("MyJmsResourceAdapter", "new://Resource?type=ActiveMQResourceAdapter");
+    p.put("MyJmsResourceAdapter.ServerUrl", "tcp://someHostName:61616");
+    p.put("MyJmsResourceAdapter.BrokerXmlConfig", "");
+
+    p.put("MyJmsConnectionFactory", "new://Resource?type=javax.jms.ConnectionFactory");
+    p.put("MyJmsConnectionFactory.ResourceAdapter", "MyJmsResourceAdapter");
+
+    p.put("MyJmsMdbContainer", "new://Container?type=MESSAGE");
+    p.put("MyJmsMdbContainer.ResourceAdapter", "MyJmsResourceAdapter");
+
+    p.put("FooQueue", "new://Resource?type=javax.jms.Queue");
+    p.put("BarTopic", "new://Resource?type=javax.jms.Topic");
+
+    InitialContext context = new InitialContext(p);
+
+# Global lookup of JMS Resources
+
+From anywhere in the same VM as the EJB Container you could lookup the
+above resources like so:
+
+    javax.jms.ConnectionFactory cf = (ConnectionFactory)
+            context.lookup("openejb:Resource/MyJmsConnectionFactory");
+
+    javax.jms.Queue queue = (Queue) context.lookup("openejb:Resource/FooQueue");
+    javax.jms.Topic topic = (Topic) context.lookup("openejb:Resource/BarTopic");
+
+# MDB ActivationConfig
+
+
+Here, the value for `destination` is the physical name of the desired destination. The value for
+`destinationType` is the class name that defines the type of destination. It should be `javax.jms.Queue` or `javax.jms.Topic`.
+
+The Activation Spec properties that can be configured are:
+
+<TABLE><TBODY>
+<TR>
+<TH> Property Name </TH>
+<TH> Required </TH>
+<TH> Default Value </TH>
+<TH> Description </TH>
+</TR>
+<TR>
+<TD> acknowledgeMode </TD>
+<TD> no </TD>
+<TD> Auto-acknowledge </TD>
+<TD> The JMS Acknowledgement mode to use. Valid values are: Auto-acknowledge or Dups-ok-acknowledge </TD>
+</TR>
+<TR>
+<TD> clientId </TD>
+<TD> no </TD>
+<TD> set in resource adapter </TD>
+<TD> The JMS Client ID to use (only really required for durable topics) </TD>
+</TR>
+<TR>
+<TD> destinationType </TD>
+<TD> yes </TD>
+<TD> null </TD>
+<TD> The type of destination; a queue or topic </TD>
+</TR>
+<TR>
+<TD> destination </TD>
+<TD> yes </TD>
+<TD> null </TD>
+<TD> The destination name (queue or topic name) </TD>
+</TR>
+<TR>
+<TD> enableBatch </TD>
+<TD> no </TD>
+<TD> false </TD>
+<TD> Used to enable transaction batching for increased performance </TD>
+</TR>
+<TR>
+<TD> maxMessagesPerBatch </TD>
+<TD> no </TD>
+<TD> 10 </TD>
+<TD> The number of messages per transaction batch </TD>
+</TR>
+<TR>
+<TD> maxMessagesPerSessions </TD>
+<TD> no </TD>
+<TD> 10 </TD>
+<TD> This is actually the prefetch size for the subscription.  (Yes, badly named). </TD>
+</TR>
+<TR>
+<TD> maxSessions </TD>
+<TD> no </TD>
+<TD> 10 </TD>
+<TD> The maximum number of concurrent sessions to use </TD>
+</TR>
+<TR>
+<TD> messageSelector </TD>
+<TD> no </TD>
+<TD> null </TD>
+<TD>Message Selector</A> to use on the subscription to perform content based routing filtering the messages </TD>
+</TR>
+<TR>
+<TD> noLocal </TD>
+<TD> no </TD>
+<TD> false </TD>
+<TD> Only required for topic subscriptions; indicates if locally published messages should be included in the subscription or not </TD>
+</TR>
+<TR>
+<TD> password </TD>
+<TD> no </TD>
+<TD> set in resource adapter </TD>
+<TD> The password for the JMS connection </TD>
+</TR>
+<TR>
+<TD> subscriptionDurability </TD>
+<TD> no </TD>
+<TD> NonDurable </TD>
+<TD> Whether or not a durable (topic) subscription is required. Valid values are: Durable or NonDurable </TD>
+</TR>
+<TR>
+<TD> subscriptionName </TD>
+<TD> no </TD>
+<TD> null </TD>
+<TD> The name of the durable subscriber. Only used for durable topics and combined with the clientID to uniquely identify the durable topic subscription </TD>
+</TR>
+<TR>
+<TD> userName </TD>
+<TD> no </TD>
+<TD> set in resource adapter </TD>
+<TD> The user for the JMS connection </TD>
+</TR>
+<TR>
+<TD> useRAManagedTransaction </TD>
+<TD> no </TD>
+<TD> false </TD>
+<TD> Typically, a resource adapter delivers messages to an endpoint which is managed by a container.  Normally, this container likes to be the one that wants to control the transaction that the inbound message is being delivered on.  But sometimes, you want to deliver to a simpler container system that will not be controlling the inbound transaction.  In these cases, if you set useRAManagedTransaction to true, the resource adapter will commit the transaction if no exception was generated from the MessageListener and rollback if an exception is thrown. </TD>
+</TR>
+<TR>
+<TD> initialRedeliveryDelay </TD>
+<TD> no </TD>
+<TD> 1000 </TD>
+<TD> The delay before redeliveries start.  Also configurable on the ResourceAdapter </TD>
+</TR>
+<TR>
+<TD> maximumRedeliveries </TD>
+<TD> no </TD>
+<TD> 5 </TD>
+<TD> The maximum number of redeliveries or -1 for no maximum. Also configurable on the ResourceAdapter </TD>
+</TR>
+<TR>
+<TD> redeliveryBackOffMultiplier </TD>
+<TD> no </TD>
+<TD> 5 </TD>
+<TD> The multiplier to use if exponential back off is enabled. Also configurable on the ResourceAdapter </TD>
+</TR>
+<TR>
+<TD> redeliveryUseExponentialBackOff </TD>
+<TD> no </TD>
+<TD> false </TD>
+<TD> To enable exponential backoff. Also configurable on the ResourceAdapter </TD>
+</TR>
+</TBODY></TABLE>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/jmsconnectionfactory-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/jmsconnectionfactory-config.mdtext b/docs/jmsconnectionfactory-config.mdtext
new file mode 100644
index 0000000..16591ca
--- /dev/null
+++ b/docs/jmsconnectionfactory-config.mdtext
@@ -0,0 +1,85 @@
+Title: JmsConnectionFactory Configuration
+
+
+A JmsConnectionFactory can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <Resource id="myJmsConnectionFactory" type="javax.jms.ConnectionFactory">
+        connectionMaxIdleTime = 15 Minutes
+        connectionMaxWaitTime = 5 seconds
+        poolMaxSize = 10
+        poolMinSize = 0
+        resourceAdapter = Default JMS Resource Adapter
+        transactionSupport = xa
+    </Resource>
+
+Alternatively, a JmsConnectionFactory can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    myJmsConnectionFactory = new://Resource?type=javax.jms.ConnectionFactory
+    myJmsConnectionFactory.connectionMaxIdleTime = 15 Minutes
+    myJmsConnectionFactory.connectionMaxWaitTime = 5 seconds
+    myJmsConnectionFactory.poolMaxSize = 10
+    myJmsConnectionFactory.poolMinSize = 0
+    myJmsConnectionFactory.resourceAdapter = Default JMS Resource Adapter
+    myJmsConnectionFactory.transactionSupport = xa
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared JmsConnectionFactory a warning will be logged.  If a JmsConnectionFactory is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple JmsConnectionFactory declarations are allowed.
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+<tr>
+  <td>connectionMaxIdleTime</td>
+  <td><a href="configuring-durations.html">time</a></td>
+  <td>15&nbsp;Minutes</td>
+  <td>
+Maximum amount of time a connection can be idle before being reclaimed
+</td>
+</tr>
+<tr>
+  <td>connectionMaxWaitTime</td>
+  <td><a href="configuring-durations.html">time</a></td>
+  <td>5&nbsp;seconds</td>
+  <td>
+Maximum amount of time to wait for a connection
+</td>
+</tr>
+<tr>
+  <td>poolMaxSize</td>
+  <td>int</td>
+  <td>10</td>
+  <td>
+Maximum number of physical connection to the ActiveMQ broker
+</td>
+</tr>
+<tr>
+  <td>poolMinSize</td>
+  <td>int</td>
+  <td>0</td>
+  <td>
+Minimum number of physical connection to the ActiveMQ broker
+</td>
+</tr>
+<tr>
+  <td>resourceAdapter</td>
+  <td>String</td>
+  <td>Default&nbsp;JMS&nbsp;Resource&nbsp;Adapter</td>
+  <td>
+
+</td>
+</tr>
+<tr>
+  <td>transactionSupport</td>
+  <td>String</td>
+  <td>xa</td>
+  <td>
+Specifies if the connection is enrolled in global transaction
+allowed values: xa, local or none
+</td>
+</tr>
+</table>
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/jndi-names.mdtext
----------------------------------------------------------------------
diff --git a/docs/jndi-names.mdtext b/docs/jndi-names.mdtext
new file mode 100644
index 0000000..1da61af
--- /dev/null
+++ b/docs/jndi-names.mdtext
@@ -0,0 +1,368 @@
+Title: JNDI Names
+
+<a name="JNDINames-What'sMyBean'sJNDIName?"></a>
+# What's My Bean's JNDI Name?
+There are two things to keep in mind before you start reading:
+       
+1   OpenEJB provides a default JNDI name to your EJB.     
+2   You can customize the JNDI name.
+
+<a name="JNDINames-DefaultJNDIname"></a>
+## Default JNDI name 
+The default JNDI name is in the following format:
+
+    {deploymentId}{interfaceType.annotationName}
+
+Lets try and understand the above format. Both *deploymentId* and
+*interfaceType.annotationName* are pre-defined variables. There are other
+pre-defined variables available which you could use to customize the JNDI
+name format.
+
+<a name="JNDINames-JNDINameFormatting"></a>
+#  JNDI Name Formatting
+
+The *openejb.jndiname.format* property allows you to supply a template for
+the global JNDI names of all your EJBs.  With it, you have complete control
+over the structure of the JNDI layout can institute a design pattern just
+right for your client apps.  See the [Service Locator](service-locator.html)
+ doc for clever ways to use the JNDI name formatting functionality in
+client code.
+<table>
+<tr><td>variable</td><td>	 description</td></tr>
+<tr><td>moduleId</td><td>	 Typically the name of the ejb-jar file<br> or the <ejb-jar id=""> id value if specified</td></tr>
+<tr><td>ejbType</td><td>	 STATEFUL, STATELESS, BMP_ENTITY, CMP_ENTITY, or MESSAGE_DRIVEN</td></tr>
+<tr><td>ejbClass</td><td>	 for a class named org.acme.superfun.WidgetBean results in org.acme.superfun.WidgetBean</td></tr>
+<tr><td>ejbClass.simpleName</td><td>	 for a class named org.acme.superfun.WidgetBean results in WidgetBean</td></tr>
+<tr><td>ejbClass.packageName</td><td>	 for a class named org.acme.superfun.WidgetBean results in org.acme.superfun</td></tr>
+<tr><td>ejbName</td><td>	 The ejb-name as specified in xml or via the 'name' attribute in an @Stateful, @Stateless, or @MessageDriven annotation</td></tr>
+<tr><td>deploymentId</td><td>	 The unique system id for the ejb. Typically the ejbName unless specified in the openejb-jar.xml or via changing the openejb.deploymentId.format</td></tr>
+<tr><td>interfaceType</td><td>	 see interfaceType.annotationName</td></tr>
+<tr><td>interfaceType.annotationName</td><td>	 Following the EJB 3 annotations @RemoteHome, @LocalHome, @Remote and @Local
+RemoteHome (EJB 2 EJBHome)
+LocalHome (EJB 2 EJBLocalHome)
+Remote (EJB 3 Business Remote)
+Local (EJB 3 Business Local)
+Endpoint (EJB webservice endpoint)</td></tr>
+<tr><td>interfaceType.annotationNameLC</td><td>	 This is the same as interfaceType.annotationName, but all in lower case.</td></tr>
+<tr><td>interfaceType.xmlName</td><td>	 Following the ejb-jar.xml descriptor elements <home>, <local-home>, <business-remote>, <business-local>, and <service-endpoint>:
+home (EJB 2 EJBHome)
+local-home (EJB 2 EJBLocalHome)
+business-remote (EJB 3 Business Remote)
+business-local (EJB 3 Business Local)
+service-endpoint (EJB webservice endpoint)</td></tr>
+<tr><td>interfaceType.xmlNameCc</td><td>	 Camel-case version of interfaceType.xmlName:
+Home (EJB 2 EJBHome)
+LocalHome (EJB 2 EJBLocalHome)
+BusinessRemote (EJB 3 Business Remote)
+BusinessLocal (EJB 3 Business Local)
+ServiceEndpoint (EJB webservice endpoint)</td></tr>
+<tr><td>interfaceType.openejbLegacyName</td><td>Following the OpenEJB 1.0 hard-coded format:
+(empty string) (EJB 2 EJBHome)
+Local (EJB 2 EJBLocalHome)
+BusinessRemote (EJB 3 Business Remote)
+BusinessLocal (EJB 3 Business Local)
+ServiceEndpoint (EJB webservice endpoint)</td></tr>
+<tr><td>interfaceClass</td><td>	
+(business) for a class named org.acme.superfun.WidgetRemote results in org.acme.superfun.WidgetRemote<br>
+(home) for a class named org.acme.superfun.WidgetHome results in org.acme.superfun.WidgetHome</td></tr>
+<tr><td>interfaceClass.simpleName</td><td>
+(business) for a class named org.acme.superfun.WidgetRemote results in WidgetRemote
+(home) for a class named org.acme.superfun.WidgetHome results in WidgetHome</td></tr>
+<tr><td>interfaceClass.packageName</td><td>	 for a class named org.acme.superfun.WidgetRemote results in org.acme.superfun</td></tr>
+</table>
+<a name="JNDINames-SettingtheJNDIname"></a>
+#  Setting the JNDI name
+
+It's possible to set the desired jndi name format for the whole server
+level, an ejb-jar, an ejb, an ejb's "local" interface
+(local/remote/local-home/home), and for an individual interface the ejb
+implements.  More specific jndi name formats act as an override to any more
+general formats.  The most specific format dictates the jndi name that will
+be used for any given interface of an ejb.  It's possible to specify a
+general format for your server, override it at an ejb level and override
+that further for a specific interface of that ejb.
+
+<a name="JNDINames-ViaSystemproperty"></a>
+## Via System property
+
+The jndi name format can be set on a server level via a _system property_,
+for example:
+
+
+    $ ./bin/openejb start
+    -Dopenejb.jndiname.format=\{ejbName}/\{interfaceClass}"
+
+
+As usual, other ways of specifying system properties are via the
+conf/system.properties file in a standalone server, or via the
+InitialContext properties when embedded.
+
+<a name="JNDINames-Viapropertiesintheopenejb-jar.xml"></a>
+## Via properties in the openejb-jar.xml
+
+It's possible to set the openejb.jndiname.format for an ejb-jar jar in a
+META-INF/openejb-jar.xml file as follows:
+
+
+    <openejb-jar>
+      <properties>
+         openejb.deploymentId.format = {ejbName}
+         openejb.jndiname.format = {deploymentId}{interfaceType.annotationName}
+      </properties>
+    </openejb-jar>
+
+
+<a name="JNDINames-Viathe<jndi>tagforaspecificejb"></a>
+## Via the <jndi> tag for a specific ejb
+
+The following sets the name specifically for the interface
+org.superbiz.Foo.
+
+
+    <openejb-jar>
+      <ejb-deployment ejb-name="FooBean">
+        <jndi name="foo" interface="org.superbiz.Foo"/>  
+      </ejb-deployment>
+    </openejb-jar>
+
+
+Or more generally...
+
+
+    <openejb-jar>
+      <ejb-deployment ejb-name="FooBean">
+        <jndi name="foo" interface="Remote"/> 
+      </ejb-deployment>
+    </openejb-jar>
+
+
+Or more generally still...
+
+
+    <openejb-jar>
+      <ejb-deployment ejb-name="FooBean">
+        <jndi name="foo"/> 
+      </ejb-deployment>
+    </openejb-jar>
+
+
+The 'name' attribute can still use templates if it likes, such as: 
+
+
+    <openejb-jar>
+      <ejb-deployment ejb-name="FooBean">
+        <jndi name="ejb/{interfaceClass.simpleName}" interface="org.superbiz.Foo"/> 
+      </ejb-deployment>
+    </openejb-jar>
+
+
+<a name="JNDINames-Multiple<jndi>tags"></a>
+###  Multiple <jndi> tags
+
+Multiple <jndi> tags are allowed making it possible for you to be as
+specific as you need about the jndi name of each interface or each logical
+group of iterfaces (Local, Remote, LocalHome, RemoteHome).  
+
+Given an ejb, FooBean, with the following interfaces:
+ - business-local: org.superbiz.LocalOne
+ - business-local: org.superbiz.LocalTwo
+ - business-remote: org.superbiz.RemoteOne
+ - business-remote: org.superbiz.RemoteTwo
+ - home: org.superbiz.FooHome
+ - local-home: org.superbiz.FooLocalHome
+
+The following four examples would yield the same jndi names.  The intention
+with these examples is to show the various ways you can isolate specific
+interfaces or types of interfaces to gain more specific control on how they
+are named.
+
+    <openejb-jar>
+      <ejb-deployment ejb-name="FooBean">
+        <jndi name="LocalOne" interface="org.superbiz.LocalOne"/>
+        <jndi name="LocalTwo" interface="org.superbiz.LocalTwo"/>
+        <jndi name="RemoteOne" interface="org.superbiz.RemoteOne"/>
+        <jndi name="RemoteTwo" interface="org.superbiz.RemoteTwo"/>
+        <jndi name="FooHome" interface="org.superbiz.FooHome"/>
+        <jndi name="FooLocalHome" interface="org.superbiz.FooLocalHome"/>
+      </ejb-deployment>
+    </openejb-jar>
+
+Or
+
+    <openejb-jar>
+      <ejb-deployment ejb-name="FooBean">
+        <!-- applies to LocalOne and LocalTwo -->
+        <jndi name="{interfaceClass.simpleName}" interface="Local"/> 
+    
+        <!-- applies to RemoteOne and RemoteTwo -->
+        <jndi name="{interfaceClass.simpleName}" interface="Remote"/> 
+    
+        <!-- applies to FooHome -->
+        <jndi name="{interfaceClass.simpleName}" interface="RemoteHome"/> 
+    
+        <!-- applies to FooLocalHome -->
+        <jndi name="{interfaceClass.simpleName}" interface="LocalHome"/> 
+      </ejb-deployment>
+    </openejb-jar>
+
+Or
+
+    <openejb-jar>
+      <ejb-deployment ejb-name="FooBean">
+        <!-- applies to RemoteOne, RemoteTwo, FooHome, and FooLocalHome -->
+        <jndi name="{interfaceClass.simpleName}"/>
+
+        <!-- these two would count as an override on the above format -->
+        <jndi name="LocalOne" interface="org.superbiz.LocalOne"/>
+        <jndi name="LocalTwo" interface="org.superbiz.LocalTwo"/>
+      </ejb-deployment>
+    </openejb-jar>
+
+or
+    
+    <openejb-jar>
+      <ejb-deployment ejb-name="FooBean">
+        <!-- applies to LocalOne, LocalTwo, RemoteOne, RemoteTwo, FooHome, and FooLocalHome -->
+        <jndi name="{interfaceClass.simpleName}"/> 
+      </ejb-deployment>
+    </openejb-jar>
+
+
+<a name="JNDINames-ChangingtheDefaultSetting"></a>
+# Changing the Default Setting
+
+*You are responsible for ensuring the names don't conflict.*  
+ 
+<a name="JNDINames-Conservativesettings"></a>
+### Conservative settings
+
+A very conservative setting such as    
+
+ "{deploymentId}/{interfaceClass}"    
+
+would guarantee that each and every single interface is bound to JNDI.	If
+your bean had a legacy EJBObject interface, three business remote
+interfaces, and two business local interfaces, this pattern would result in    
+*six* proxies bound into JNDI.      
+<pre>  
+ - {deploymentId}/{interfaceClass.simpleName}    
+ - {moduleId}/{ejbName}/{interfaceClass}    
+ - {ejbName}/{interfaceClass}    
+ - {moduleId}/{ejbClass}/{interfaceClass}    
+ - {ejbClass}/{interfaceClass}    
+ - {ejbClass}/{interfaceClass.simpleName}    
+ - {ejbClass.simpleName}/{interfaceClass.simpleName}    
+ - {interfaceClass}/{ejbName}    
+</pre>
+Bordeline optimistic:    
+<pre>
+ - {moduleId}/{interfaceClass}    
+ - {interfaceClass}    
+</pre>
+The above two settings would work if you the interface wasn't shared by
+other beans.
+
+<a name="JNDINames-Pragmaticsettings"></a>
+### Pragmatic settings    
+
+A more middle ground setting such as
+"{deploymentId}/{interfaceType.annotationName}" would guarantee that at
+least one proxy of each interface type is bound to JNDI.  If your bean had
+a legacy EJBObject interface, three business remote interfaces, and two
+business local interfaces, this pattern would result in *three* proxies
+bound into JNDI: one proxy dedicated to your EJBObject interface; one proxy
+implementing all three business remote interfaces; one proxy implementing
+the two business local interfaces.
+
+Similarly pragmatic settings would be    
+<pre>
+ - {moduleId}/{ejbClass}/{interfaceType.annotationName}    
+ - {ejbClass}/{interfaceType.xmlName}    
+ - {ejbClass.simpleName}/{interfaceType.xmlNameCc}    
+ - {interfaceType}/{ejbName}    
+ - {interfaceType}/{ejbClass}    
+</pre>
+<a name="JNDINames-Optimisticsettings"></a>
+### Optimistic settings
+
+A very optimistic setting such as "{deploymentId}" would guarantee only
+one proxy for the bean will be bound to JNDI.  This would be fine if you
+knew you only had one type of interface in your beans.	For example, only
+business remote interfaces, or only business local interfaces, or only an
+EJBObject interface, or only an EJBLocalObject interface.
+
+If a bean in the app did have more than one interface type, one business
+local and one business remote for example, by default OpenEJB will reject
+the app when it detects that it cannot bind the second interface.  This
+strict behavior can be disabled by setting the
+*openejb.jndiname.failoncollision* system property to _false_.	When this
+property is set to false, we will simply log an error that the second proxy
+cannot be bound to JNDI, tell you which ejb is using that name, and
+continue loading your app.
+
+Similarly optimistic settings would be:    
+<pre>
+ - {ejbName}    
+ - {ejbClass}    
+ - {ejbClass.simpleName}    
+ - {moduleId}/{ejbClass.simpleName}    
+ - {moduleId}/{ejbName}    
+</pre>
+<a name="JNDINames-AdvancedDetailsonEJB3.0BusinessProxies(thesimplepart)"></a>
+### Advanced Details on EJB 3.0 Business Proxies (the simple part)
+
+If you implement your business interfaces, your life is simple as your
+proxies will also implement your business interfaces of the same type. 
+Meaning any proxy OpenEJB creates for a business local interface will also
+implement your other business local interfaces.  Similarly, any proxy
+OpenEJB creates for a business remote interface will also implement your
+other business remote interfaces.
+
+<a name="JNDINames-AdvancedDetailsonEJB3.0BusinessProxies(thecomplicatedpart)"></a>
+### Advanced Details on EJB 3.0 Business Proxies (the complicated part)
+
+*Who should read?*    
+Read this section of either of these two apply to you:    
+ - You do not implement your business interfaces in your bean class    
+ - One or more of your business remote interfaces extend from javax.rmi.Remote
+
+If neither of these two items describe your apps, then there is no need to
+read further.  Go have fun.
+
+<a name="JNDINames-Notimplementingbusinessinterfaces"></a>
+### Not implementing business interfaces
+
+If you do not implement your business interfaces it may not be possible for
+us to implement all your business interfaces in a single interface. 
+Conflicts in the throws clauses and the return values can occur as detailed [here](multiple-business-interface-hazzards.html)
+.  When creating a proxy for an interface we will detect and remove any
+other business interfaces that would conflict with the main interface.
+
+<a name="JNDINames-Businessinterfacesextendingjavax.rmi.Remote"></a>
+### Business interfaces extending javax.rmi.Remote
+
+Per spec rules many runtime exceptions (container or connection related)
+are thrown from javax.rmi.Remote proxies as java.rmi.RemoteException which
+is not a runtime exception and must be throwable via the proxy as a checked
+exception. The issue is that conflicting throws clauses are actually
+removed for two interfaces sharing the same method signature.  For example
+two methods such as these:    
+ - InterfaceA: void doIt() throws Foo;   
+ - InterfaceB: void doIt() throws RemoteException;    
+
+can be implemented by trimming out the conflicting throws clauses as
+follows:    
+  - Implementation: void doIt(){}    
+
+This is fine for a bean class as it does not need to throw the RMI required
+javax.rmi.RemoteException. However if we create a proxy from these two
+interfaces it will also wind up with a 'doIt(){}' method that cannot throw
+javax.rmi.RemoteException.  This is very bad as the container does need to
+throw RemoteException to any business interfaces extending java.rmi.Remote
+for any container related issues or connection issues.	If the container
+attempts to throw a RemoteException from the proxies 'doIt(){}' method, it
+will result in an UndeclaredThrowableException thrown by the VM.
+
+The only way to guarantee the proxy has the 'doIt() throws RemoteException
+{}' method of InterfaceB is to cut out InterfaceA when we create the proxy
+dedicated to InterfaceB.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/jpa-concepts.mdtext
----------------------------------------------------------------------
diff --git a/docs/jpa-concepts.mdtext b/docs/jpa-concepts.mdtext
new file mode 100644
index 0000000..0afb88c
--- /dev/null
+++ b/docs/jpa-concepts.mdtext
@@ -0,0 +1,217 @@
+Title: JPA Concepts
+<a name="JPAConcepts-JPA101"></a>
+# JPA 101
+
+If there's one thing you have to understand to successfully use JPA (Java
+Persistence API) it's the concept of a *Cache*.  Almost everything boils
+down to the Cache at one point or another.  Unfortunately the Cache is an
+internal thing and not exposed via the JPA API classes, so it not easy to
+touch or feel from a coding perspective.
+
+Here's a quick cheat sheet of the JPA world:
+
+ - A **Cache** is a **copy of data**, copy meaning pulled from but living
+outside the database.
+ - **Flushing** a Cache is the act of putting modified data back into the
+database.
+ - A **PersistenceContext** is essentially a Cache. It also tends to have
+it's own non-shared database connection.
+ - An **EntityManager** represents a PersistenceContext (and therefore a
+Cache)
+ - An **EntityManagerFactory** creates an EntityManager (and therefore a
+PersistenceContext/Cache)
+
+Comparing `RESOURCE_LOCAL` and `JTA` persistence contexts
+
+With &lt;persistence-unit transaction-type="**RESOURCE_LOCAL**"> **you** are
+responsible for EntityManager (PersistenceContext/Cache) creating and
+tracking...
+
+- You **must** use the **EntityManagerFactory** to get an EntityManager
+- The resulting **EntityManager** instance **is** a
+PersistenceContext/Cache
+- An **EntityManagerFactory** can be injected via the **@PersistenceUnit**
+annotation only (not @PersistenceContext)
+- You are **not** allowed to use @PersistenceContext to refer to a unit
+of type RESOURCE_LOCAL
+- You **must** use the **EntityTransaction** API to begin/commit around
+**every** call to your EntityManger
+- Calling entityManagerFactory.createEntityManager() twice results in
+**two** separate EntityManager instances and therefor **two** separate
+PersistenceContexts/Caches.
+- It is **almost never** a good idea to have more than one **instance** of
+an EntityManager in use (don't create a second one unless you've destroyed
+the first)
+
+With &lt;persistence-unit transaction-type="**JTA**"> the **container**
+will do EntityManager (PersistenceContext/Cache) creating and tracking...
+
+- You **cannot** use the **EntityManagerFactory** to get an EntityManager
+- You can only get an **EntityManager** supplied by the **container**
+- An **EntityManager** can be injected via the **@PersistenceContext**
+annotation only (not @PersistenceUnit)
+- You are **not** allowed to use @PersistenceUnit to refer to a unit of
+type JTA
+- The **EntityManager** given by the container is a **reference** to the
+PersistenceContext/Cache associated with a JTA Transaction.
+- If no JTA transaction is in progress, the EntityManager **cannot be
+used** because there is no PersistenceContext/Cache.
+- Everyone with an EntityManager reference to the **same unit** in the
+**same transaction** will automatically have a reference to the **same
+PersistenceContext/Cache**
+- The PersistenceContext/Cache is **flushed** and cleared at JTA
+**commit** time
+
+<a name="JPAConcepts-Cache==PersistenceContext"></a>
+#  Cache == PersistenceContext
+
+The concept of a database cache is an extremely important concept to be
+aware of.  Without a copy of the data in memory (i.e. a cache) when you
+call account.getBalance() the persistence provider would have to go read
+the value from the database.  Calling account.getBalance() several times
+would cause several trips to the database.  This would obviously be a big
+waste of resources.  The other side of having a cache is that when you call
+account.setBalance(5000) it also doesn't hit the database (usually).  When
+the cache is "flushed" the data in it is sent to the database via as many
+SQL updates, inserts and deletes as are required.  That is the basics of
+java persistence of any kind all wrapped in a nutshell.  If you can
+understand that, you're good to go in nearly any persistence technology
+java has to offer.
+
+Complications can arise when there is more than one
+PersistenceContext/Cache relating the same data in the same transaction. 
+In any given transaction you want exactly one PersistenceContext/Cache for
+a given set of data.  Using a JTA unit with an EntityManager
+created by the container will always guarantee that this is the case.  With
+a RESOURCE_LOCAL unit and an EntityManagerFactory you should create and use
+exactly one EntityManager instance in your transaction to ensure there is
+only one active PersistenceContext/Cache for the given set of data active
+against the current transaction.
+
+<a name="JPAConcepts-CachesandDetaching"></a>
+# Caches and Detaching
+
+Detaching is the concept of a persistent object **leaving** the
+PersistenceContext/Cache.  Leaving means that any updates made to the
+object are **not** reflected in the PersistenceContext/Cache.  An object will
+become Detached if it somehow **lives longer** or is **used outside** the scope
+of the PersistenceContext/Cache.  
+
+For a JTA unit, the PersistenceContext/Cache will live as long as
+the transaction does.  When a transaction completes (commits or rollsback)
+all objects that were in the PersistenceContext/Cache are Detached.  You
+can still use them, but they are no longer associated with a
+PersistenceContext/Cache and modifications on them will **not** be reflected
+in a PersistenceContext/Cache and therefore not the database either.
+
+Serializing objects that are currently in a PersistenceContext/Cache will
+also cause them to Detach.
+
+In some cases objects or collections of objects that become Detached may
+not have all the data you need.  This can be because of lazy loading.  With
+lazy loading, data isn't pulled from the database and into the
+PersistenceContext/Cache until it is requested in code.  In many cases the
+Collections of persistent objects returned from an
+javax.persistence.Query.getResultList() call are completely empty until you
+iterate over them.  A side effect of this is that if the Collection becomes
+Detached before it's been fully read it will be permanently empty and of no
+use and calling methods on the Detached Collection can cause strange errors
+and exceptions to be thrown.  If you wish to Detach a Collection of
+persistent objects it is always a good idea to iterate over the Collection
+at least once.
+
+You **cannot** call EntityManager.persist() or EntityManager.remove() on a
+Detached object.
+
+Calling EntityManager.merge() will re-attach a Detached object.
+
+<a name="JPAConcepts-ValidRESOURCE_LOCALUnitusage"></a>
+#  Valid RESOURCE_LOCAL Unit usage
+
+Servlets and EJBs can use RESOURCE_LOCAL persistence units through the
+EntityManagerFactory as follows:
+
+    <?xml version="1.0" encoding="UTF-8" ?>
+    <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+
+      <!-- Tutorial "unit" -->
+      <persistence-unit name="Tutorial" transaction-type="RESOURCE_LOCAL">
+        <non-jta-data-source>myNonJtaDataSource</non-jta-data-source>
+        <class>org.superbiz.jpa.Account</class>
+      </persistence-unit>
+
+    </persistence>
+
+And referenced as follows
+
+    import javax.persistence.EntityManagerFactory;
+    import javax.persistence.EntityManager;
+    import javax.persistence.EntityTransaction;
+    import javax.persistence.PersistenceUnit;
+
+    public class MyEjbOrServlet ... {
+
+        @PersistenceUnit(unitName="Tutorial")
+        private EntityManagerFactory factory;
+
+        // Proper exception handling left out for simplicity
+        public void ejbMethodOrServletServiceMethod() throws Exception {
+            EntityManager entityManager = factory.createEntityManager();
+
+            EntityTransaction entityTransaction = entityManager.getTransaction();
+
+            entityTransaction.begin();
+
+            Account account = entityManager.find(Account.class, 12345);
+
+            account.setBalance(5000);
+
+            entityTransaction.commit();
+        }
+
+        ...
+    }
+
+    
+#  Valid JTA Unit usage
+
+EJBs can use JTA persistence units through the EntityManager as
+follows:
+    
+    <?xml version="1.0" encoding="UTF-8" ?>
+    <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+    
+      <!-- Tutorial "unit" -->
+      <persistence-unit name="Tutorial" transaction-type="JTA">
+        <jta-data-source>myJtaDataSource</jta-data-source>
+        <non-jta-data-source>myNonJtaDataSource</non-jta-data-source>
+        <class>org.superbiz.jpa.Account</class>
+      </persistence-unit>
+    	
+    </persistence>
+
+And referenced as follows
+
+    import javax.ejb.Stateless;
+    import javax.ejb.TransactionAttribute;
+    import javax.ejb.TransactionAttributeType;
+    import javax.persistence.EntityManager;
+    import javax.persistence.PersistenceContext;
+    
+    @Stateless
+    public class MyEjb implements MyEjbInterface {
+    
+        @PersistenceContext(unitName = "Tutorial")
+        private EntityManager entityManager;
+    
+        // Proper exception handling left out for simplicity
+        @TransactionAttribute(TransactionAttributeType.REQUIRED)
+        public void ejbMethod() throws Exception {
+    
+    	Account account = entityManager.find(Account.class, 12345);
+    
+    	account.setBalance(5000);
+    
+        }
+    }
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/jpa-usage.mdtext
----------------------------------------------------------------------
diff --git a/docs/jpa-usage.mdtext b/docs/jpa-usage.mdtext
new file mode 100644
index 0000000..6a5cf39
--- /dev/null
+++ b/docs/jpa-usage.mdtext
@@ -0,0 +1,50 @@
+Title: JPA Usage
+<a name="JPAUsage-Thingstowatchoutfor"></a>
+# Things to watch out for
+
+<a name="JPAUsage-Critical:Alwayssetjta-data-sourceandnon-jta-data-source"></a>
+## Critical: Always set jta-data-source and non-jta-data-source
+
+Always set the value of jta-data-source and non-jta-data-source in your
+persistence.xml file.  Regardless if targeting your EntityManager usage for
+transaction-type="RESOURCE_LOCAL" or transaction-type="TRANSACTION", it's
+very difficult to guarantee one or the other will be the only one needed. 
+Often times the JPA Provider itself will require both internally to do
+various optimizations or other special features.  
+
+* The *jta-data-source* should always have it's OpenEJB-specific
+'*JtaManaged*' property set to '*true*'  (this is the default)
+* The *non-jta-data-source* should always have it's OpenEJB-specific
+'*JtaManaged*' property set to '*false*'.
+
+See [Containers and Resources](containers-and-resources.html)
+ for how to configure 'JtaManaged' and a full list of <Resource> properties
+for DataSources.
+
+<a name="JPAUsage-Bedetachaware"></a>
+## Be detach aware
+
+A warning for any new JPA user is by default all objects will detach at the
+end of a transaction.  People typically discover this when the go to remove
+or update an object they fetched previously and get an exception like "You
+cannot perform operation delete on detached object".
+
+All ejb methods start a transaction unless a) you [configure them otherwise](transaction-annotations.html)
+, or b) the caller already has a transaction in progress when it calls the
+bean.  If you're in a test case or a servlet, it's most likely B that is
+biting you.  You're asking an ejb for some persistent objects, it uses the
+EntityManager in the scope of the transaction started around it's method
+and returns some persistent objects, by the time you get them the
+transaction has completed and now the objects are detached.
+
+<a name="JPAUsage-Solutions"></a>
+### Solutions
+1. Call EntityManager.merge(..) inside the bean code to reattach your
+object.
+1. Use PersistenceContextType.EXTENDED as in '@PersistenceContext(unitName
+= "movie-unit", type = PersistenceContextType.EXTENDED)' for EntityManager
+refs instead of the default of PersistenceContextType.TRANSACTION.
+1. If testing, use a technique to execute transactions in your test code. 
+That's described here in [Unit testing transactions](unit-testing-transactions.html)
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/local-client-injection.mdtext
----------------------------------------------------------------------
diff --git a/docs/local-client-injection.mdtext b/docs/local-client-injection.mdtext
new file mode 100644
index 0000000..4387fd9
--- /dev/null
+++ b/docs/local-client-injection.mdtext
@@ -0,0 +1,85 @@
+Title: Local Client Injection
+{note:title=OpenEJB 3.1.1 or later required}
+
+The *@LocalClient* annotation (org.apache.openejb.api.LocalClient) is an
+innovation that crosses concepts of an Java EE Application Client with a
+plain Java SE client.  This particular annotation is focused on clients of
+an Embeddable EJB container, i.e. local clients.  There is another
+annotation in development called @RemoteClient that will be focused on
+remote clients; clients running outside the vm the container runs.
+
+Any clients annotated with @LocalClient will be scanned at deployment time
+for usage of injection-related annotations.  The references in the
+@LocalClient will be processed with the application just as if the class
+was a Java EE Application Client module, but with a few slight differences:
+
+1. Declaring field/method injection points as 'static' is not required
+1. References to EntityManagers via @PersistenceContext are allowed
+1. References to local business interfaces via @EJB is allowed
+1. References to UserTransaction via @Resource is allowed
+
+As well since this is not a heavyweight Java EE Application Client, you are
+not required to use any special packaging or command-line parameters to run
+the client.  Your client can be a Unit Test or any plain java code that
+needs to pull objects from the Embedded EJB container.	Classes with
+@LocalClient can be placed in a Client module or an EJB module.  A given
+module may have as many classes annotated with @LocalClient as it wishes.
+
+<a name="LocalClientInjection-Injection"></a>
+#  Injection
+
+The injection occurs via acquiring a LocalInitialContext via the
+LocalInitialContextFactory and calling _bind("inject", instance)_ passing
+in the instantiated local client object:
+
+
+    @LocalClient
+    public class MoviesTest extends TestCase {
+    
+        @EJB
+        private Movies movies;
+    
+        @Resource
+        private UserTransaction userTransaction;
+    
+        @PersistenceContext
+        private EntityManager entityManager;
+    
+        public void setUp() throws Exception {
+    	Properties p = new Properties();
+    	p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
+    	InitialContext initialContext = new InitialContext(p);
+    	initialContext.bind("inject", this);
+        }
+    
+        //... other test methods
+    }
+
+
+<a name="LocalClientInjection-Discovery"></a>
+#  Discovery
+
+All EJB modules are scanned for @LocalClient classes, even if those EJB
+Modules are inside .war files as with the [Collapsed EAR](collapsed-ear.html)
+.  As well any modules that contain a META-INF/application-client.xml file
+will be scanned for @LocalClient classes.
+
+If you see the following error message and are absolutely sure the module
+containing your @LocalClient class is being properly identified as an EJB
+module or a Client module, than it is possible you are seeing some
+classloading issues.
+
+{panel}
+javax.naming.NamingException: Unable to find injection meta-data for
+org.superbiz.MyClient.	Ensure that class was annotated with
+@org.apache.openejb.api.LocalClient and was successfully discovered and
+deployed.
+{panel}
+
+If you encounter this try setting this openejb-specific boot flag so that
+annotations will be treated specially and always loaded by the parent
+classloader
+
+`openejb.tempclassloader.skip=annotations`
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/local-server.mdtext
----------------------------------------------------------------------
diff --git a/docs/local-server.mdtext b/docs/local-server.mdtext
new file mode 100644
index 0000000..acacb2c
--- /dev/null
+++ b/docs/local-server.mdtext
@@ -0,0 +1,57 @@
+Title: Local Server
+!http://www.openejb.org/images/diagram-local-server.gif|valign=top,
+align=right, hspace=15!
+<a name="LocalServer-AccessingEJBsLocally"></a>
+# Accessing EJBs Locally
+
+When OpenEJB embedded in your app, server, IDE, or JUnit, you can use what
+we call the Local Server and avoid the network overhead and enjoy an easy
+way to embedd OpenEJB.	Instead of putting the app in the server, put the
+server in the app!
+
+<a name="LocalServer-Saywhat?!Alocalserver?"></a>
+# Say what?! A local server?
+
+Yes, you read correctly. OpenEJB can be embedded and treated as your very
+own personal EJB container.
+
+If they can have Local and Remote EJB's, why not Local and Remote EJB
+Servers too?
+
+Haven't you ever wanted EJBs without the heavy? I mean you need the "heavy"
+eventually, but not while you're developing. Well, there's the advantage of
+an EJB implementation that was designed with a very clean and well defined
+server-container contract, you can cut the server part out completely!
+
+So, if you wish to access ejbs locally and not in client/server mode, you
+can do so by embedding OpenEJB as a library and accessing ejbs through
+OpenEJB's built-in IntraVM (Local) Server. Why would someone want to do
+this?
+* Your application is a server or other middleware
+* You want to write an app that can be both stand alone *and* distributed
+* To test your EJBs with JUnit and don't want to start/stop servers and
+other nonsense
+* Imagine the power from being able to use your IDE debugger to step from
+your Client all the way into your EJB and back with no remote debugging
+voodoo.
+
+In this case, your application, test suite, IDE, or client accesses beans
+as you would from any other EJB Server. The EJB Server just happens to be
+running in the same virtual machine as your application. This EJB Server is
+thusly called the IntraVM Server, and, for all intense purposes, your
+application an IntraVM Client.
+
+There are some interesting differences though. The IntraVM Server isn't a
+heavyweight server as one normally associates with EJB. It doesn't open
+connections, launch threads for processing requests, introduce complex
+classloading heirarchies, or any of those "heavy" kind of things. All it
+does is dish out proxies to your app that can be used to shoot calls right
+into the EJB Container. Very light, very fast, very easy for testing,
+debugging, developing, etc.
+
+<a name="LocalServer-Embedding"></a>
+# Embedding
+
+!http://www.openejb.org/images/diagram-local-server.gif|valign=top,
+align=right, hspace=15!
+{include:OPENEJBx30:Embedding}

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/lookup-of-other-ejbs-example.mdtext
----------------------------------------------------------------------
diff --git a/docs/lookup-of-other-ejbs-example.mdtext b/docs/lookup-of-other-ejbs-example.mdtext
new file mode 100644
index 0000000..5681e06
--- /dev/null
+++ b/docs/lookup-of-other-ejbs-example.mdtext
@@ -0,0 +1,147 @@
+Title: Lookup of other EJBs Example
+<a name="LookupofotherEJBsExample-Overview"></a>
+# Overview
+
+This example shows how to configure JNDI to lookup other EJBs using either
+the *@EJB* annotation or the *ejb-jar.xml* deployment descriptor.
+
+There are a couple interesting aspects in this example intended to flush
+out some of the more confusing, and perhaps frustrating, aspects of
+referring to EJBs.
+
+ - beans themselves do not have JNDI names (this was only recently added in
+Java EE 6)
+
+This is the most frustrating and hard to accept.  Java EE 5 does not have a
+global namespace and therefore there is no *singular* name for your EJB. 
+It does not matter what you do to your EJB, there is no standard way to
+"give" the bean a name that can be used by the application globally.
+
+ - each EJB owns its own private *java:comp/env* namespace
+(*java:comp/env* is not global and cannot be treated that way)
+ - names do not magically appear in *java:comp/env*, they must be
+explicitly added.
+ - to get a reference to bean *B* in the *java:comp/env* namespace of
+bean *A*, bean *A* must declare a reference to bean *B*.
+
+You read this right.  If you have 10 EJBs and all of them want to refer to
+bean *B*, then you must declare bean *B* as a reference 10 times (once
+for each of the 10 beans).  There is no standard way in Java EE 5 to do
+this just once for all beans.  In Java EE 6 there is a "*java:global*"
+namespace, a "*java:app*" namespace, and a "*java:module*" namespace
+where names can be defined with the desired scope.  Java EE 5 has only
+*java:comp*.
+
+There are two things which make this even more confusing:
+
+ - Servlets have always defined *java:comp/env* differently.	In a
+webapp, the *java:comp/env* namespace is shared by all servlets.  This is
+essentially equivalent to the *java:module* namespace in Java EE 6. 
+Understand there is a conflict in definition here and that for EJBs,
+*java:comp* is scoped at the component (the EJB itself) not the module as
+with webapps.
+ - All vendors have some proprietary concept of global JNDI.  So you may be
+able to lookup "*java:/MyBean*" or "*MyBeanLocal*", but these are
+vendor-specific and non-portable.
+
+As well this example shows some other interesting aspects of referring to
+EJBs:
+
+ - Two beans may use the same business interfaces, the interface alone does
+not necessarily identify the exact bean
+ - circular references are possible
+
+To illustrate all of this, we have two simple @Stateless beans, *RedBean*
+and *BlueBean*.  Both implement the same business local interface,
+*Friend*.  Both *RedBean* and *BlueBean* define
+*java:comp/env/myFriend* differently which is allowed as *java:comp* is
+a namespace that is private to each bean and not visible to other beans --
+so the names do not have to match. 
+
+
+<a name="LookupofotherEJBsExample-TheCode"></a>
+# The Code
+
+Here we show the code for *RedBean* and *BlueBean* and their shared
+business local interface *Friend*.
+{snippet:id=code|url=openejb3/examples/lookup-of-ejbs/src/main/java/org/superbiz/ejblookup/RedBean.java|lang=java}
+{snippet:id=code|url=openejb3/examples/lookup-of-ejbs/src/main/java/org/superbiz/ejblookup/BlueBean.java|lang=java}
+{snippet:id=code|url=openejb3/examples/lookup-of-ejbs/src/main/java/org/superbiz/ejblookup/Friend.java|lang=java}
+
+The key items in the above are the following:
+ - *@EJB* has been used at the *class level* to declare *myFriend* in
+the *java:comp/env* namespace of each EJB
+ - because both beans share the *same interface*, *Friend*, we need to
+add **beanName** to the *@EJB* usage to specify the exact EJB we want
+ - for *BlueBean* the *java:comp/env/myFriend* name has been configured
+to point to *RedBean*
+ - for *RedBean* the *java:comp/env/myFriend* name has been configured
+to point to *BlueBean*
+
+<a name="LookupofotherEJBsExample-Alternativetoannotations"></a>
+## Alternative to annotations
+
+If there is a desire to not use annotations, the above annotation usage is
+equivalent to the following ejb-jar.xml
+{snippet:url=openejb3/examples/lookup-of-ejbs-with-descriptor/src/main/resources/META-INF/ejb-jar.xml|lang=xml}
+
+<a name="LookupofotherEJBsExample-Writingaunittestfortheexample"></a>
+# Writing a unit test for the example
+
+Writing an unit test for this example is quite simple. We need just to
+write a setup method to create and initialize the InitialContext, and then
+write our test methods
+
+{snippet:id=code|url=openejb3/examples/lookup-of-ejbs/src/test/java/org/superbiz/ejblookup/EjbDependencyTest.java|lang=java}
+
+<a name="LookupofotherEJBsExample-Running"></a>
+#  Running
+
+Running the example is fairly simple.  In the "lookup-of-ejbs" directory of
+the [examples zip](openejb:download.html)
+, just run:
+
+> $ mvn clean install
+
+Which should create output like the following.
+
+
+    -------------------------------------------------------
+     T E S T S
+    -------------------------------------------------------
+    Running org.superbiz.ejblookup.EjbDependencyTest
+    Apache OpenEJB 3.1.5-SNAPSHOT	 build: 20101129-09:51
+    http://tomee.apache.org/
+    INFO - openejb.home =
+/Users/dblevins/work/openejb-3.1.x/examples/lookup-of-ejbs
+    INFO - openejb.base =
+/Users/dblevins/work/openejb-3.1.x/examples/lookup-of-ejbs
+    INFO - Configuring Service(id=Default Security Service,
+type=SecurityService, provider-id=Default Security Service)
+    INFO - Configuring Service(id=Default Transaction Manager,
+type=TransactionManager, provider-id=Default Transaction Manager)
+    INFO - Found EjbModule in classpath:
+/Users/dblevins/work/openejb-3.1.x/examples/lookup-of-ejbs/target/classes
+    INFO - Beginning load:
+/Users/dblevins/work/openejb-3.1.x/examples/lookup-of-ejbs/target/classes
+    INFO - Configuring enterprise application: classpath.ear
+    INFO - Configuring Service(id=Default Stateless Container, type=Container,
+provider-id=Default Stateless Container)
+    INFO - Auto-creating a container for bean BlueBean:
+Container(type=STATELESS, id=Default Stateless Container)
+    INFO - Enterprise application "classpath.ear" loaded.
+    INFO - Assembling app: classpath.ear
+    INFO - Jndi(name=BlueBeanLocal) --> Ejb(deployment-id=BlueBean)
+    INFO - Jndi(name=RedBeanLocal) --> Ejb(deployment-id=RedBean)
+    INFO - Created Ejb(deployment-id=RedBean, ejb-name=RedBean,
+container=Default Stateless Container)
+    INFO - Created Ejb(deployment-id=BlueBean, ejb-name=BlueBean,
+container=Default Stateless Container)
+    INFO - Deployed Application(path=classpath.ear)
+    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.244 sec
+    
+    Results :
+    
+    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/managedcontainer-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/managedcontainer-config.mdtext b/docs/managedcontainer-config.mdtext
new file mode 100644
index 0000000..5c32014
--- /dev/null
+++ b/docs/managedcontainer-config.mdtext
@@ -0,0 +1,24 @@
+Title: ManagedContainer Configuration
+
+
+A ManagedContainer can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <Container id="myManagedContainer" type="MANAGED">
+    </Container>
+
+Alternatively, a ManagedContainer can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    myManagedContainer = new://Container?type=MANAGED
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared ManagedContainer a warning will be logged.  If a ManagedContainer is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple ManagedContainer declarations are allowed.
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+</table>
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/manual-installation.mdtext
----------------------------------------------------------------------
diff --git a/docs/manual-installation.mdtext b/docs/manual-installation.mdtext
new file mode 100644
index 0000000..d24e01d
--- /dev/null
+++ b/docs/manual-installation.mdtext
@@ -0,0 +1,223 @@
+Title: Manual Installation
+
+# Overview
+
+The manual installation process is significantly harder then the [automatic installation](tomcat.html)
+ which we normally recommend.  In this installation process you will do the
+following:
+
+1. Install openejb.war
+1.  Download openejb.war from the [download page](http://tomee.apache.org/downloads.html)
+1.  Make webapps/openejb directory
+1.  Change to new webapps/openejb directory
+1.  Unpack the openejb.war file in the new directory
+1. Add the OpenEJB listener the conf/server.xml file
+1. Update the non-compliant Tomcat annotations-api.jar
+1. Add the OpenEJB JavaAgent to the bin/catalina.bat or bin/catalina.bat
+script
+
+##Install openejb.war
+
+Once Tomcat has been [installed](tomcat-installation.html)
+, the OpenEJB plugin for Tomcat can be installed.  The war can be obtained
+from the [download page](http://tomee.apache.org/downloads.html)
+
+The commands in this example are executed from within the Tomcat
+installation directory.
+
+<a name="ManualInstallation-UnpackOpenEJBTomcatplugininTomcatwebappsdirectory"></a>
+## Unpack OpenEJB Tomcat plugin in Tomcat webapps directory
+
+Be careful, this is the most error prone step.  A web
+application does not contain a root directory, so if you unpack it in the
+wrong directory, it is difficult to undo.  Please, follow this step
+closely, and most importantly make sure you execute the unpack command
+from within the new webapps/openejb directory
+
+Due to the structure of war files, you must create a new directory for
+OpenEJB, change to the new directory and execute the unpack command from
+within the new directory.  If you get this wrong, it is difficult to undo,
+so follow the steps closely.
+
+<pre><code>
+    C:\apache-tomcat-6.0.14>mkdir webapps\openejb
+    
+    C:\apache-tomcat-6.0.14>cd webapps\openejb
+    
+    C:\apache-tomcat-6.0.14\webapps\openejb>jar -xvf \openejb.war
+      created: WEB-INF/
+      created: WEB-INF/classes/
+      created: WEB-INF/classes/org/
+      created: WEB-INF/classes/org/apache/
+      created: WEB-INF/classes/org/apache/openejb/
+    ...snip...
+    
+    C:\apache-tomcat-6.0.14\webapps\openejb>dir
+     Volume in drive C has no label.
+     Volume Serial Number is 0000-0000
+    
+     Directory of C:\apache-tomcat-6.0.14\webapps\openejb
+    
+    09/21/2007  10:19 AM	<DIR>	       .
+    09/21/2007  10:19 AM	<DIR>	       ..
+    09/21/2007  10:19 AM		 1,000 index.html
+    09/21/2007  10:19 AM	<DIR>	       lib
+    09/21/2007  10:19 AM		11,358 LICENSE
+    09/21/2007  10:19 AM	<DIR>	       META-INF
+    09/21/2007  10:19 AM		11,649 NOTICE
+    09/21/2007  10:19 AM		 1,018 openejb.xml
+    09/21/2007  10:19 AM		 1,886 README.txt
+    09/21/2007  10:19 AM	<DIR>	       tomcat
+    09/21/2007  10:19 AM	<DIR>	       WEB-INF
+    	       5 File(s)	 26,911 bytes
+    	       6 Dir(s)   4,633,796,608 bytes free
+    
+    C:\apache-tomcat-6.0.14\webapps\openejb>cd ..\..
+    
+    C:\apache-tomcat-6.0.14>
+    
+        {card:label=Unix}{noformat:nopanel=true}
+        apache-tomcat-6.0.14$ mkdir webapps/openejb
+        
+        apache-tomcat-6.0.14$ cd webapps/openejb/
+        
+        apache-tomcat-6.0.14/webapps/openejb$ jar -xvf path/to/openejb.war 
+          created: WEB-INF/
+          created: WEB-INF/classes/
+          created: WEB-INF/classes/org/
+          created: WEB-INF/classes/org/apache/
+          created: WEB-INF/classes/org/apache/openejb/
+        ...snip...
+        
+        apache-tomcat-6.0.14/webapps/openejb$ ls
+        LICENSE      META-INF/	  NOTICE       README.txt   WEB-INF/	 index.html
+      lib/	       openejb.xml  tomcat/
+        
+        apache-tomcat-6.0.14/webapps/openejb$ cd ../..
+        
+        apache-tomcat-6.0.14$
+
+</code></pre>
+
+<a name="ManualInstallation-AddtheOpenEJBlistenertoTomcat"></a>
+## Add the OpenEJB listener to Tomcat 
+
+All Tomcat listener classes must be available in the Tomcat common class
+loader, so the openejb-loader jar must be copied into the Tomcat lib
+directory.
+
+
+        C:\apache-tomcat-6.0.14>copy webapps\openejb\lib\openejb-loader-3.0.0-SNAPSHOT.jar lib\openejb-loader.jar
+    	1 file(s) copied.
+    
+        apache-tomcat-6.0.14$ cp webapps/openejb/lib/openejb-loader-*.jar lib/openejb-loader.jar
+
+
+Add the following `<Listener
+className="org.apache.openejb.loader.OpenEJBListener" />` to your conf/server.xml file to load the OpenEJB listener:
+
+The snippet is shown below
+ 
+    <!-- Note:  A "Server" is not itself a "Container", so you may not
+    define subcomponents such as "Valves" at this
+    level.
+    Documentation at /docs/config/server.html
+     -->
+
+    <Server port="8005" shutdown="SHUTDOWN">
+    <!-- OpenEJB plugin for tomcat -->
+    <Listener
+    className="org.apache.openejb.loader.OpenEJBListener" />
+
+    <!--APR library loader. Documentation at /docs/apr.html -->    
+    <Listener
+    className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
+
+<a name="ManualInstallation-UpdatetheTomcatannotations-api.jarfile"></a>
+## Update the Tomcat annotations-api.jar file
+
+Tomcat contains an old non-compliant version of the javax.annotation
+classes and these invalid classes must be updated so OpenEJB can process
+annotations.  Simply, replace the annotations-api.jar in the Tomcat lib
+directory with the updated annotations-api.jar in the OpenEJB war.
+
+<pre><code>
+
+C:\apache-tomcat-6.0.14>copy webapps\openejb\tomcat\annotations-api.jar
+lib\annotations-api.jar
+Overwrite lib\annotations-api.jar? (Yes/No/All): y
+	1 file(s) copied.
+
+apache-tomcat-6.0.14$ cp webapps/openejb/tomcat/annotations-api.jar
+lib/annotations-api.jar 
+
+</code></pre>
+
+<a name="ManualInstallation-{anchor:javaagent}AddOpenEJBjavaagenttoTomcatstartup"></a>
+## Add OpenEJB javaagent to Tomcat startup
+
+OpenJPA, the Java Persistence implementation used by OpenEJB, currently
+must enhanced persistence classes to function properly, and this requires
+the installation of a javaagent into the Tomcat startup process.
+
+First, copy the OpenEJB JavaAgent jar into the lib directory.
+
+<pre><code>
+
+    C:\apache-tomcat-6.0.14>copy webapps\openejb\lib\openejb-javaagent-3.0.0-SNAPSHOT.jar lib\openejb-javaagent.jar
+    	1 file(s) copied.
+    
+    apache-tomcat-6.0.14$ cp webapps/openejb/lib/openejb-javaagent-*.jar lib/openejb-javaagent.jar
+
+</code></pre>
+
+Simply, add the snippet marked below in
+bin/catalina.bat (Windows) or bin/catalina.sh (Unix) file to enable the
+OpenEJB javaagent:
+
+    if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuli
+    set JAVA_OPTS=%JAVA_OPTS%
+    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
+    -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"
+    :noJuli
+
+     # Start of Snippet to add
+     rem Add OpenEJB javaagent if not exist
+     "%CATALINA_BASE%\webapps\openejb\lib\openejb-javaagent.jar" goto
+     noOpenEJBJavaagent set
+     JAVA_OPTS="-javaagent:%CATALINA_BASE%\webapps\openejb\lib\openejb-javaagent.jar"
+     %JAVA_OPTS% :noOpenEJBJavaagent
+     # End of Snippet to add
+
+
+    rem ----- Execute The Requested Command
+    ---------------------------------------
+    echo Using CATALINA_BASE:   %CATALINA_BASE%
+    echo Using CATALINA_HOME:   %CATALINA_HOME%
+
+
+
+    # Set juli LogManager if it is present
+    if [OPENEJB: -r "$CATALINA_BASE"/conf/logging.properties ](openejb:--r-"$catalina_base"/conf/logging.properties-.html)
+    ; then
+    JAVA_OPTS="$JAVA_OPTS
+    "-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
+    "-Djava.util.logging.config.file="$CATALINA_BASE/conf/logging.properties"
+    fi
+
+     #Start of Snippet to add
+     if [OPENEJB: -r "$CATALINA_BASE"/webapps/lib/openejb-javaagent.jar ](openejb:--r-"$catalina_base"/webapps/lib/openejb-javaagent.jar-.html)
+    ; then
+    JAVA_OPTS=""-javaagent:$CATALINA_BASE/lib/openejb-javaagent.jar"
+    $JAVA_OPTS"
+    fi
+    #End of Snippet to add
+
+
+
+##Note:
+ The example above is an excerpt from the middle of the
+bin/catalina.sh file. Search for the this section and add the snippet shown 
+
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/maven.mdtext
----------------------------------------------------------------------
diff --git a/docs/maven.mdtext b/docs/maven.mdtext
new file mode 100644
index 0000000..41eb91c
--- /dev/null
+++ b/docs/maven.mdtext
@@ -0,0 +1,38 @@
+# Maven Information
+
+This page is intended to provide an insight into basic [Maven](http://maven.apache.org/) usage for users that are not all that familiar with [Maven](http://maven.apache.org/) projects.
+It is by no means a tutorial and is designed to be more of a *quickstart* to get you up and running.
+
+You can find a really good [Maven](http://maven.apache.org/) tutorial here: [http://books.sonatype.com/mvnex-book/reference/public-book.html](http://books.sonatype.com/mvnex-book/reference/public-book.html)
+
+It is assumed that:
+
+ - You have downloaded and installed [Maven](http://maven.apache.org/) and that you can run **mvn --version** from any command prompt (or console).
+ - You have downloaded and installed [Subversion](http://subversion.apache.org/) and that you can run **svn --version** from any command prompt or console.
+
+It is also assumed you have downloaded one of the following:
+
+ - One of the example projects from [http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples]()
+ - The entire project source from [http://svn.apache.org/repos/asf/tomee/tomee/trunk](http://svn.apache.org/repos/asf/tomee/tomee/trunk)
+ 
+Use [Subversion](http://subversion.apache.org/) to checkout the example sources from a console like so:
+ 
+	svn co http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/[example]
+		
+Or that you may of course also be using your own project pom.xml
+
+If you want to use the latest snapshot locate the *<repositories>* section in your pom.xml and ensure the following repository exists:
+	
+	<repositories>
+	  <repository>
+	    <id>apache-m2-snapshot</id>
+	    <name>Apache M2 Snapshot Repository</name>
+	    <url>http://repository.apache.org/snapshots/</url>
+	    <releases>
+	  	  <enabled>false</enabled>
+	    </releases>
+	    <snapshots>
+	  	  <enabled>true</enabled>
+	    </snapshots>
+	  </repository>
+	</repositories>
\ No newline at end of file


[07/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/multiple-business-interface-hazzards.mdtext
----------------------------------------------------------------------
diff --git a/docs/multiple-business-interface-hazzards.mdtext b/docs/multiple-business-interface-hazzards.mdtext
new file mode 100644
index 0000000..34bb395
--- /dev/null
+++ b/docs/multiple-business-interface-hazzards.mdtext
@@ -0,0 +1,199 @@
+Title: Multiple Business Interface Hazzards
+<a name="MultipleBusinessInterfaceHazzards-UndeclaredThrowableException"></a>
+#  UndeclaredThrowableException
+
+When two java interfaces are implemented by a proxy and those two
+interfaces declare the *same method* but with *different throws clauses*
+some very nasty side effects happen, namely you loose the ability to throw
+any checked exceptions that are not in the throws clause of both methods.
+
+
+    import junit.framework.TestCase;
+    
+    import java.lang.reflect.InvocationHandler;
+    import java.lang.reflect.Method;
+    import java.lang.reflect.UndeclaredThrowableException;
+    
+    /**
+     * @version $Rev$ $Date$
+     */
+    public class ExceptionTest extends TestCase {
+    
+        public void test() throws Exception {
+    	ClassLoader classLoader = this.getClass().getClassLoader();
+            Class[]
+ interfaces = new Class[]{One.class, Two.class};
+    
+    	InvocationHandler h = new TestInvocationHandler();
+    
+    	Object proxy =
+java.lang.reflect.Proxy.newProxyInstance(classLoader, interfaces, h);
+    
+    	One one = (One) proxy;
+    
+    	try {
+    	    one.run(new CommonException());
+    	} catch (CommonException e) {
+    	    // this will work
+    	} catch(UndeclaredThrowableException u) {
+    	    Throwable t = u.getCause();
+    	    fail("Undeclared: "+t);
+    	} catch(Throwable t){
+    	    fail("Caught: "+t);
+    	}
+    
+    	try {
+    	    one.run(new OneException());
+    	} catch (OneException e) {
+    	} catch(UndeclaredThrowableException u) {
+    	    Throwable t = u.getCause();
+    	    fail("Undeclared: "+t); // This will always be the code that
+executes
+    	} catch(Throwable t){
+    	    fail("Caught: "+t);
+    	}
+    
+    	Two two = (Two) proxy;
+    	try {
+    	    two.run(new CommonException());
+    	} catch (TwoException e) {
+    	} catch(UndeclaredThrowableException u) {
+    	    Throwable t = u.getCause();
+    	    fail("Undeclared: "+t); // This will always be the code that
+executes
+    	} catch(Throwable t){
+    	    fail("Caught: "+t);
+    	}
+    
+        }
+    
+        public static class CommonException extends Exception {
+    	public CommonException() {
+    	}
+        }
+    
+        public static interface One {
+    	void run(Object o) throws OneException, CommonException;
+        }
+    
+        public static class OneException extends Exception {
+    	public OneException() {
+    	}
+        }
+    
+        public static interface Two {
+    	void run(Object o) throws TwoException, CommonException;
+        }
+    
+        public static class TwoException extends Exception {
+    	public TwoException() {
+    	}
+        }
+    
+        private static class TestInvocationHandler implements InvocationHandler
+{
+            public Object invoke(Object proxy, Method method, Object[]
+ args) throws Throwable {
+                throw (Throwable)args[0]
+;
+    	}
+        }
+    }
+
+
+
+<a name="MultipleBusinessInterfaceHazzards-IllegalArgumentException"></a>
+# IllegalArgumentException
+
+This one is less of a runtime problem as doing this will cause things to
+fail up front.	When two java interfaces are implemented by a proxy and
+those two interfaces declare the *same method* but with *different return
+types* the VM proxy code will refuse to create a proxy at all.	Take this
+code example:
+
+
+    
+    import junit.framework.TestCase;
+    
+    import java.lang.reflect.InvocationHandler;
+    import java.lang.reflect.Method;
+    
+    /**
+     * @version $Rev$ $Date$
+     */
+    public class ReturnTest extends TestCase {
+    
+        public void test() throws Exception {
+    	ClassLoader classLoader = this.getClass().getClassLoader();
+            Class[]
+ interfaces = new Class[]{ReturnTest.One.class, ReturnTest.Two.class};
+    
+    	InvocationHandler h = new ReturnTest.TestInvocationHandler();
+    
+    	Object proxy =
+java.lang.reflect.Proxy.newProxyInstance(classLoader, interfaces, h);
+    
+    	One one = (One) proxy;
+    	try {
+    	    Object object = one.run(new ThingOne());
+    	} catch (Throwable t) {
+    	    fail("Caught: " + t);
+    	}
+    
+    	Two two = (Two) proxy;
+    	try {
+    	    Object object = two.run(new ThingTwo());
+    	} catch (Throwable t) {
+    	    fail("Caught: " + t);
+    	}
+    
+        }
+    
+        public static interface One {
+    	ThingOne run(Object o);
+        }
+    
+        public static class ThingOne {
+        }
+    
+        public static interface Two {
+    	ThingTwo run(Object o);
+        }
+    
+        public static class ThingTwo {
+        }
+    
+        private static class TestInvocationHandler implements InvocationHandler
+{
+            public Object invoke(Object proxy, Method method, Object[]
+ args) throws Throwable {
+                return args[0]
+;
+    	}
+        }
+    }
+
+
+Running this code will result in the following exception:
+
+
+    java.lang.IllegalArgumentException: methods with same signature
+run(java.lang.Object) but incompatible return types: [class ReturnTest$ThingOne, class ReturnTest$ThingTwo]
+    	at
+sun.misc.ProxyGenerator.checkReturnTypes(ProxyGenerator.java:669)
+    	at
+sun.misc.ProxyGenerator.generateClassFile(ProxyGenerator.java:420)
+    	at
+sun.misc.ProxyGenerator.generateProxyClass(ProxyGenerator.java:306)
+    	at java.lang.reflect.Proxy.getProxyClass(Proxy.java:501)
+    	at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:581)
+    	at ReturnTest.test(ReturnTest.java:36)
+    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+    	at
+sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+    	at
+sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+    	at
+com.intellij.rt.execution.junit2.JUnitStarter.main(JUnitStarter.java:32)
+    
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/multipoint-considerations.mdtext
----------------------------------------------------------------------
diff --git a/docs/multipoint-considerations.mdtext b/docs/multipoint-considerations.mdtext
new file mode 100644
index 0000000..4a295cc
--- /dev/null
+++ b/docs/multipoint-considerations.mdtext
@@ -0,0 +1,26 @@
+Title: Multipoint Considerations
+
+# Network size
+    
+The general disadvantage of this topology is the number of connections
+required.  The number of connections for the network of servers is equal to
+`(n * n - n) / 2`, where n is the number of servers.  For example, with 5
+servers you need 10 connections, with 10 servers you need 45 connections,
+and with 50 servers you need 1225 connections.	This is of course the
+number of connections across the entire network, each individual server
+only needs `n - 1` connections.
+    
+The handling of these sockets is all asynchronous Java NIO code which
+allows the server to handle many connections (all of them) with one thread.
+ From a pure threading perspective, the option is extremely efficient with
+just one thread to listen and broadcast to many peers.	
+    
+# Double connect
+    
+It is possible in this process that two servers learn of each other at the
+same time and each attempts to connect to the other simultaneously,
+resulting in two connections between the same two servers.  When this
+happens both servers will detect the extra connection and one of the
+connections will be dropped and one will be kept.  In practice this race
+condition rarely happens and can be avoided almost entirely by fanning out
+server startup by as little as 100 milliseconds.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/multipoint-discovery.mdtext
----------------------------------------------------------------------
diff --git a/docs/multipoint-discovery.mdtext b/docs/multipoint-discovery.mdtext
new file mode 100644
index 0000000..e042537
--- /dev/null
+++ b/docs/multipoint-discovery.mdtext
@@ -0,0 +1,71 @@
+Title: Multipoint (TCP) Discovery
+
+As TCP has no real broadcast functionality to speak of, communication of
+who is in the network is achieved by each server having a physical
+connection to each other server in the network.
+
+To join the network, the server must be configured to know the address of
+at least one server in the network and connect to it.  When it does both
+servers will exchange the full list of all the other servers each knows
+about.	Each server will then connect to any new servers they've  just
+learned about and repeat the processes with those new servers.	The end
+result is that everyone has a direct connection to everyone 100% of the
+time, hence the made-up term "multipoint" to describe this situation of
+each server having multiple point-to-point connections which create a fully
+connected graph.
+
+On the client side things are similar.	It needs to know the address of at
+least one server in the network and be able to connect to it.  When it does
+it will get the full (and dynamically maintained) list of every server in
+the network.  The client doesn't connect to each of those servers
+immediately, but rather consults the list in the event of a failover, using
+it to decide who to connect to next.
+
+The entire process is essentially the art of using a statically maintained
+list to bootstrap getting the more valuable dynamically maintained list.
+
+# Server Configuration
+
+In the server this list can be specified via the
+`conf/multipoint.properties` file like so:
+
+    server	    = org.apache.openejb.server.discovery.MultipointDiscoveryAgent
+    bind	    = 127.0.0.1
+    port	    = 4212
+    disabled    = false
+    initialServers = 192.168.1.20:4212, 192.168.1.30:4212, 192.168.1.40:4212
+
+
+The above configuration shows the server has an `port` `4212` open for
+connections by other servers for multipoint communication.  The
+`initialServers` list should be a comma separated list of other similar
+servers on the network.  Only one of the servers listed is required to be
+running when this server starts up -- it is not required to list all
+servers in the network.
+
+# Client Configuration
+
+Configuration in the client is similar, but note that EJB clients do not
+participate directly in multipoint communication and do **not** connect to
+the multipoint port.  The server list is simply a list of the regular
+`ejbd://` urls that a client normally uses to connect to a server.
+
+    Properties p = new Properties();
+    p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
+    p.put(Context.PROVIDER_URL, "failover:ejbd://192.168.1.20:4201,ejbd://192.168.1.30:4201");
+    InitialContext remoteContext = new InitialContext(p);
+
+Failover can work entirely driven by the server, the client does not need
+to be configured to participate.  A client can connect as usual to the server.
+
+    Properties p = new Properties();
+    p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
+    p.put(Context.PROVIDER_URL, "ejbd://192.168.1.20:4201");
+    InitialContext remoteContext = new InitialContext(p);
+
+If the server at `192.168.1.20:4201` supports failover, so will the client.
+
+In this scenario the list of servers used for failover is supplied entirely
+by the server at `192.168.1.20:4201`.  The server could have aquired the list
+via multicast or multipoint (or both), but this detail is not visible to the
+client.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/multipoint-recommendations.mdtext
----------------------------------------------------------------------
diff --git a/docs/multipoint-recommendations.mdtext b/docs/multipoint-recommendations.mdtext
new file mode 100644
index 0000000..a7c2847
--- /dev/null
+++ b/docs/multipoint-recommendations.mdtext
@@ -0,0 +1,139 @@
+Title: Multipoint Recommendations
+
+As mentioned the `initialServers` is only used for bootstrapping
+the multipoint network.  Once running, all servers will dynamically
+establish direct connections with each other and there is no single point
+of failure.
+    
+However to ensure that the bootstrapping process can occur successfully,
+the `initialServers` property of the `conf/multipoint.properties` file
+must be set carefully and with a specific server start order in mind.  Each
+server consults its `initialServers` list exactly once in the
+bootstrapping phase at startup, after that time connections are made
+dynamically.
+    
+This means that at least one of the servers listed in `initialServers`
+must already be running when the server starts or the server might never
+become introduced and connected to all the other servers in the network.
+    
+# Failed scenario <small>background</small>
+    
+As an example of a failed scenario, imagine there are three servers;
+`server1`, `server2`, `server3`.  They are setup only to point to the server in
+front of them making a chain:
+    
+* server1; `initialServers = server2`
+* server2; `initialServers = server3`
+* server3; `initialServers = *&lt;blank>*`
+    
+Which is essentially `server1` -> `server2` -> `server3`.  This scenario could
+work, but they servers would have to be started in exactly the opposite
+order:
+    
+1. `server3` starts
+1. `server2` starts
+    1. *static:* connect to `server3`
+1. `server1` starts
+    1. *static:* connect to `server2`
+    1. *dynamic:* connect to `server3`
+    
+At this point all servers would be fully connected.  But the above setup is
+flawed and could easily fail.  The first flaw is `server3` lists nothing in
+its `initialServers` list, so if it were restarted it would leave the
+multipoint network and not know how to get back in.
+
+The second flaw is if you started them in any other order, you would also
+not get a fully connected multipoint network.  Say the servers were started
+in "front" order:
+    
+1. `server1` starts
+    1. *static:* connect to `server2` - failed, `server2` not started.
+1. `server2` starts
+    1. *static:* connect to `server3` - failed, `server3` not started.
+1. `server3` starts
+    1. no connection attempts, initialServers list is empty.
+    
+After startup completes, all servers will be completely isolated and
+failover will not work.  The described setup is weaker than it needs to be.
+Listing just one server means the listed server is a potential point of
+weakness.  As a matter of trivia, it is interesting to point out that you
+could bring a fourth server online temporarily that lists all three
+servers.  Once it makes the introductions and all servers learn of each
+other, you could shut it down again.
+    
+The above setup is easily fixable via better configuration.  If `server3`
+listed both `server1` and `server2` in its initialServers list, rather than
+listing nothing at all, then all servers would fully discover each other
+regardless of startup order; assuming all three servers did eventually
+start.
+    
+# Bootstrapping Three Servers or Less
+    
+In a three sever scenario, we recommend simply having all three servers
+list all three servers.  
+
+* server1/conf/multipoint.properties
+    * `initialServers = server1, server2, server3`
+* server2/conf/multipoint.properties
+    * `initialServers = server1, server2, server3`
+* server3/conf/multipoint.properties
+    * `initialServers = server1, server2, server3`
+
+There's no harm to a server listing itself.  It gives you one clean list to
+maintain and it will work even if you decide not to start one of the three
+servers.
+    
+# Bootstrapping Four Servers or More
+
+In a scenario of four or more, we recommend picking at least to servers and
+focus on always keeping at least one of them running.  Lets refer to them
+as "root" servers for simplicity sake.
+    
+* server1/conf/multipoint.properties
+    * `initialServers = server2`
+* server2/conf/multipoint.properties
+    * `initialServers = server1`
+    
+Root `server1` would list root `server2` so they would always be linked to each
+other regardless of start order or if one of them went down.  `Server1` could
+be shutdown and reconnect on startup to the full multipoint network through
+`server2`, and vice versa.
+
+All other servers would simply list the root servers (`server1`, `server2`) in
+their initialServers list.
+
+* server3/conf/multipoint.properties
+    * `initialServers = server1, server2`
+* server4/conf/multipoint.properties
+    * `initialServers = server1, server2`
+* serverN/conf/multipoint.properties
+    * `initialServers = server1, server2`
+
+As long as at least one root server (`server1` or `server2`) was running, you
+can bring other servers on and offline at will and always have a fully
+connected graph.
+
+Of course all servers once running and connected will have a full list of
+all other servers in the network, so if at any time the "root" servers
+weren't around to make initial introductions to new servers it would be no
+trouble.  It's possible to reconfigure new servers to point at any other
+server in the network as all servers will have the full list.  So these
+"root" servers are no real point of failure in function, but only of
+convenience.
+
+# Setting initialServers <small>overrides</small>
+
+Always remember that any property in a `conf/<server-service>.properties`
+file can be overridden on the command line or via system properties.  So it
+is possible easily set the `initialServers` list in startup scripts.
+
+A bash example might look something like:
+
+    !/bin/bash
+
+    OPENEJB_HOME=/opt/openejb-3.1.3
+    INITIAL_LIST=$(cat /some/shared/directory/our_initial_servers.txt)
+
+    $OPENEJB_HOME/bin/openejb start -Dmultipoint.initialServers=$INITIAL_LIST
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/multipulse-discovery.mdtext
----------------------------------------------------------------------
diff --git a/docs/multipulse-discovery.mdtext b/docs/multipulse-discovery.mdtext
new file mode 100644
index 0000000..2d279e6
--- /dev/null
+++ b/docs/multipulse-discovery.mdtext
@@ -0,0 +1,90 @@
+Title: MultiPulse (UDP) Discovery
+
+MultiPulse is an alternative multicast lookup that does not use a regular heartbeat.
+Instead, servers listen for a multicast request packet (a pulse) to which a response
+is then sent. Multicast network traffic is effectively reduced to an absolute minimum.
+
+MultiPulse is only useful in network scenarios where both client and server can be
+configured to send multicast UDP packets.
+
+# Server Configuration
+
+After you boot the server for the first time the default configuration will create the
+file `conf/conf.d/multipulse.properties` containing:
+
+    server      = org.apache.openejb.server.discovery.MulticastPulseAgent
+    bind        = 239.255.2.3
+    port        = 6142
+    disabled    = true
+    group       = default
+
+You just need to enable the agent by setting `disabled = false`. It is advisable to
+disable multicast in the `multicast.properties file`, or at least to use a different
+bind address or port should you wish to use both.
+
+All of the above settings except `server` can be modified as required.
+The `port` and `bind` must be valid for general multicast/udp network communication.
+
+The `group` setting can be changed to further group/cluster servers that may use
+the same multicast channel.  As shown below the client also has an optional `group`
+setting which can be used to select an appropriate server cluster from the multicast
+channel (See MultiPulse Client).
+
+The next step is to ensure that the advertised services are configured for discovery.
+Edit the `ejbd.properties` file (and any other enabled services such as http, etc.) and
+ensure that the `discovery` option is set to a value that remote clients will be able
+to resolve.
+
+    server      = org.apache.openejb.server.ejbd.EjbServer
+    bind        = 0.0.0.0
+    port        = 4201
+    disabled    = false
+    threads     = 20
+    discovery   = ejb:ejbd://{bind}:{port}
+    
+NOTE: If either `0.0.0.0` (IPv4) or `[::]` (IPv6) wildcard bind addresses are used then the
+server will actually broadcast all of it's known public hosts to clients. Clients will then
+cycle though and attempt to connect to the provided hosts until successful.
+
+If `localhost` is used then only clients on the same physical machine will actually 'see' the
+server response.
+
+# MultiPulse Client
+
+The multipulse functionality is not just for servers to find each other in a
+cluster, it can also be used for EJB clients to discover a server.  A
+special `multipulse://` URL can be used in the `InitialContext` properties to
+signify that multipulse should be used to seed the connection process.  Such
+as:
+
+    Properties p = new Properties();
+    p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
+    p.put(Context.PROVIDER_URL, "multipulse://239.255.2.3:6142?group=default&timeout=250");
+    InitialContext remoteContext = new InitialContext(p);
+
+The URL has optional query parameters such as `schemes` and `group` and
+`timeout` which allow you to zero in on a particular type of service of a
+particular cluster group as well as set how long you are willing to wait in
+the discovery process till finally giving up.  The first matching service
+that it sees "flowing" around on the UDP stream is the one it picks and
+sticks to for that and subsequent requests, ensuring UDP is only used when
+there are no other servers to talk to.
+    
+Note that EJB clients do not need to use multipulse to find a server.  If
+the client knows the URL of a server in the cluster, it may use it and
+connect directly to that server, at which point that server will share the
+full list of its peers.
+    
+# Multicast Servers with TCP Clients
+    
+Note that clients do not need to use multipulse to communicate with servers.
+Servers can use multicast to discover each other, but clients are still
+free to connect to servers in the network using the server's TCP address.
+    
+    Properties p = new Properties();
+    p.put(Context.INITIAL_CONTEXT_FACTORY,  "org.apache.openejb.client.RemoteInitialContextFactory");
+    p.put(Context.PROVIDER_URL, "ejbd://192.168.1.30:4201");
+    InitialContext remoteContext = new InitialContext(p);
+
+When the client connects, the server will send the URLs of all the servers
+in the group and failover will take place normally.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/new-in-openejb-3.0.mdtext
----------------------------------------------------------------------
diff --git a/docs/new-in-openejb-3.0.mdtext b/docs/new-in-openejb-3.0.mdtext
new file mode 100644
index 0000000..7c593f7
--- /dev/null
+++ b/docs/new-in-openejb-3.0.mdtext
@@ -0,0 +1,175 @@
+Title: New in OpenEJB 3.0
+<a name="NewinOpenEJB3.0-EJB3.0"></a>
+# EJB 3.0
+
+OpenEJB 3.0 supports the EJB 3.0 specification as well as the prior EJB
+2.1, EJB 2.0, and EJB 1.1.  New features in EJB 3.0 include:
+
+ - Annotations instead of xml
+ - No home interfaces
+ - Business Interfaces
+ - Dependency Injection
+ - Intercpetors
+ - Java Persistence API
+ - Service Locator (ala SessionContext.lookup)
+ - POJO-style beans
+
+EJB 2.x features since OpenEJB 1.0 also include:
+ - MessageDriven Beans
+ - Container-Managed Persistence (CMP) 2.0
+ - Timers
+
+The two aspects of EJB that OpenEJB does not yet support are:
+  - Web Services (JAX-WS, JAX-RPC)
+  - CORBA
+
+JAX-WS and CORBA support will be added in future releases.  Support for the
+JAX-RPC API is not a planned feature.
+
+<a name="NewinOpenEJB3.0-ExtensionstoEJB3.0"></a>
+# Extensions to EJB 3.0
+
+<a name="NewinOpenEJB3.0-CMPviaJPA"></a>
+## CMP via JPA
+
+Our CMP implementation is a thin layer over the new Java Persistence API
+(JPA).	This means when you deploy an old style CMP 1.1 or CMP 2.1 bean it
+is internally converted and ran as a JPA bean.	This makes it possible to
+use both CMP and JPA in the same application without any coherence issues
+that can come from using two competing persistence technologies against the
+same data.  Everything is ultimately JPA in the end.
+
+<a name="NewinOpenEJB3.0-ExtendedDependencyInjection"></a>
+## Extended Dependency Injection
+
+Dependency Injection in EJB 3.0 via @Resource is largely limited to objects
+provided by the container, such as DataSources, JMS Topics and Queues.	It
+is possible for you to supply your own configuration information for
+injection, but standard rules allow for only data of type String,
+Character, Boolean, Integer, Short, Long, Double, Float and Byte.  If you
+needed a URL, for example, you'd have to have it injected as a String then
+convert it yourself to a URL.  This is just plain silly as the conversion
+of Strings to other basic data types has existed in JavaBeans long before
+Enterprise JavaBeans existed.  
+
+OpenEJB 3.0 supports injection of any data type for which you can supply a
+JavaBeans PropertyEditor.  We include several built-in PropertyEditors
+already such as Date, InetAddress, Class, File, URL, URI, Map, List and
+more.
+
+
+    import java.net.URI;
+    import java.io.File;
+    import java.util.Date;
+    
+    @Stateful 
+    public class MyBean {
+        @Resource URI blog;
+        @Resource Date birthday;
+        @Resource File homeDirectory;
+    }
+
+
+<a name="NewinOpenEJB3.0-TheMETA-INF/env-entries.properties"></a>
+## The META-INF/env-entries.properties
+
+Along the lines of injection, one of the last remaining things in EJB 3
+that people need an ejb-jar.xml file for is to supply the value of
+env-entries.  Env Entries are the source of data for all user supplied data
+injected into your bean; the afore mentioned String, Boolean, Integer, etc.
+ This is a very big burden as each env-entry is going to cost you 5 lines
+of xml and the complication of having to figure out how to add you bean
+declaration in xml as an override of an existing bean and not accidentally
+as a new bean.	All this can be very painful when all you want is to supply
+the value of a few @Resource String fields in you bean class.  
+
+To fix this, OpenEJB supports the idea of a META-INF/env-entries.properties
+file where we will look for the value of things that need injection that
+are not container controlled resources (i.e. datasources and things of that
+nature).  You can configure you ejbs via a properties file and skip the
+need for an ejb-jar.xml and it's 5 lines per property madness.
+
+
+    blog = http://acme.org/myblog
+    birthday = locale=en_US style=MEDIUM Mar 1, 1954
+    homeDirectory = /home/esmith/
+
+
+<a name="NewinOpenEJB3.0-SupportforGlassFishdescriptors"></a>
+## Support for GlassFish descriptors
+
+Unit testing EJBs with OpenEJB is a major feature and draw for people, even
+for people who may still use other app servers for final deployment such as
+Geronimo or GlassFish.	The descriptor format for Geronimo is natively
+understood by OpenEJB as OpenEJB is the EJB Container provider for
+Geronimo.  However, OpenEJB also supports the GlassFish descriptors so
+people using GlassFish as their final server can still use OpenEJB for
+testing EJBs via plain JUnit tests in their build and only have one set of
+vendor descriptors to maintain.
+
+<a name="NewinOpenEJB3.0-JavaEE5EARandApplicationClientsupport"></a>
+## JavaEE 5 EAR and Application Client support
+
+JavaEE 5 EARs and Application Clients can be deployed in addition to ejb
+jars.  EAR support is limited to ejbs, application clients, and libraries;
+WAR files and RAR files will be ignored.   Per the JavaEE 5 spec, the
+META-INF/application.xml and META-INF/application-client.xml files are
+optional.
+
+<a name="NewinOpenEJB3.0-ApplicationValidationforEJB3.0"></a>
+##  Application Validation for EJB 3.0
+
+Incorrect usage of various new aspects of EJB 3.0 are checked for and
+reported during the deployment process preventing strange errors and
+failures.  
+
+As usual validation failures (non-compliant issues with your application)
+are printed out in complier-style "all-at-once" output allowing you to see
+and fix all your issues in one go.  For example, if you have 10
+@PersistenceContext annotations that reference an invalid persistence unit,
+you get all 10 errors on the *first* deploy rather than one failure on the
+first deploy with 9 more failed deployments to go.
+
+Validation output comes in three levels.  The most verbose level will tell
+you in detail what you did wrong, what the options are, and what to do
+next... even including valid code and annotation usage tailored to your app
+that you can copy and paste into your application.  Very ideal for
+beginners and people using OpenEJB in a classroom setting.
+
+<a name="NewinOpenEJB3.0-MostconfigurableJNDInamesever"></a>
+##  Most configurable JNDI names ever
+
+<a name="NewinOpenEJB3.0-GeneralImprovements"></a>
+# General Improvements
+
+<a name="NewinOpenEJB3.0-OnlineDeployment"></a>
+##  Online Deployment
+<a name="NewinOpenEJB3.0-SecurityService"></a>
+##  Security Service
+<a name="NewinOpenEJB3.0-ConnectionPooling"></a>
+##  Connection Pooling
+<a name="NewinOpenEJB3.0-ConfigurationOverriding"></a>
+##  Configuration Overriding
+<a name="NewinOpenEJB3.0-FlexibleJNDINameFormatting"></a>
+##  Flexible JNDI Name Formatting
+<a name="NewinOpenEJB3.0-CleanerEmbedding"></a>
+##  Cleaner Embedding
+<a name="NewinOpenEJB3.0-Tomcat6Support"></a>
+##  Tomcat 6 Support
+<a name="NewinOpenEJB3.0-Businesslocalsremotable"></a>
+##  Business locals remotable
+
+If you want to make business local interfaces remotable, you can set this
+property:
+
+      openejb.remotable.businessLocals=true
+
+Then you can lookup your business local interfaces from remote clients.
+
+You'd still have to ensure that the you pass back and forth is
+serializable.
+
+
+
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/openejb-3.mdtext
----------------------------------------------------------------------
diff --git a/docs/openejb-3.mdtext b/docs/openejb-3.mdtext
new file mode 100644
index 0000000..94dd083
--- /dev/null
+++ b/docs/openejb-3.mdtext
@@ -0,0 +1,68 @@
+Title: OpenEJB 3
+
+<a name="OpenEJB3-Past,Present,andFuture"></a>
+# Past, Present, and Future
+
+The goal of OpenEJB 3 is to merge our past, present, and future into one
+codebase.  OpenEJB 3 will take the excellent features in OpenEJB 1.0
+(tomcat integration, testability, embeddibility, ease of use, etc), move
+towards an IoC architecture based on Gbean.org and Spring, bring in the
+OpenEJB 2 code, and implement the EJB 3.0 specification.
+
+<a name="OpenEJB3-ThePlan"></a>
+# The Plan
+
+We will start on OpenEJB 3 by taking the 1.0 code (pretty much the same as
+0.9.2), merging in the 2.0 code, and ensuring that the entire time the code
+we write is code you can use!  We will never drop a feature, even
+temporarily.  We will start from code that users are now using and always
+keep, maintain, and improve those features as we add new features. 
+Releasing early and often.
+
+<a name="OpenEJB3-Past"></a>
+## Past
+
+OpenEJB 1.0 (from 0.9.2 lineage) has some great features and many people
+that depend on them.  Tomcat integration, Collapsed EARs, Container Driven
+Testing, easy embedding, and other features make OpenEJB a unique EJB
+implementation.  We're going to take this code, kill all the static
+old-school techniques, modernize it with and IoC architecture based on the
+gbean.org kernel.  The gbean kernel is an IoC kernel compatible with both
+Spring and Geronimo.  
+
+<a name="OpenEJB3-Present"></a>
+## Present
+
+OpenEJB 2.0 is an awesome fast implementation of EJB 2.1 that runs in
+Apache Geronimo.  As the gbean.org kernel is both Spring and Geronimo
+compatible, it provides a great way for us to take the Geronimo-compatible
+EJB containers and deployers in OpenEJB 2 and start hammering them out and
+releasing them to long-time OpenEJB users.  It will also allow people using
+OpenEJB to start experimenting with Spring's sophisticated IoC features.
+
+<a name="OpenEJB3-Future"></a>
+## Future
+
+EJB 3.0 is a new direction for EJB and we're going to do it with style.  A
+focus on simplicity is where OpenEJB shines.  Combining the EJB 3.0
+Simplified specification with our existing lightweight features, like
+Container Driven Testing, is just the beginning.  We plan to go way beyond
+the planned additions and into areas the J2EE spec groups won't go such as
+deployment descriptors with attributes, simpler packaging, more flexible
+classloader setup, more powerful IoC support, simpler web services support
+and more.
+
+<a name="OpenEJB3-ReleaseonDayOne"></a>
+# Release on Day One
+
+Keep it working, keep it progressing, keep releasing.  The 3.0 version
+number won't be the finishing line, but the starting line.  Our work will
+start out as 3.0 on day one and keep incrementing the version number as we
+get further along our feature list.  The EJB 3.0 spec is not completed and
+the OpenEJB 3.0 code line will be equally dynamic and best suited for
+adventurous developers who enjoy reading release notes and participating on
+user lists.  There will be an incredible focus on keeping things stable
+enough to use the entire time as we work towards feature completion.  
+
+The effect of all this is that you get a fixed-up, far more extensible,
+version of the code you are already using delivered to you right away.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/openejb-binaries.mdtext
----------------------------------------------------------------------
diff --git a/docs/openejb-binaries.mdtext b/docs/openejb-binaries.mdtext
new file mode 100644
index 0000000..0522ce7
--- /dev/null
+++ b/docs/openejb-binaries.mdtext
@@ -0,0 +1,24 @@
+Title: OpenEJB Binaries
+Add this to your *$HOME/.m2/settings.xml* to enable publishing to the
+Apache Nexus repo.  This works for snapshots or staging final binaries.
+
+    <settings>
+      <servers>
+        <server>
+          <id>apache.snapshots.https</id>
+          <username>yourapacheid</username>
+          <password>yourapachepass</password>
+        </server>
+        <server>
+          <id>apache.releases.https</id>
+          <username>yourapacheid</username>
+          <password>yourapachepass</password>
+        </server>
+      </servers>
+    </settings>
+
+    
+Then publish via:
+
+    $ mvn clean deploy
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/openejb-eclipse-plugin.mdtext
----------------------------------------------------------------------
diff --git a/docs/openejb-eclipse-plugin.mdtext b/docs/openejb-eclipse-plugin.mdtext
new file mode 100644
index 0000000..68dc475
--- /dev/null
+++ b/docs/openejb-eclipse-plugin.mdtext
@@ -0,0 +1,19 @@
+Title: OpenEJB Eclipse Plugin
+<a name="OpenEJBEclipsePlugin-OpenEJBEclipsePlugin"></a>
+# OpenEJB Eclipse Plugin
+
+<a name="OpenEJBEclipsePlugin-Overview"></a>
+### Overview
+
+The OpenEJB plugin for Eclipse provides the ability to run an OpenEJB
+standalone server and deploy projects directly from within the IDE, using
+functionality provided by the Eclipse Web Tools Project (WTP).
+Additionally, the plugin also provides the capability to read a ejb-jar.xml
+(and optionally a openejb-jar.xml) file and automatically add the
+corresponding EJB 3 annotations to your code automatically.
+
+[Installation](installation.html)
+[Building from source](building-from-source.html)
+[Generating EJB 3 annotations](generating-ejb-3-annotations.html)
+[Running a standalone OpenEJB server](running-a-standalone-openejb-server.html)
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/openejb-jsr-107-integration.mdtext
----------------------------------------------------------------------
diff --git a/docs/openejb-jsr-107-integration.mdtext b/docs/openejb-jsr-107-integration.mdtext
new file mode 100644
index 0000000..380b4a4
--- /dev/null
+++ b/docs/openejb-jsr-107-integration.mdtext
@@ -0,0 +1,21 @@
+Title: OpenEJB JSR-107 Integration
+
+<a name="OpenEJBJSR-107Integration-OpenEJBJSR-107(JCACHE)Integration"></a>
+# OpenEJB JSR-107 (JCACHE) Integration
+
+This page is for the collaboration for those involved with the integration
+of JSR-107 into OpenEJB.
+
+<a name="OpenEJBJSR-107Integration-Overview"></a>
+### Overview
+
+The idea here is to add a caching layer to OpenEJB.  The overall objective
+is to improve performance in OpenEJB where applicable through caching EJBs.
+
+<a name="OpenEJBJSR-107Integration-Status"></a>
+### Status
+
+Dain and myself (Jeremy) have deciphered the JSR-107 spec and how I am
+working on the first crude integration of JCACHE into OpenEJB.	Anyone
+interested in helping or providing any feedback/suggestions, please contact
+me via the developer mailing list.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/openejb.xml.mdtext
----------------------------------------------------------------------
diff --git a/docs/openejb.xml.mdtext b/docs/openejb.xml.mdtext
new file mode 100644
index 0000000..52a3104
--- /dev/null
+++ b/docs/openejb.xml.mdtext
@@ -0,0 +1,93 @@
+Title: openejb.xml
+
+<a name="openejb.xml-Overview"></a>
+# Overview
+
+The openejb.xml is the main configuration file for the container system and
+its services such as transaction, security, and data sources.
+    
+The format is a mix of xml and properties inspired by the format of the
+httpd configuration file.  Basically:
+
+
+    <tag id="">
+      ...properties...
+    </tag>
+
+    
+Such as:
+    
+
+    <Resource id="MyDataSource" type="DataSource">
+      username foo
+      password bar
+    </Resource>
+
+
+*Note the space*.  White space is a valid name/value pair separator in any
+java properties file (along with semi-colon).  So the above is equivalent
+to:
+
+    <Resource id="MyDataSource" type="DataSource">
+      username = foo
+      password = bar
+    </Resource>
+
+You are free to use white space, ":", or "=" for your name/value pair
+separator with no effect on OpenEJB.
+    
+<a name="openejb.xml-PropertyDefaultsandOverriding"></a>
+## Property Defaults and Overriding
+    
+The openejb.xml file itself functions as an override, default values are
+specified via other means (service-jar.xml files in the classpath),
+therefore you only need to specify property values here for 2 reasons:<br/>
+1. you wish to for documentation purposes<br/>
+2. you need to change the default value
+
+The default openejb.xml file has most of the useful properties for each
+component explicitly listed with default values for documentation purposes.
+ It is safe to delete them and be assured that no behavior will change if a
+smaller config file is desired.
+
+Overriding can also be done via the command line or plain Java system
+properties.  See [System Properties](system-properties.html)
+ for details.
+
+<a name="openejb.xml-Whatpropertiesareavailable?"></a>
+## What properties are available?
+    
+To know what properties can be overriden the './bin/openejb properties'
+command is very useful: see [Properties Tool](properties-tool.html)
+    
+Its function is to connect to a running server and print a canonical list
+of all properties OpenEJB can see via the various means of configuration. 
+When sending requests for help to the users list or jira, it is highly
+encouraged to send the output of this tool with your message.
+
+<a name="openejb.xml-Notconfigurableviaopenejb.xml"></a>
+## Not configurable via openejb.xml
+    
+The only thing not yet configurable via this file are ServerServices due to
+OpenEJB's embeddable nature and resulting long standing tradition of
+keeping the container system separate from the server layer.  This may
+change someday, but untill then ServerServices are configurable via
+conf/<service-id>.properties files such as conf/ejbd.properties to
+configure the main protocol that services EJB client requests.
+
+The format of those properties files is greatly adapted from the xinet.d style
+of configuration and even shares similar functionality and properties such
+as host-based authorization (HBA) via the 'only_from' property.
+
+<a name="openejb.xml-Restoringopenejb.xmltothedefaults"></a>
+## Restoring openejb.xml to the defaults
+
+To restore this file to its original default state, you can simply delete
+it or rename it and OpenEJB will see it's missing and unpack another
+openejb.xml into the conf/ directory when it starts.
+
+This is not only handy for recovering from a non-functional config, but
+also for upgrading as OpenEJB will not overwrite your existing
+configuration file should you choose to unpack an new distro over the top
+of an old one -- this style of upgrade is safe provided you move your old
+lib/ directory first.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/openjpa.mdtext
----------------------------------------------------------------------
diff --git a/docs/openjpa.mdtext b/docs/openjpa.mdtext
new file mode 100644
index 0000000..7e51d53
--- /dev/null
+++ b/docs/openjpa.mdtext
@@ -0,0 +1,111 @@
+Title: OpenJPA
+OpenJPA is bundled with OpenEJB as the default persistence provider.
+
+An example of working `persistence.xml` for OpenJPA:
+
+    <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+
+      <persistence-unit name="movie-unit">
+        <jta-data-source>movieDatabase</jta-data-source>
+        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+        <class>org.superbiz.injection.jpa.Movie</class>
+
+        <properties>
+          <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+        </properties>
+      </persistence-unit>
+    </persistence>
+
+    
+Where the datasources above are configured in your openejb.xml as follows:
+    
+    <Resource id="movieDatabase" type="DataSource">
+      JdbcDriver = org.hsqldb.jdbcDriver
+      JdbcUrl = jdbc:hsqldb:mem:moviedb
+    </Resource>
+    
+    <Resource id="movieDatabaseUnmanaged" type="DataSource">
+      JdbcDriver = org.hsqldb.jdbcDriver
+      JdbcUrl = jdbc:hsqldb:mem:moviedb
+      JtaManaged = false
+    </Resource>
+
+
+Or in properties as follows:
+
+    p.put("movieDatabase", "new://Resource?type=DataSource");
+    p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+    p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+    p.put("movieDatabaseUnmanaged", "new://Resource?type=DataSource");
+    p.put("movieDatabaseUnmanaged.JdbcDriver", "org.hsqldb.jdbcDriver");
+    p.put("movieDatabaseUnmanaged.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+    p.put("movieDatabaseUnmanaged.JtaManaged", "false");
+
+    
+# Common exceptions
+    
+## Table not found in statement
+    
+Or as derby will report it "Table 'abc.xyz' doesn't exist"
+    
+Someone has to create the database structure for your persistent objects.
+If you add the *openjpa.jdbc.SynchronizeMappings* property as shown below
+OpenJPA will auto-create all your tables, all your primary keys and all
+foreign keys exactly to match your objects.
+    
+    <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+    
+     <persistence-unit name="movie-unit">
+       <!-- your other stuff -->
+    
+       <properties>
+         <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+       </properties>
+     </persistence-unit>
+    </persistence>
+
+
+<a name="OpenJPA-Auto-commitcannotbesetwhileenrolledinatransaction"></a>
+## Auto-commit can not be set while enrolled in a transaction
+
+Pending
+
+<a name="OpenJPA-Thisbrokerisnotconfiguredtousemanagedtransactions."></a>
+## This broker is not configured to use managed transactions.
+
+<a name="OpenJPA-Setup"></a>
+### Setup
+
+Using a EXTENDED persistence context ...
+
+    @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.EXTENDED)
+    EntityManager entityManager;
+
+on a persistence unit setup as RESOURCE_LOCAL ...
+
+    <persistence-unit name="movie-unit" transaction-type="RESOURCE_LOCAL">
+      ...
+    </persistence-unit>
+
+    
+inside of a transaction.
+
+    @TransactionAttribute(TransactionAttributeType.REQUIRED)
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+
+Note the default transaction attribute for any ejb method is REQUIRED
+unless explicitly set otherwise in the bean class or method in question.
+
+<a name="OpenJPA-Solutions"></a>
+### Solutions
+
+You can either:
+
+1. Change your bean or it's method to use `TransactionAttributeType.NOT_REQUIRED` or `TransactionAttributeType.NEVER` which will guarantee it will not be invoked in a JTA transaction.
+1. Change your persistence.xml so the persistence-unit uses `transaction-type="TRANSACTION"` making it capable of participating in a JTA transaction.
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/orb-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/orb-config.mdtext b/docs/orb-config.mdtext
new file mode 100644
index 0000000..0ec436f
--- /dev/null
+++ b/docs/orb-config.mdtext
@@ -0,0 +1,24 @@
+Title: ORB Configuration
+
+
+A ORB can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <Resource id="myORB" type="org.omg.CORBA.ORB">
+    </Resource>
+
+Alternatively, a ORB can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    myORB = new://Resource?type=org.omg.CORBA.ORB
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared ORB a warning will be logged.  If a ORB is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple ORB declarations are allowed.
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+</table>
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/persistence-context.mdtext
----------------------------------------------------------------------
diff --git a/docs/persistence-context.mdtext b/docs/persistence-context.mdtext
new file mode 100644
index 0000000..cc14daa
--- /dev/null
+++ b/docs/persistence-context.mdtext
@@ -0,0 +1,54 @@
+Title: persistence-context
+<a name="persistence-context-Viaannotation"></a>
+#  Via annotation
+
+Both lookup and injection of an EntityManager can be configured via the
+`@PersistenceContext` annotation.
+
+    package org.superbiz;
+
+    import javax.persistence.PersistenceContext;
+    import javax.persistence.EntityManager;
+    import javax.ejb.Stateless;
+    import javax.naming.InitialContext;
+
+    @Stateless
+    @PersistenceContext(name = "myFooEntityManager", unitName = "foo-unit")
+    public class MyBean implements MyInterface {
+
+        @PersistenceContext(unitName = "bar-unit")
+        private EntityManager myBarEntityManager;
+
+        public void someBusinessMethod() throws Exception {
+            if (myBarEntityManager == null) throw new NullPointerException("myBarEntityManager not injected");
+
+            // Both can be looked up from JNDI as well
+            InitialContext context = new InitialContext();
+            EntityManager fooEntityManager = (EntityManager) context.lookup("java:comp/env/myFooEntityManager");
+            EntityManager barEntityManager = (EntityManager) context.lookup("java:comp/env/org.superbiz.MyBean/myBarEntityManager");
+        }
+    }
+
+
+<a name="persistence-context-Viaxml"></a>
+# Via xml
+
+The above @PersistenceContext annotation usage is 100% equivalent to the
+following xml.
+
+    <persistence-context-ref>
+        <persistence-context-ref-name>myFooEntityManager</persistence-context-ref-name>
+        <persistence-unit-name>foo-unit</persistence-unit-name>
+        <persistence-context-type>Transaction</persistence-context-type>
+    </persistence-context-ref>
+
+    <persistence-context-ref>
+        <persistence-context-ref-name>org.superbiz.calculator.MyBean/myBarEntityManager</persistence-context-ref-name>
+        <persistence-unit-name>bar-unit</persistence-unit-name>
+        <persistence-context-type>Transaction</persistence-context-type>
+        <injection-target>
+            <injection-target-class>org.superbiz.calculator.MyBean</injection-target-class>
+            <injection-target-name>myBarEntityManager</injection-target-name>
+        </injection-target>
+    </persistence-context-ref>
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/persistence-unit-ref.mdtext
----------------------------------------------------------------------
diff --git a/docs/persistence-unit-ref.mdtext b/docs/persistence-unit-ref.mdtext
new file mode 100644
index 0000000..4011699
--- /dev/null
+++ b/docs/persistence-unit-ref.mdtext
@@ -0,0 +1,87 @@
+Title: persistence-unit-ref
+Both lookup and injection of an EntityManagerFactory can be configured via
+the @PersistenceUnit annotation or <persistence-unit-ref> in xml. 
+Annotations and xml have equal function in both lookup and injection.
+
+<a name="persistence-unit-ref-InjectionandLookup"></a>
+#  Injection and Lookup
+
+<a name="persistence-unit-ref-Viaannotation"></a>
+##  Via annotation
+
+    package org.superbiz;
+
+    import javax.persistence.PersistenceUnit;
+    import javax.persistence.EntityManagerFactory;
+    import javax.ejb.Stateless;
+    import javax.naming.InitialUnit;
+
+    @Stateless
+    public class MyBean implements MyInterface {
+
+        @PersistenceUnit(unitName = "bar-unit")
+        private EntityManagerFactory myBarEntityManagerFactory;
+
+        public void someBusinessMethod() throws Exception {
+            if (myBarEntityManagerFactory == null) throw new NullPointerException("myBarEntityManagerFactory not injected");
+
+            // Both can be looked up from JNDI as well
+            InitialContext unit = new InitialContext();
+            EntityManagerFactory barEntityManagerFactory = (EntityManagerFactory) context.lookup("java:comp/env/org.superbiz.MyBean/myBarEntityManagerFactory");
+        }
+    }
+
+
+<a name="persistence-unit-ref-Viaxml"></a>
+## Via xml
+
+The above @PersistenceUnit annotation usage is 100% equivalent to the
+following xml.
+
+    <persistence-unit-ref>
+        <persistence-unit-ref-name>org.superbiz.calculator.MyBean/myBarEntityManagerFactory</persistence-unit-ref-name>
+        <persistence-unit-name>bar-unit</persistence-unit-name>
+        <persistence-unit-type>Transaction</persistence-unit-type>
+        <injection-target>
+            <injection-target-class>org.superbiz.calculator.MyBean</injection-target-class>
+            <injection-target-name>myBarEntityManagerFactory</injection-target-name>
+        </injection-target>
+    </persistence-unit-ref>
+
+    
+    
+# Lookup only
+    
+##  Via annotation
+    
+    package org.superbiz;
+
+    import javax.persistence.PersistenceUnit;
+    import javax.persistence.EntityManagerFactory;
+    import javax.ejb.Stateless;
+    import javax.naming.InitialUnit;
+
+    @Stateless
+    @PersistenceUnit(name = "myFooEntityManagerFactory", unitName = "foo-unit")
+    public class MyBean implements MyInterface {
+
+        public void someBusinessMethod() throws Exception {
+            InitialContext context = new InitialContext();
+            EntityManagerFactory fooEntityManagerFactory = (EntityManagerFactory) context.lookup("java:comp/env/myFooEntityManagerFactory");
+        }
+    }
+
+
+<a name="persistence-unit-ref-Viaxml"></a>
+# Via xml
+
+The above @PersistenceUnit annotation usage is 100% equivalent to the
+following xml.
+
+    <persistence-unit-ref>
+        <persistence-unit-ref-name>myFooEntityManagerFactory</persistence-unit-ref-name>
+        <persistence-unit-name>foo-unit</persistence-unit-name>
+        <persistence-unit-type>Transaction</persistence-unit-type>
+    </persistence-unit-ref>
+
+    

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/properties-listing.mdtext
----------------------------------------------------------------------
diff --git a/docs/properties-listing.mdtext b/docs/properties-listing.mdtext
new file mode 100644
index 0000000..43fe9ce
--- /dev/null
+++ b/docs/properties-listing.mdtext
@@ -0,0 +1,90 @@
+Title: System Properties Listing
+
+# OpenEJB system properties
+<table>
+<tr><td><b>Name</b></td><td><b>Value</b></td><td><b>Description</b></td></tr>
+<tr><td>openejb.embedded.remotable</td><td> bool </td><td> activate or not the remote services when available </td></tr>
+<tr><td><service prefix>.bind, &lt;service prefix&gt;.port, &lt;service prefix&gt;.disabled, &lt;service prefix&gt;.threads</td><td> host or IP, port, bool</td><td> override the host. Available for ejbd and httpejbd services (used by jaxws and jaxrs), number of thread to maneg requests  </td><tr>
+<tr><td>openejb.embedded.initialcontext.close </td><td> LOGOUT or DESTROY </td><td> configure the hook called when closing the initial context. Useful when starting OpenEJB from a new InitialContext([properties]) instantiation. By default it simply logs out the logged user if it exists. DESTROY means clean the container.</td></tr>
+<tr><td>javax.persistence.provider </td><td> string </td><td> override the JPA provider value</td></tr>
+<tr><td>javax.persistence.transactionType </td><td> string </td><td> override the transaction type for persistence contexts</td></tr>
+<tr><td>javax.persistence.jtaDataSource </td><td> string </td><td> override the JTA datasource value for persistence contexts</td></tr>
+<tr><td>javax.persistence.nonJtaDataSource </td><td> string </td><td> override the non JTA datasource value for persistence contexts</td></tr>
+<tr><td>openejb.descriptors.output </td><td>bool</td><td> dump memory deployment descriptors. Can be used to set complete metadata to true and avoid scanning when starting the container or to check the used configuration.</td></tr>
+<tr><td>openejb.deployments.classpath.require.descriptor </td><td> CLIENT or EJB </td><td> can allow to filter what you want to scan (client modules or ejb modules)</td></tr>
+<tr><td>openejb.descriptors.output.folder </td><td> path </td><td> where to dump deployement descriptors if activated. </td></tr>
+<tr><td>openejb.strict.interface.declaration </td><td> bool </td><td> add some validations on session beans (spec validations in particular). false by default.</td></tr>
+<tr><td>openejb.conf.file or openejb.configuration </td><td> string </td><td> OpenEJB configuration file path</td></tr>
+<tr><td>openejb.debuggable-vm-hackery </td><td> bool </td><td> remove JMS informations from deployment</td></tr>
+<tr><td>openejb.validation.skip </td><td> bool </td><td> skip the validations done when OpenEJB deploys beans</td></tr>
+<tr><td>openejb.deployments.classpath.ear </td><td> bool </td><td> deploy the classpath as an ear</td></tr>
+<tr><td>openejb.webservices.enabled </td><td> bool </td><td> activate or not webservices</td></tr>
+<tr><td>openejb.validation.output.level </td><td> TERSE or MEDIUM or VERBOSE </td><td> level of the logs used to report validation errors</td></tr>
+<tr><td>openejb.user.mbeans.list </td><td> * or a list of classes separated by , </td><td> list of mbeans to deploy automatically</td></tr>
+<tr><td>openejb.deploymentId.format </td><td> composition (+string) of {ejbName} {ejbType} {ejbClass} and {ejbClass.simpleName}  </td><td> default {ejbName}. The format to use to deploy ejbs.</td></tr>
+<tr><td>openejb.deployments.classpath </td><td> bool </td><td> whether or not deploy from classpath</td></tr>
+<tr><td>openejb.deployments.classpath.include and openejb.deployments.classpath.exclude </td><td> regex </td><td> regex to filter the scanned classpath (when you are in this case)</td></tr>
+<tr><td>openejb.deployments.package.include and openejb.deployments.package.exclude </td><td> regex </td><td> regex to filter scanned packages</td></tr>
+<tr><td>openejb.autocreate.jta-datasource-from-non-jta-one </td><td> bool </td><td> whether or not auto create the jta datasource if it doesn't exist but a non jta datasource exists. Useful when using hibernate to be able to get a real non jta datasource.</td></tr>
+<tr><td>openejb.altdd.prefix </td><td> string </td><td> prefix use for altDD (example test to use a test.ejb-jar.xml).</td></tr>
+<tr><td>org.apache.openejb.default.system.interceptors </td><td> list of interceptor (qualified names) separated by a comma or a space </td><td> add these interceptor on all beans</td></tr>
+<tr><td>openejb.jndiname.strategy.class </td><td> class name </td><td> an implementation of org.apache.openejb.assembler.classic.JndiBuilder.JndiNameStrategy</td></tr>
+<tr><td>openejb.jndiname.failoncollision </td><td> bool </td><td> if a NameAlreadyBoundException is thrown or not when 2 EJBs have the same name</td></tr>
+<tr><td>openejb.jndiname.format </td><td> composition (+string) of these properties: ejbType, ejbClass, ejbClass.simpleName, ejbClass.packageName, ejbName, deploymentId, interfaceType, interfaceType.annotationName, interfaceType.annotationNameLC, interfaceType.xmlName, interfaceType.xmlNameCc, interfaceType.openejbLegacyName, interfaceClass, interfaceClass.simpleName, interfaceClass.packageName </td><td> default {deploymentId}{interfaceType.annotationName}. Change the name used for the ejb.</td></tr>
+<tr><td>openejb.org.quartz.threadPool.class </td><td> class qualified name which implements org.quartz.spi.ThreadPool </td><td> the thread pool used by quartz (used to manage ejb timers)</td></tr>
+<tr><td>openejb.localcopy </td><td> bool </td><td> default true. whether or not copy EJB arguments[/method/interface] for remote invocations.</td></tr>
+<tr><td>openejb.cxf.jax-rs.providers </td><td> the list of the qualified name of the JAX-RS providers separated by comma or space. Note: to specify a provider for a specific service suffix its class qualified name by ".providers", the value follow the same rules. Note 2: default is a shortcut for jaxb and json providers.</td><td></td></tr>
+<tr><td>openejb.wsAddress.format </td><td> composition (+string) of {ejbJarId}, ejbDeploymentId, ejbType, ejbClass, ejbClass.simpleName, ejbName, portComponentName, wsdlPort, wsdlService </td><td> default /{ejbDeploymentId}. The WS name format.</td></tr>
+<tr><td>org.apache.openejb.server.webservices.saaj.provider </td><td> axis2, sun or null </td><td> specified the saaj configuration</td></tr>
+<tr><td>[&lt;uppercase service name&gt;.]&lt;service id&gt;.&lt;name&gt; or [&lt;uppercase service name&gt;.]&lt;service id&gt;</td><td> whatever is supported (generally string, int ...) </td><td> set this value to the corresponding service. example: [EnterpriseBean.]&lt;ejb-name&gt;.activation.&lt;property&gt;, [PERSISTENCEUNIT.]&lt;persistence unit name>.&lt;property&gt;, [RESOURCE.]&lt;name&gt;</td></tr>
+<tr><td> log4j.category.OpenEJB.options </td><td> DEBUG, INFO, ... </td><td> active one OpenEJB log level. need log4j in the classpath</td></tr>
+<tr><td> openejb.jmx.active </td><td> bool </td><td> activate (by default) or not the OpenEJB JMX MBeans </td></tr>
+<tr><td> openejb.nobanner </td><td> bool </td><td> activate or not the OpenEJB banner (activated by default)
+<tr><td> openejb.check.classloader </td><td> bool </td><td> if true print some information about duplicated classes </td><tr>
+<tr><td> openejb.check.classloader.verbose </td><td> bool </td><td> if true print classes intersections </td><tr> 
+<tr><td> openejb.additional.exclude </td><td> string separated by comma </td><td> list of prefixes you want to exclude and are not in the default list of exclusion</td></tr>
+<tr><td> openejb.additional.include </td><td> string separated by comma </td><td> list of prefixes you want to remove from thedefault list of exclusion</td></tr>
+<tr><td> openejb.offline </td><td> bool </td><td> if true can create datasources and containers automatically </td></tr>
+<tr><td> openejb.exclude-include.order </td><td> include-exclude or exclude-include </td><td> if the inclusion/exclusion should win on conflicts (intersection) </td><tr>
+<tr><td>openejb.log.color</td><td> bool </td><td> activate or not the color in the console in embedded mode </td></tr>
+<tr><td>openejb.log.color.&lt;level in lowercase&gt;</td><td> color in uppercase </td><td> set a color
+for a particular level. Color are BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, DEFAULT.  </td></tr>
+<tr><td>tomee.serialization.class.blacklist</td><td> string </td><td> default list of packages/classnames excluded for EJBd deserialization (needs to be set on server and client sides). Please see the description of <a href="http://tomee.apache.org/ejbd-transport.html">Ejbd Transport</a> for details.</td></tr>
+<tr><td>tomee.serialization.class.whitelist</td><td> string </td><td> default list of packages/classnames allowed for EJBd deserialization (blacklist wins over whitelist, needs to be set on server and client sides). Please see the description of <a href="http://tomee.apache.org/ejbd-transport.html">Ejbd Transport</a> for details.</td></tr>
+<tr><td>tomee.remote.support</td><td> boolean </td><td> if true /tomee webapp is auto-deployed and EJBd is active (true by default for 1.x, false for 7.x excepted for tomee maven plugin and arquillian)</td></tr>
+</table>
+
+Note: all resources can be configured by properties, see http://tomee.apache.org/embedded-configuration.html and http://tomee.apache.org/properties-tool.html
+
+
+# OpenEJB client
+<table>
+<tr><td><b>Name</b></td><td><b>Value</b></td><td><b>Description</b></td></tr>
+<tr><td>openejb.client.identityResolver </td><td> implementation of org.apache.openejb.client.IdentityResolver  </td><td> default org.apache.openejb.client.JaasIdentityResolver. The class to get the client identity.</td></tr>
+<tr><td>openejb.client.connection.pool.timeout or openejb.client.connectionpool.timeout </td><td> int (ms) </td><td> the timeout of the client</td></tr>
+<tr><td>openejb.client.connection.pool.size or openejb.client.connectionpool.size </td><td> int </td><td> size of the socket pool</td></tr>
+<tr><td>openejb.client.keepalive </td><td> int (ms) </td><td> the keepalive duration</td><tr>
+<tr><td>openejb.client.protocol.version </td><td> string </td><td> Optional legacy server protocol compatibility level. Allows 4.6.x clients to potentially communicate with older servers. OpenEJB 4.5.2 and older use version "3.1", and 4.6.x currently uses version "4.6" (Default). This does not allow old clients to communicate with new servers prior to 4.6.0</td><tr>
+</table>
+
+# TomEE specific system properties
+<table>
+<tr><td><b>Name</b></td><td><b>Value</b></td><td><b>Description</b></td></tr>
+<tr><td>openejb.crosscontext </td><td> bool </td><td> set the cross context property on tomcat context (can be done in the traditionnal way if the deployment is don through the webapp discovery and not the OpenEJB Deployer EJB)</td></tr>
+<tr><td>openejb.jsessionid-support </td><td> bool </td><td> remove URL from session tracking modes for this context (see javax.servlet.SessionTrackingMode)</td></tr>
+<tr><td>openejb.myfaces.disable-default-values </td><td> bool </td><td> by default TomEE will initialize myfaces with some its default values to avoid useless logging</td></tr>
+<tr><td>openejb.web.xml.major </td><td> int </td><td> major version of web.xml. Can be useful to force tomcat to scan servlet 3 annotatino when deploying with a servlet 2.x web.xml</td></tr>
+<tr><td>tomee.jaxws.subcontext </td><td> string </td><td> sub context used to bind jaxws web services, default is webservices</td></tr>
+<tr><td>openejb.servicemanager.enabled</td><td> bool </td><td> run all services detected or only known available services (WS and RS</td></tr>
+<tr><td>tomee.jaxws.oldsubcontext</td><td> bool </td><td> wether or not activate old way to bind jaxws webservices directly on root context</td><tr>
+<tr><td>openejb.modulename.useHash</td><td> bool </td><td> add a hash after the module name of the webmodule if it is generated from the webmodule location, it avoids conflicts between multiple deployment (through ear) of the same webapp. Note: it disactivated by default since names are less nice this way.</td><tr>
+<tr><td>openejb.session.manager</td><td> qualified name (string) </td><td> configure a session managaer to use for all contexts</td><tr>
+</table>
+
+# TomEE Arquillian adaptor
+<table>
+<tr><td><b>Name</b></td><td><b>Value</b></td><td><b>Description</b></td></tr>
+<tr><td>tomee.ejbcontainer.http.port </td><td> int </td><td> tomee port, -1 means random. When using a random port you can retreive it getting this property too.</td></tr>
+<tr><td>tomee.arquillian.http </td><td> int </td><td> http port used by the embedded arquillian adaptor</td></tr>
+<tr><td>tomee.arquillian.stop </td><td> int </td><td> shutdown port used by the embedded arquillian adaptor</td><tr>
+</table>

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/properties-tool.mdtext
----------------------------------------------------------------------
diff --git a/docs/properties-tool.mdtext b/docs/properties-tool.mdtext
new file mode 100644
index 0000000..6882d68
--- /dev/null
+++ b/docs/properties-tool.mdtext
@@ -0,0 +1,212 @@
+Title: Properties Tool
+<a name="PropertiesTool-PropertiesCommandlineTool"></a>
+# Properties Command line Tool
+
+To see all configurable properties in use by OpenEJB, using the following
+tool against a running server:
+
+> ./bin/openejb properties
+
+The output of this tool takes all overrideable components OpenEJB sees and
+outputs their properties along with the current value.	This allows you to
+easily see what is running in your system, what properties are available
+for overriding, and what exact values are for each component.  OpenEJB has
+a number of flags that can be passed to it not associated with any
+particular component, these are output as well.
+
+Content from this file can be safely copied as-is into the
+conf/system.properties file or sent to the users list with bug reports. 
+These properties may also be applied back into the openejb.xml file by
+pasting the properties without the "<id>." prefix into the respective
+component declarations.  The only warning is that any properties of type
+"<id>.password" will have their values masked, so make sure you edit them
+if you reapply them back into conf/openejb.xml or conf/system.properties.
+
+<a name="PropertiesTool-PropertyOverriding"></a>
+# Property Overriding
+
+Any component configured in OpenEJB via the openejb.xml (and some that
+aren't) can be overridden using system properties.  The format is:
+
+`<id>.<property-name>=<property-value>`
+
+And this can be done on the command line as follows:
+
+`./bin/openejb -D<id>.<property-name>=<property-value> ...`
+
+Or by adding the property to the conf/system.properties file.  Note that
+command line overrides win over overrides in the
+conf/system.properties file.
+
+In an embedded environment, the properties can be added to the Hashtable
+passed into the javax.naming.InitialContext when using the
+LocalInitialContextFactory or also to the System.getProperties() object
+before OpenEJB is embedded (which will be when the first InitialContext is
+created).
+
+At startup, OpenEJB will find the component with the given id and apply the
+new property value before constructing the individual component.
+
+<a name="PropertiesTool-Exampleoutput"></a>
+# Example output
+
+    # Container(id=Default CMP Container)
+    # className: org.apache.openejb.core.cmp.CmpContainer
+    #
+    Default\ CMP\ Container.CmpEngineFactory=org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory
+    Default\ CMP\ Container.Engine=instantdb
+    Default\ CMP\ Container.ConnectorName=Default JDBC Database
+
+    # Container(id=Default BMP Container)
+    # className: org.apache.openejb.core.entity.EntityContainer
+    #
+    Default\ BMP\ Container.PoolSize=10
+
+    # Container(id=Default Stateful Container)
+    # className: org.apache.openejb.core.stateful.StatefulContainer
+    #
+    Default\ Stateful\ Container.BulkPassivate=50
+    Default\ Stateful\ Container.Passivator=org.apache.openejb.core.stateful.SimplePassivater
+    Default\ Stateful\ Container.TimeOut=20
+    Default\ Stateful\ Container.PoolSize=500
+
+    # Container(id=Default Stateless Container)
+    # className: org.apache.openejb.core.stateless.StatelessContainer
+    #
+    Default\ Stateless\ Container.PoolSize=10
+    Default\ Stateless\ Container.StrictPooling=true
+    Default\ Stateless\ Container.TimeOut=0
+
+    # Container(id=Default MDB Container)
+    # className: org.apache.openejb.core.mdb.MdbContainer
+    #
+    Default\ MDB\ Container.ResourceAdapter=Default JMS Resource Adapter
+    Default\ MDB\ Container.InstanceLimit=10
+    Default\ MDB\ Container.MessageListenerInterface=javax.jms.MessageListener
+    Default\ MDB\ Container.ActivationSpecClass=org.apache.activemq.ra.ActiveMQActivationSpec
+
+    # ConnectionManager(id=Default Local TX ConnectionManager)
+    # className: org.apache.openejb.resource.SharedLocalConnectionManager
+    #
+
+    # Resource(id=Default JMS Resource Adapter)
+    # className: org.apache.activemq.ra.ActiveMQResourceAdapter
+    #
+    Default\ JMS\ Resource\ Adapter.ServerUrl=vm\://localhost?async\=true
+    Default\ JMS\ Resource\ Adapter.BrokerXmlConfig=broker\:(tcp\://localhost\:61616)
+    Default\ JMS\ Resource\ Adapter.ThreadPoolSize=30
+
+    # Resource(id=Default JDBC Database)
+    # className: org.apache.openejb.resource.jdbc.BasicManagedDataSource
+    #
+    Default\ JDBC\ Database.MinIdle=0
+    Default\ JDBC\ Database.Password=xxxx
+    Default\ JDBC\ Database.JdbcUrl=jdbc\:hsqldb\:file\:hsqldb
+    Default\ JDBC\ Database.MaxIdle=20
+    Default\ JDBC\ Database.ConnectionProperties=
+    Default\ JDBC\ Database.MaxWait=-1
+    Default\ JDBC\ Database.TimeBetweenEvictionRunsMillis=-1
+    Default\ JDBC\ Database.MaxActive=20
+    Default\ JDBC\ Database.DefaultAutoCommit=true
+    Default\ JDBC\ Database.AccessToUnderlyingConnectionAllowed=false
+    Default\ JDBC\ Database.JdbcDriver=org.hsqldb.jdbcDriver
+    Default\ JDBC\ Database.TestWhileIdle=false
+    Default\ JDBC\ Database.UserName=sa
+    Default\ JDBC\ Database.MaxOpenPreparedStatements=0
+    Default\ JDBC\ Database.TestOnBorrow=true
+    Default\ JDBC\ Database.PoolPreparedStatements=false
+    Default\ JDBC\ Database.ConnectionInterface=javax.sql.DataSource
+    Default\ JDBC\ Database.TestOnReturn=false
+    Default\ JDBC\ Database.MinEvictableIdleTimeMillis=1800000
+    Default\ JDBC\ Database.NumTestsPerEvictionRun=3
+    Default\ JDBC\ Database.InitialSize=0
+
+    # Resource(id=Default Unmanaged JDBC Database)
+    # className: org.apache.openejb.resource.jdbc.BasicDataSource
+    #
+    Default\ Unmanaged\ JDBC\ Database.MaxWait=-1
+    Default\ Unmanaged\ JDBC\ Database.InitialSize=0
+    Default\ Unmanaged\ JDBC\ Database.DefaultAutoCommit=true
+    Default\ Unmanaged\ JDBC\ Database.ConnectionProperties=
+    Default\ Unmanaged\ JDBC\ Database.MaxActive=10
+    Default\ Unmanaged\ JDBC\ Database.TestOnBorrow=true
+    Default\ Unmanaged\ JDBC\ Database.JdbcUrl=jdbc\:hsqldb\:file\:hsqldb
+    Default\ Unmanaged\ JDBC\ Database.TestOnReturn=false
+    Default\ Unmanaged\ JDBC\ Database.AccessToUnderlyingConnectionAllowed=false
+    Default\ Unmanaged\ JDBC\ Database.Password=xxxx
+    Default\ Unmanaged\ JDBC\ Database.MinEvictableIdleTimeMillis=1800000
+    Default\ Unmanaged\ JDBC\ Database.PoolPreparedStatements=false
+    Default\ Unmanaged\ JDBC\ Database.MaxOpenPreparedStatements=0
+    Default\ Unmanaged\ JDBC\ Database.ConnectionInterface=javax.sql.DataSource
+    Default\ Unmanaged\ JDBC\ Database.MinIdle=0
+    Default\ Unmanaged\ JDBC\ Database.NumTestsPerEvictionRun=3
+    Default\ Unmanaged\ JDBC\ Database.TimeBetweenEvictionRunsMillis=-1
+    Default\ Unmanaged\ JDBC\ Database.JdbcDriver=org.hsqldb.jdbcDriver
+    Default\ Unmanaged\ JDBC\ Database.UserName=sa
+    Default\ Unmanaged\ JDBC\ Database.MaxIdle=10
+    Default\ Unmanaged\ JDBC\ Database.TestWhileIdle=false
+
+    # Resource(id=Default JMS Connection Factory)
+    # className: org.apache.activemq.ra.ActiveMQManagedConnectionFactory
+    #
+    Default\ JMS\ Connection\ Factory.ConnectionInterface=javax.jms.ConnectionFactory, \
+    javax.jms.QueueConnectionFactory, javax.jms.TopicConnectionFactory
+    Default\ JMS\ Connection\ Factory.ResourceAdapter=Default JMS Resource Adapter
+
+    # SecurityService(id=Default Security Service)
+    # className: org.apache.openejb.core.security.SecurityServiceImpl
+    #
+
+    # TransactionManager(id=Default Transaction Manager)
+    # className: org.apache.geronimo.transaction.manager.GeronimoTransactionManager
+    #
+
+    # ServerService(id=httpejbd)
+    # className: org.apache.openejb.server.httpd.HttpEjbServer
+    #
+    httpejbd.port=4204
+    httpejbd.name=httpejbd
+    httpejbd.disabled=false
+    httpejbd.server=org.apache.openejb.server.httpd.HttpEjbServer
+    httpejbd.threads=200
+    httpejbd.bind=127.0.0.1
+
+    # ServerService(id=telnet)
+    # className: org.apache.openejb.server.telnet.TelnetServer
+    #
+    telnet.port=4202
+    telnet.name=telnet
+    telnet.disabled=false
+    telnet.bind=127.0.0.1
+    telnet.threads=5
+    telnet.server=org.apache.openejb.server.telnet.TelnetServer
+
+    # ServerService(id=ejbd)
+    # className: org.apache.openejb.server.ejbd.EjbServer
+    #
+    ejbd.disabled=false
+    ejbd.bind=127.0.0.1
+    ejbd.server=org.apache.openejb.server.ejbd.EjbServer
+    ejbd.port=4201
+    ejbd.name=ejbd
+    ejbd.threads=200
+
+    # ServerService(id=hsql)
+    # className: org.apache.openejb.server.hsql.HsqlService
+    #
+    hsql.port=9001
+    hsql.name=hsql
+    hsql.disabled=false
+    hsql.server=org.apache.openejb.server.hsql.HsqlService
+    hsql.bind=127.0.0.1
+
+    # ServerService(id=admin)
+    # className: org.apache.openejb.server.admin.AdminDaemon
+    #
+    admin.disabled=false
+    admin.bind=127.0.0.1
+    admin.only_from=localhost
+    admin.port=4200
+    admin.threads=1
+    admin.name=admin
+    admin.server=org.apache.openejb.server.admin.AdminDaemon

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/property-overriding.mdtext
----------------------------------------------------------------------
diff --git a/docs/property-overriding.mdtext b/docs/property-overriding.mdtext
new file mode 100644
index 0000000..ddddb64
--- /dev/null
+++ b/docs/property-overriding.mdtext
@@ -0,0 +1,62 @@
+Title: Property Overriding
+OpenEJB consists of several components (containers, resource adapters,
+security services, etc.) all of which are pluggable and have their own
+unique set of configurable properties.	These components are required to
+specify their default property values in their service-jar.xml file.  This
+means that at a minimum you as a user only need to specify what you'd like
+to be different.  You specify the property name and the new value and the
+default value will be overwritten before the component is created.
+
+We call this overriding and there are several ways to do it.
+
+<a name="PropertyOverriding-Theopenejb.xml"></a>
+#  The openejb.xml
+
+The default openejb.xml file has most of the useful properties for each
+component explicitly listed with default values for documentation purposes.
+ It is safe to delete them and be assured that no behavior will change if a
+smaller config file is desired.
+
+
+Overriding can also be done via the command line or plain Java system
+properties.  See [System Properties](system-properties.html)
+ for details.
+
+<a name="PropertyOverriding-Whatpropertiesareavailable?"></a>
+## What properties are available?
+    
+To know what properties can be overriden the './bin/openejb properties'
+command is very useful: see [Properties Tool](properties-tool.html)
+    
+It's function is to connect to a running server and print a canonical list
+of all properties OpenEJB can see via the various means of configuration. 
+When sending requests for help to the users list or jira, it is highly
+encouraged to send the output of this tool with your message.
+
+<a name="PropertyOverriding-Notconfigurableviaopenejb.xml"></a>
+## Not configurable via openejb.xml
+    
+The only thing not yet configurable via this file are ServerServices due to
+OpenEJB's embeddable nature and resulting long standing tradition of
+keeping the container system separate from the server layer.  This may
+change someday, but untill then ServerServices are configurable via
+conf/<service-id>.properties files such as conf/ejbd.properties to
+configure the main protocol that services EJB client requests.
+
+The format those properties files is greatly adapted from the xinet.d style
+of configuration and even shares similar functionality and properties such
+as host-based authorization (HBA) via the 'only_from' property.
+
+<a name="PropertyOverriding-Restoringopenejb.xmltothedefaults"></a>
+## Restoring openejb.xml to the defaults
+
+To restore this file to its original default state, you can simply delete
+it or rename it and OpenEJB will see it's missing and unpack another
+openejb.xml into the conf/ directory when it starts.
+
+This is not only handy for recovering from a non-functional config, but
+also for upgrading as OpenEJB will not overwrite your existing
+configuration file should you choose to unpack an new distro over the top
+of an old one -- this style of upgrade is safe provided you move your old
+lib/ directory first.
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/provisioning.mdtext
----------------------------------------------------------------------
diff --git a/docs/provisioning.mdtext b/docs/provisioning.mdtext
new file mode 100644
index 0000000..e99fe91
--- /dev/null
+++ b/docs/provisioning.mdtext
@@ -0,0 +1,76 @@
+Title: TomEE/OpenEJB provisioning
+
+# Summary
+
+Provioning is about the way to get binaries or information. It is the answer to
+how do i get my application, my webapp, my configuration.
+
+TomEE and OpenEJB brings some help about it allowing you to point out some
+resources instead of providing it directly.
+
+This indirection is clearly very useful to industrialize your software
+or simply to cloudify it.
+
+# A word about this page
+
+This page will not explain you how to deploy an application or
+how to enhance your container. It will simply explain you how which
+kind of urls are supported for such features.
+
+These feature are explained in other places.
+
+# Supported provionings
+## file
+
+This is the default and well know provisioning. Simply give a
+file path the container is able to access through its filesystem.
+
+Example:
+
+    /MIDDLE/foo/bar/my-local-file.jar
+
+## Http/https
+
+Here you give an url to access the desired file. Proxies used are the JVM ones.
+
+Example:
+
+    http://atos.net/foo/bar/my-http-file.jar 
+
+## Maven
+### Usage
+
+Probably the most fun but very useful for cloud deployments: maven.
+Use maven informations to deploy your application.
+
+The location should follow:
+
+    mvn:groupId/artifactId[/[version]/[type]]
+
+or
+
+    mvn:groupId:artifactId[:[version]:[type]]
+
+Note: classifier are supported (through version field)
+
+For instance you can use:
+
+    mvn:net.atos.xa/my-application/1.0.0/war
+
+### Installation
+
+The maven url parsing is not included by default in OpenEJB/TomEE bundle. It needs to be installed.
+
+If you are using an embedded application and maven simply add
+org.apache.openejb:openejb-provisionning:VERSION dependency.
+
+If you are using TomEE you have to extract the org.apache.openejb:openejb-provisionning zip 
+in the same classloader than tomee (webapps/tomee/lib for instance, for other places please have
+a look to other tip pages).
+
+Another way to install it with tomee is to edit or create the file <tomee>/conf/provisioning.properties
+and add the line:
+
+    zip=http://repo1.maven.org/maven2/org/apache/openejb/openejb-provisionning/<version>/openejb-provisionning-<version>.zip
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/proxyfactory-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/proxyfactory-config.mdtext b/docs/proxyfactory-config.mdtext
new file mode 100644
index 0000000..e73d983
--- /dev/null
+++ b/docs/proxyfactory-config.mdtext
@@ -0,0 +1,24 @@
+Title: ProxyFactory Configuration
+
+
+A ProxyFactory can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <ProxyFactory id="myProxyFactory" type="ProxyFactory">
+    </ProxyFactory>
+
+Alternatively, a ProxyFactory can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    myProxyFactory = new://ProxyFactory?type=ProxyFactory
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared ProxyFactory a warning will be logged.  If a ProxyFactory is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple ProxyFactory declarations are allowed.
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+</table>
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/queue-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/queue-config.mdtext b/docs/queue-config.mdtext
new file mode 100644
index 0000000..ca8b354
--- /dev/null
+++ b/docs/queue-config.mdtext
@@ -0,0 +1,34 @@
+Title: Queue Configuration
+
+
+A Queue can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <Resource id="myQueue" type="javax.jms.Queue">
+        destination = 
+    </Resource>
+
+Alternatively, a Queue can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    myQueue = new://Resource?type=javax.jms.Queue
+    myQueue.destination = 
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared Queue a warning will be logged.  If a Queue is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple Queue declarations are allowed.
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+<tr>
+  <td>destination</td>
+  <td>String</td>
+  <td></td>
+  <td>
+Specifies the name of the queue
+</td>
+</tr>
+</table>
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/quickstart.mdtext
----------------------------------------------------------------------
diff --git a/docs/quickstart.mdtext b/docs/quickstart.mdtext
new file mode 100644
index 0000000..6c67f8f
--- /dev/null
+++ b/docs/quickstart.mdtext
@@ -0,0 +1,67 @@
+Title: Quickstart
+<a name="Quickstart-Installation"></a>
+# Installation
+
+
+To install OpenEJB, simply [download the latest binary](downloads.html)
+ and unpack your zip or tar.gz into the directory where you want OpenEJB to
+live.
+
+Windows users can download the zip and unpack it with the WinZip program.
+
+Linux users can download the tar.gz and unpack it with the following
+command:
+
+*tar xzvf openejb-3.0.tar.gz*
+
+
+Congratulations, you've installed OpenEJB.
+
+If you've unpacked OpenEJB into the directory C:\openejb-3.0, for example,
+then this directory is your OPENEJB_HOME directory. The OPENEJB_HOME
+directory is referred to in various parts of the documentation, so it's
+good to remember where it is.
+
+<a name="Quickstart-UsingOpenEJB"></a>
+# Using OpenEJB
+
+
+Now all you need to do is move to the bin directory in OPENEJB_HOME, the
+directory where OpenEJB was unpacked, and type:
+
+*openejb*
+
+For Windows users, that looks like this:
+
+*C:\openejb-3.0> bin\openejb*
+
+For UNIX/Linux/Mac OS X users, that looks like this:
+
+`[user@host openejb-3.0](user@host-openejb-3.0.html)
+# ./bin/openejb`
+
+You really only need to know two commands to use OpenEJB, [deploy](openejbx30:deploy-tool.html)
+ and [start|OPENEJBx30:Startup]
+. Both are completely documented and have examples.
+
+For help information and command options, try this:
+
+> openejb deploy --help
+> openejb start --help
+
+For examples on using the start command and options, try this:
+
+> openejb start --examples
+
+That's it!
+
+If you don't have any EJBs or clients to run, try the ubiquitous [Hello World](openejbx30:hello-world.html)
+ example.
+
+<a name="Quickstart-Jointhemailinglist"></a>
+# Join the mailing list
+
+The OpenEJB User list is where the general OpenEJB community goes to ask
+questions, make suggestions, chat with other users, and keep a finger on
+the pulse of the project. More information about the user list and dev list
+can be found [here](mailing-lists.html)

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/refcard/.DS_Store
----------------------------------------------------------------------
diff --git a/docs/refcard/.DS_Store b/docs/refcard/.DS_Store
new file mode 100644
index 0000000..c0893ad
Binary files /dev/null and b/docs/refcard/.DS_Store differ


[17/20] tomee git commit: Docs old and new

Posted by db...@apache.org.
http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/application-resources.mdtext
----------------------------------------------------------------------
diff --git a/docs/application-resources.mdtext b/docs/application-resources.mdtext
new file mode 100644
index 0000000..2c66a34
--- /dev/null
+++ b/docs/application-resources.mdtext
@@ -0,0 +1,247 @@
+Title: Application Resources
+<a name="ApplicationResources"></a>
+
+# Resources
+
+TomEE provides a simple but powerful way to define resources that can be injected into managed components inside your application, or looked up via JNDI. To use a resource, it needs to be defined in the `tomee.xml` configuration file, a `resources.xml` file within an application, or as a system property. Defining a resource in `tomee.xml` will make it available server-wide, whereas defining the resource within a `resources.xml` file makes it available to a specific application.
+
+As a simple example, a JMS queue can be defined within `tomee.xml` with the following configuration.
+
+    <tomee>
+        <Resource id="MyQueue" type="javax.jms.Queue"/>
+    </tomee>
+
+Once the resource has been defined, the server will create an instance of the resource during startup, and it will be available to be injected into managed components using the `@Resource` annotation, as shown below. The `name` attribute on the `@Resource` annotation should match the `id` attribute on the `Resource` tag.
+
+    public class JmsClient {
+	
+	    @Resource(name="MyQueue")
+	    private Queue queue;
+	
+		public void sendMessage() {
+			// implementation here...
+		}
+	
+	}
+	
+As an alternative to defining a resource in XML, resources can also be defined using system properties:
+
+    MyQueue = new://Resource?type=javax.jms.Queue
+	
+Resources, or attributes for resources specified using system properties will override definitions specified in `tomee.xml`.
+Server-wide resources can be looked up in JNDI under the following name: openejb:Resources/resource id.
+
+# Defining Resources
+<a name="DefiningResources"></a>
+
+The `<Resource>` tag has a number of attributes, and a resource may also have a number of fields that can be configured by adding properties to the body of the `Resource` tag.
+
+For example, a DataSource resource needs a JDBC driver, URL, username and password to be able to connect to a database. That would be configured with the following syntax. Notice the key/value pair syntax for the properties within the `<Resource>` tag.
+
+    <Resource id="DB" type="DataSource">
+      JdbcDriver  com.mysql.jdbc.Driver
+      JdbcUrl     jdbc:mysql://localhost/test
+      UserName    test
+	  Password    password
+    </Resource>
+	
+Specifying the key/value pairs specific to a Resource can also be done when defining the resource via system properties. This is done be specifying an additional property for each key/value pair, using the resource ID as a prefix: `<resourceId>.<propertyName>=<value>`. The system properties equivalent of the resource above is:
+
+    p.setProperty("DB", "new://Resource?type=DataSource");
+	p.setProperty("DB.JdbcDriver", "com.mysql.jdbc.Driver");
+	p.setProperty("DB,JdbcUrl", "jdbc:mysql://localhost/test");
+	p.setProperty("DB.UserName", "test");
+	p.setProperty("DB.Password", "password");
+	
+The `<Resource>` tag has a number of attributes which control the way that the resource get created.
+
+* type
+
+A type that TomEE knows. The type is associated with a provider that knows how to create that type, and also any default properties that the resource should have if they are not specified in the resource definition. See <a href="https://github.com/apache/tomee/blob/tomee-1.7.x/tomee/tomee-webapp/src/main/resources/META-INF/org.apache.tomee/service-jar.xml">service-jar.xml</a> for an example set of service providers that come with TomEE.
+
+* provider
+
+Explicitly specifies a provider to create the resource, using defaults for any properties not specified.
+
+* class-name
+
+The fully qualified class that creates the resource. This might the resource class itself, which is created by calling the constructor, or a factory class that provides a specific factory method to create the resource.
+
+* factory-name
+
+The name of the method to call to create the resource. If this is not specified, the constructor for the class specified by class-name will be used.
+
+* constructor
+
+Specifies a comma separated list of constructor arguments. These can be other services, or attributes on the resource itself.
+	
+# Custom resources
+
+TomEE allows you to define resources using your own Java classes, and these can also be injected into managed components in the same way as known resource types are.
+
+So the following simple resource
+
+    public class Configuration {
+	
+		private String url;
+		private String username;
+		private int poolSize;
+
+		// getters and setters
+	}
+
+Can be defined in `tomee.xml` using the following configuration (note the `class-name` attribute):
+
+    <Resource id="config" class-name="org.superbiz.Configuration">
+	    url http://localhost
+		username tomee
+		poolSize 20
+	</Resource>
+	
+This resource must be available in TomEE's system classpath - i.e. it must be defined in a .jar within the `lib/` directory.
+
+# Field and properties
+
+As shown above, a resource class can define a number of fields, and TomEE will attempt to apply the values from the resource definition onto those fields.
+
+As an alternative to this, you can also add a properties field as shown below, and this will have any used properties from the resource configuration set added to it. So as an alternative to the above code, you could do:
+
+    public class Configuration {
+	
+	    private Properties properties;
+		
+		public Properties getProperties() {
+		    return properties;
+		}
+		
+		public void setProperties(final Properties properties) {
+		    this.properties = properties;
+		}
+	
+	}
+
+Using the same resource definition:
+
+    <Resource id="config" class-name="org.superbiz.Configuration">
+	    url http://localhost
+		username tomee
+		poolSize 20
+	</Resource>
+
+the url, username and poolSize values will now be available in the properties field, so for example, the username property could be accessed via properties.getProperty("username");
+
+# Application resources
+
+Resources can also be defined within an application, and optionally use classes from the application's classpath. To define resources in a .war file, include a `WEB-INF/resources.xml`. For an ejb-jar module, use `META-INF/resources.xml`.
+
+The format of `resources.xml` uses the same `<Resource>` tag as `tomee.xml`. One key difference is the root element of the XML is `<resources>` and not `<tomee>`.
+
+    <resources>
+	    <Resource id="config" class-name="org.superbiz.Configuration">
+		    url http://localhost
+			username tomee
+			poolSize 20
+		</Resource>
+    </resources>
+	
+This mechanism allows you to package your custom resources within your application, alongside your application code, rather than requiring a .jar file in the `lib/` directory.
+
+Application resources are bound in JNDI under openejb:Resource/appname/resource id.
+
+# Additional resource properties
+
+Resources are typically discovered, created, and bound to JNDI very early on in the deployment process, as other components depend on them. This may lead to problems where the final classpath for the application has not yet been determined, and therefore TomEE is unable to load your custom resource. 
+
+The following properties can be used to change this behavior.
+
+* Lazy
+
+This is a boolean value, which when true, creates a proxy that defers the actual instantiation of the resource until the first time it is looked up from JNDI. This can be useful if the resource's classpath until the application is started (see below), or to improve startup time by not fully initializing resources that might not be used.
+
+* UseAppClassLoader 
+
+This boolean value forces a lazily instantiated resource to use the application classloader, instead of the classloader available when the resources were first processed.
+
+* InitializeAfterDeployment
+
+This boolean setting forces a resource created with the Lazy property to be instantiated once the application has started, as opposed to waiting for it to be looked up. Use this flag if you require the resource to be loaded, irrespective of whether it is injected into a managed component or manually looked up.
+
+By default, all of these settings are `false`, unless TomEE encounters a custom application resource that cannot be instantiated until the application has started. In this case, it will set these three flags to `true`, unless the `Lazy` flag has been explicitly set.
+
+# Initializing resources
+
+## constructor
+
+By default, if no factory-name attribute and no constructor attribute is specified on the `Resource`, TomEE will instantiate the resource using its no-arg constructor. If you wish to pass constructor arguments, specify the arguments as a comma separated list:
+
+    <Resource id="config" class-name="org.superbiz.Configuration" constructor="id, poolSize">
+	    url http://localhost
+		username tomee
+		poolSize 20
+	</Resource>
+
+## factory-name method
+
+In some circumstances, it may be desirable to add some additional logic to the creation process, or to use a factory pattern to create resources. TomEE also provides this facility via the `factory-name` method. The `factory-name` attribute on the resource can reference any no argument method that returns an object on the class specified in the `class-name` attribute.
+
+For example:
+
+    public class Factory {
+	
+	    private Properties properties;
+	
+	    public Object create() {
+		
+		     MyResource resource = new MyResource();
+			 // some custom logic here, maybe using this.properties
+			 
+			 return resource;
+		}
+		
+		public Properties getProperties() {
+		    return properties;
+		}
+		
+		public void setProperties(final Properties properties) {
+		    this.properties = properties;
+		}
+	
+	}
+
+    <resources>
+        <Resource id="MyResource" class-name="org.superbiz.Factory" factory-name="create">
+		    UserName tomee
+		</Resource>
+    </resources>
+
+## @PostConstruct / @PreDestroy
+
+As an alternative to using a factory method or a constructor, you can use @PostConstruct and @PreDestroy methods within your resource class (note that you cannot use this within a different factory class) to manage any additional creation or cleanup activities. TomEE will automatically call these methods when the application is started and destroyed. Using @PostConstruct will effectively force a lazily loaded resource to be instantiated when the application is starting - in the same way that the `InitializeAfterDeployment` property does.
+
+    public class MyClass {
+	
+	    private Properties properties;
+		
+		public Properties getProperties() {
+		    return properties;
+		}
+		
+		public void setProperties(final Properties properties) {
+		    this.properties = properties;
+		}
+		
+		@PostConstruct
+		    public void postConstruct() throws MBeanRegistrationException {
+		        // some custom initialization
+			}
+		}
+	
+	}
+
+# Examples
+
+The following examples demonstrate including custom resources within your application:
+
+* resources-jmx-example
+* resources-declared-in-webapp
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/arquillian-available-adapters.mdtext
----------------------------------------------------------------------
diff --git a/docs/arquillian-available-adapters.mdtext b/docs/arquillian-available-adapters.mdtext
new file mode 100644
index 0000000..c50e3b1
--- /dev/null
+++ b/docs/arquillian-available-adapters.mdtext
@@ -0,0 +1,262 @@
+Title: TomEE and Arquillian
+
+Check out the [Getting started](arquillian-getting-started.html) page if you are not at all familiar with Arquillian.
+
+All the Arquillian Adapters for TomEE support the following configuration options in the **src/test/resources/arquillian.xml**:
+
+    <container qualifier="tomee" default="true">
+        <configuration>
+            <property name="httpPort">-1</property>
+            <property name="stopPort">-1</property>
+            <!--Optional Container Properties-->
+            <property name="properties">
+                aproperty=something
+            </property>
+            <!--Optional Remote Adapter Deployer Properties
+            <property name="deployerProperties">
+                aproperty=something
+            </property>
+            -->
+        </configuration>
+    </container>
+
+The above can also be set as system properties rather than via the **src/test/resources/arquillian.xml** file.
+
+    <build>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-surefire-plugin</artifactId>
+          <configuration>
+            <systemPropertyVariables>
+              <tomee.httpPort>-1</tomee.httpPort>
+              <tomee.stopPort>-1</tomee.stopPort>
+            </systemPropertyVariables>
+          </configuration>
+        </plugin>
+      </plugins>
+    </build>
+
+When a port is set to -1, a random port will be chosen.  This is key to avoiding port conflicts on CI systems or for just plain clean testing.
+
+The TomEE Arquillian adapters will export the actual port chosen back as a system property using the same name.  The test case can use the property to retrieve the port and contact the server.
+
+    URL url = new URL("http://localhost:" + System.getProperty("tomee.httpPort");
+    // use the URL to connect to the server
+	
+If that property returns null	
+
+When you are actually using a test on the client side, you can use instead
+
+	import org.jboss.arquillian.test.api.ArquillianResource;
+	...
+	@ArquillianResource private URL url;
+
+The URL will get injected by Arquillian. Be careful, that injection only works if your are on the client side (it does not make sense in the server side). So, if for a specific need to need it, just use the system property.
+
+# TomEE Embedded Adapter
+
+The TomEE Embedded Adapter will boot TomEE right inside the test case itself resulting in one JVM running both the application and the test case. This is generally much faster than the TomEE Remote Adapter and great for development.  That said, it is strongly recommended to also run all tests in a Continuous Integration system using the TomEE Remote Adapter.
+
+To use the TomEE Embedded Arquillian Adapter, simply add these Maven dependencies to your Maven pom.xml:
+
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>arquillian-tomee-embedded</artifactId>
+      <version>1.7.1</version> <!--Current version-->
+    </dependency>
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>tomee-embedded</artifactId>
+      <version>1.7.1</version>
+    </dependency>
+    <!--Required for WebServices and RESTful WebServices-->
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>tomee-webservices</artifactId>
+      <version>1.7.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>tomee-jaxrs</artifactId>
+      <version>1.7.1</version>
+    </dependency>
+
+As mentioned above the Embedded Adapter has the following properties which can be specified in the **src/test/resources/arquillian.xml** file:
+
+ - `httpPort`
+ - `stopPort`
+ - `properties` (System properties for container)
+
+Or alternatively as System properties, possibly shared with other TomEE Arquillian Adapters:
+
+ - `tomee.httpPort`
+ - `tomee.stopPort`
+
+Or more specifically as a System properties only applicable to the Embedded Adapter:
+
+ - `tomee.embedded.httpPort`
+ - `tomee.embedded.stopPort`
+
+
+# TomEE Remote Adapter
+
+The TomEE Remote Adapter will unzip and setup a TomEE or TomEE Plus distribution.  Once setup, the server will execute in a separate process.  This will be slower, but with the added benefit it is 100% match with the production system environment.
+
+On a local machine clients can get the remote server port using the following System property:
+
+	final String port = System.getProperty("server.http.port");
+
+The following shows a typical configuration for testing against TomEE (webprofile version).  The same can be done against TomEE+ by changing `<tomee.classifier>webprofile</tomee.classifier>` to `<tomee.classifier>plus</tomee.classifier>`
+
+    <properties>
+      <tomee.version>1.7.1</tomee.version>
+      <tomee.classifier>webprofile</tomee.classifier>
+    </properties>
+    <build>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-surefire-plugin</artifactId>
+          <configuration>
+            <systemPropertyVariables>
+              <tomee.classifier>${tomee.classifier}</tomee.classifier>
+              <tomee.version>${tomee.version}</tomee.version>
+            </systemPropertyVariables>
+          </configuration>
+        </plugin>
+      </plugins>
+    </build>
+    <dependencies>
+      <dependency>
+        <groupId>org.apache.openejb</groupId>
+        <artifactId>arquillian-tomee-remote</artifactId>
+        <version>${tomee.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.openejb</groupId>
+        <artifactId>apache-tomee</artifactId>
+        <version>${tomee.version}</version>
+        <classifier>${tomee.classifier}</classifier>
+        <type>zip</type>
+      </dependency>
+    </dependencies>
+
+The Remote Adapter has the following properties which can be specified in the **src/test/resources/arquillian.xml** file:
+
+ - `httpPort`
+ - `stopPort`
+ - `version`
+ - `classifier` (Must be either `webprofile` or  `plus`)
+ - `properties` (System properties for container)
+ - `deployerProperties` (Sent to Deployer)
+
+Or alternatively as System properties, possibly shared with other TomEE Arquillian Adapters:
+
+ - `tomee.httpPort`
+ - `tomee.stopPort`
+ - `tomee.version`
+ - `tomee.classifier`
+
+Or more specifically as a System properties only applicable to the Remote Adapter:
+
+ - `tomee.remote.httpPort`
+ - `tomee.remote.stopPort`
+ - `tomee.remote.version`
+ - `tomee.remote.classifier`
+
+# Maven Profiles
+
+Setting up both adapters is quite easy via Maven profiles.  Here the default adapter is the Embedded Adapter, the Remote Adapter will run with `-Ptomee-webprofile-remote` specified as a `mvn` command argument.
+
+    <profiles>
+
+      <profile>
+        <id>tomee-embedded</id>
+        <activation>
+          <activeByDefault>true</activeByDefault>
+        </activation>
+        <dependencies>
+          <dependency>
+            <groupId>org.apache.openejb</groupId>
+            <artifactId>arquillian-tomee-embedded</artifactId>
+            <version>1.0.0</version>
+          </dependency>
+        </dependencies>
+      </profile>
+
+      <profile>
+        <id>tomee-webprofile-remote</id>
+        <properties>
+          <tomee.version>1.0.0</tomee.version>
+          <tomee.classifier>webprofile</tomee.classifier>
+        </properties>
+        <build>
+          <plugins>
+            <plugin>
+              <groupId>org.apache.maven.plugins</groupId>
+              <artifactId>maven-surefire-plugin</artifactId>
+              <configuration>
+                <systemPropertyVariables>
+                  <tomee.classifier>${tomee.classifier}</tomee.classifier>
+                  <tomee.version>${tomee.version}</tomee.version>
+                </systemPropertyVariables>
+              </configuration>
+            </plugin>
+          </plugins>
+        </build>
+        <dependencies>
+          <dependency>
+            <groupId>org.apache.openejb</groupId>
+            <artifactId>arquillian-tomee-remote</artifactId>
+            <version>${tomee.version}</version>
+          </dependency>
+          <dependency>
+            <groupId>org.apache.openejb</groupId>
+            <artifactId>apache-tomee</artifactId>
+            <version>${tomee.version}</version>
+            <classifier>${tomee.classifier}</classifier>
+            <type>zip</type>
+          </dependency>
+        </dependencies>
+      </profile>
+
+      <profile>
+        <id>tomee-plus-remote</id>
+        <properties>
+          <tomee.version>1.0.0</tomee.version>
+          <tomee.classifier>plus</tomee.classifier>
+        </properties>
+        <build>
+          <plugins>
+            <plugin>
+              <groupId>org.apache.maven.plugins</groupId>
+              <artifactId>maven-surefire-plugin</artifactId>
+              <configuration>
+                <systemPropertyVariables>
+                  <tomee.classifier>${tomee.classifier}</tomee.classifier>
+                  <tomee.version>${tomee.version}</tomee.version>
+                </systemPropertyVariables>
+              </configuration>
+            </plugin>
+          </plugins>
+        </build>
+        <dependencies>
+          <dependency>
+            <groupId>org.apache.openejb</groupId>
+            <artifactId>arquillian-tomee-remote</artifactId>
+            <version>${tomee.version}</version>
+          </dependency>
+          <dependency>
+            <groupId>org.apache.openejb</groupId>
+            <artifactId>apache-tomee</artifactId>
+            <version>${tomee.version}</version>
+            <classifier>${tomee.classifier}</classifier>
+            <type>zip</type>
+          </dependency>
+        </dependencies>
+      </profile>
+
+    </profiles>
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/arquillian-getting-started.mdtext
----------------------------------------------------------------------
diff --git a/docs/arquillian-getting-started.mdtext b/docs/arquillian-getting-started.mdtext
new file mode 100644
index 0000000..744c82f
--- /dev/null
+++ b/docs/arquillian-getting-started.mdtext
@@ -0,0 +1,20 @@
+Title: Getting started with Arquillian and TomEE
+
+Arquillian is a testing framework on top of JUnit (or TestNG if you prefer). It makes it easier to do integration tests in a managed environment (JEE environment here after).
+
+We provide an embedded and remote adapter, see [the available adapters](arquillian-available-adapters.html) for more details.
+
+In a managed environment it is usually quite difficult to perform unit tests, due to the fact that most of the time you have to mock almost the entire environment. It is very time consuming and requires complicated integration tests that must reflect the production environment as best as possible. Unit tests lose their true value.
+
+JEE always got seen as an heavy technology, impossible to test and to use in development. OpenEJB always fight against that idea and proved that it's really possible.
+
+As David Blevins said:
+> "Do not blame EJBs (ie. Java EE) because your server is not testable."
+
+With latest Java EE specifications (5 and especially 6), it becomes a reality. Arquillian typically addresses that area. It is basically a framework that aims at helping/managing the server/container in an agnostic way. Arquillian is responsible for the lifecycle of the container (start, deploy, undeploy, stop, etc).
+
+TomEE community heavily invested on that framework to prove it's really useful and can really help testing Java EE application. That's also an opportunity to get the most out of TomEE (lightweight, fast, feature-rich, etc).
+
+{info
+See [Arquillian.org](http://arquillian.org) for a great quick-start tutorial on Arquillian itself.
+}

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/basics---getting-things.mdtext
----------------------------------------------------------------------
diff --git a/docs/basics---getting-things.mdtext b/docs/basics---getting-things.mdtext
new file mode 100644
index 0000000..d252be1
--- /dev/null
+++ b/docs/basics---getting-things.mdtext
@@ -0,0 +1,103 @@
+Title: Basics - Getting Things
+<a name="Basics-GettingThings-GettingStufffromtheContainer"></a>
+# Getting Stuff from the Container
+
+Generally speaking the only way to get a [Container-Managed Resource](container-managed-resource.html)
+ is via *dependency injection* or *lookup* from within a [Container-Managed Component]
+.
+
+The *unbreakable rules*.  Read these over and over again when things don't
+work.
+
+1. java:comp/env is the spec defined namespace for lookup of any [Container-Managed Resource](container-managed-resource.html)
+1. java:comp/env is *empty* by default
+1. java:comp/env is *read-only* at runtime
+1. java:comp/env is populated by [Declaring References](declaring-references.html)
+ to [Container-Managed Resource]
+ via xml or annotation
+1. only [Container-Managed Component](container-managed-component.html)
+s, *not* their libraries, can [Declare References|Declaring References]
+ via xml or annotation
+1. only [Container-Managed Component](container-managed-component.html)
+s, *not* their libraries, can get dependency injection of [Container-Managed Resource]
+s
+1. only [Container-Managed Component](container-managed-component.html)
+s, *and* their libraries, may lookup from java:comp/env
+1. you *must* use the *no-arg* 'new InitialContext()' constructor to
+lookup something from java:comp/env
+1. the annotations and xml for [Declaring References](declaring-references.html)
+ are *identical* in functionality, both *always* configure lookup with
+*optional* dependency injection
+
+<a name="Basics-GettingThings-Commonmistakes,misunderstandings,andmyths"></a>
+##  Common mistakes, misunderstandings, and myths
+
+- *_"I tried it via annotation and it didn't work, so I used xml and then
+it did work"_*
+
+See rule 9.  If one form worked and the other didn't, it means you simply
+made a mistake in using one versus the other.  Use what works for you, but
+understand both annotations or xml will work for either lookup or injection
+if used correctly.
+
+- *_"I need to use lookups, so I can't use the annotation"_*
+
+See rule 9.  Annotations are not just for injection, that is just how they
+are typically used.  Know that when you use an annotation for injection, it
+will *always* create an entry in java:comp/env.  As well you can use the
+annotation at the *class level* and it will cause no dependency injection
+and only the entry creation in java:comp/env.
+
+- *_"I don't want injection, so I can't use the annotation"_*
+
+See rule 9 and the above.  You can use the annotation at the *class level*
+and it will cause no dependency injection and only the entry creation in
+java:comp/env.
+
+- *_"I tried to list java:comp/env but it's empty?!"_*
+
+See rule 2 and rule 4.	There will be nothing in java:comp/env unless you [Declare a Reference](declaring-references.html)
+ to it.  It does not matter if is a DataSource configured at the server
+level, etc.  Nothing is bound into java:comp/env unless you explicitly
+declare a reference to it.  The Java EE 5 TCK (Technology Compatibility
+Kit) tests for this extensively and is a rule we cannot break.	Java EE 6
+does finally offer some new namesaces (java:global, java:app, and
+java:module) which will offer some great new options for more global-style
+lookups.
+
+- *_"I deployed the EJB but can't look it up, it's name is Foo"_*
+
+See rule 2 and the above.  Just creating an EJB doesn't cause it to be
+added to java:comp/env.  If a [Container-Managed Component](container-managed-component.html)
+ wants to lookup the EJB they must [Declare a Reference|Declaring References]
+ to it via the @EJB annotionation or &lt;ejb-local-ref&gt; or &lt;ejb-ref&gt; in xml. 
+In Java EE 6, however, EJBs will be automatically bound to
+"java:global[/&lt;app-name&gt;]/&lt;module-name&gt;/&lt;bean-name&gt;[!&lt;fully-qualified-interface-name&gt;]"
+and can be looked up without declaring a reference first.
+
+- *_"Which InitialContextFactory do I use for java:comp/env?"_*
+
+See rule 8.  You are not allowed to use an InitialContextFactory for
+java:comp/env lookups.	Setting an InitialContextFactory via
+'java.naming.factory.initial' in either System properties, InitialContext
+properties, or a jndi.properties file is illegal and will cause
+java:comp/env lookups to fail.
+
+- *_"My Client can't lookup the EJB from java:comp/env"_*
+
+See rule 7.  A plain, standalone, Java application cannot use
+java:comp/env. There is the official concept of a Java EE Application
+Client which can be packaged in an ear and deployed into the Container.  In
+practice, most people find them restrictive, cumbersome, and hard to use
+and are therefore rarely employed in "real world" projects.  Most people
+opt to use the non-standard, vendor-specific, approach to looking up EJBs
+from their plain java clients.	In OpenEJB this can be done via either the
+RemoteInitialContextFactory (for remote clients) or the
+LocalInitialContextFactory (for local clients of an embedded container). 
+The JNDI names can be configured as [shown here](jndi-names.html)
+.
+
+- *_"I declared the reference, but still can't look it up"_*
+
+See all of the above and reread the rules a few times.	Always check the
+log output as well.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/basics---security.mdtext
----------------------------------------------------------------------
diff --git a/docs/basics---security.mdtext b/docs/basics---security.mdtext
new file mode 100644
index 0000000..13c932d
--- /dev/null
+++ b/docs/basics---security.mdtext
@@ -0,0 +1,52 @@
+Title: Basics - Security
+This section is under construction, please check back later.
+
+<a name="Basics-Security-RelatedDocuments"></a>
+## Related Documents
+
+[Security](security.html)
+ \- login module configuration
+[Security Annotations](security-annotations.html)
+ \- EJB3 related annotation based security.
+
+<a name="Basics-Security-ServerSideSecurity"></a>
+## Server Side Security
+
+There's a few things that should be noted about security from the server
+side perspective.
+
+<a name="Basics-Security-SecurityPropagation"></a>
+### Security Propagation
+Note, this is partially documented in the EJB 3 spec section 14.8.1.1.
+
+1. Once a remote bean has been instantiated, from within the container, it
+inherits the entire security context, and all roles will be inherited the
+same as the method where the bean is being looked up.
+1. Looking up a bean via an `InitialContext`, or via injection, will inherit
+the security context (user, roles, etc), thereby propagating the security
+through to any container bean in the chain of method calls.
+1. No properties are allowed for the `InitialContext`, and you *MUST* be
+calling the no args constructor only.  There are documents elsewhere that
+describe using the OpenEJB initial context factories and such, with
+usernames and passwords, etc; it should be noted that this method of using
+the factories is OpenEJB specific, to facilitate non-standard clients not
+running in an EJB container, etc.
+
+For example, here is an EJB that returns another bean, through a remote
+method call.  In this case, the *OtherBean* instance, will have the same
+security as *MyBean*, including the principal (username), roles, etc.
+
+
+    import javax.ejb.EJB;
+    import javax.naming.InitialContext;
+    
+    @EJB(name = "otherBean", beanInterface = IOtherBean.class)
+    public class MyBean
+    {
+        public IOtherBean getOtherBean()
+        {
+    	InitialContext context = new InitialContext();
+    	return (IOtherBean) context.lookup("java:comp/env/otherBean");
+        }
+    }
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/basics---transactions.mdtext
----------------------------------------------------------------------
diff --git a/docs/basics---transactions.mdtext b/docs/basics---transactions.mdtext
new file mode 100644
index 0000000..7e1e1eb
--- /dev/null
+++ b/docs/basics---transactions.mdtext
@@ -0,0 +1,56 @@
+Title: Basics - Transactions
+One of the many benefits of EJB, is that transactions within the EJB
+container are generally managed entirely automatically.  Any EJB component
+will, by default, partake in that transaction.
+
+Here are some basic rules to understand about transactions.  Keep note that
+this is the default behaviour, and the system can be configured to behave
+differently, depending on the needs of your system, bean, or individual
+methods of your beans.
+
+<a name="Basics-Transactions-Participants"></a>
+## Participants
+
+Various components and parts of the EJB system can be part of a
+transaction. Examples are
+
+1. Session bean
+1. Message Driven Bean
+1. EntityManager (a.k.a. Persistence context)
+
+<a name="Basics-Transactions-Behaviour"></a>
+## Behaviour
+
+The basic default behaviours are
+1. A transaction starts at the beginning of the first EJB method call, in a
+chain of calls that are participating in the given transaction
+1. A transaction ends at the end of the first EJB method, in the same chain
+1. If a bean that has started a transaction, uses another bean, that bean
+will automatically use the same transaction as the calling bean.
+
+<a name="Basics-Transactions-Configuration"></a>
+## Configuration
+
+You can configure your beans in a variety of ways.  Generally speaking, a
+transaction is started when a method is called, but can be configured using
+@TransactionAttribute(value = TransactionAttributeType.X), where X is one
+of...
+
+1. REQUIRED - the default, which is to start a transaction if one does not exist, but to use the existing one if it has already been started.
+1. REQUIRES_NEW - the transaction is created on every call, and ends when the call is completed.	Beans don't partake in transactions created by other parts of the system.
+1. MANDATORY - a transaction must always exist prior to the call, and it will be used.  It is an error otherwise
+1. NOT_SUPPORTED - component not included in the transaction
+1. SUPPORTS - transaction will be used if it exists, but will not be created if it does not exist
+1. NEVER - if a transaction exists, it is an error to call the method
+
+@TransactionAttribute applies to both methods and entire beans.  You may
+set one type of transaction behaviour (as seen above) on the bean, and a
+different one on a specific method of that same bean, which overrides the
+one configured for the overall bean.  For instance, maybe you want to make
+an audit entry in the database that you are about to attempt a credit card
+payment.  It really needs to be in it's own transaction so that it is
+IMMEDIATELY committed for audit purposes, if something goes wrong with the
+credit card payment.  So, perhaps you use MANDATORY on the bean, and
+REQUIRES_NEW on the method for audit logging.  As soon as the method that
+does the audit logging is complete, the transaction is committed, and the
+credit card payment transaction continues on it's way.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/bmpentitycontainer-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/bmpentitycontainer-config.mdtext b/docs/bmpentitycontainer-config.mdtext
new file mode 100644
index 0000000..64d6729
--- /dev/null
+++ b/docs/bmpentitycontainer-config.mdtext
@@ -0,0 +1,35 @@
+Title: BmpEntityContainer Configuration
+
+
+A BmpEntityContainer can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <Container id="myBmpEntityContainer" type="BMP_ENTITY">
+        poolSize = 10
+    </Container>
+
+Alternatively, a BmpEntityContainer can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    myBmpEntityContainer = new://Container?type=BMP_ENTITY
+    myBmpEntityContainer.poolSize = 10
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared BmpEntityContainer a warning will be logged.  If a BmpEntityContainer is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple BmpEntityContainer declarations are allowed.
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+<tr>
+  <td>poolSize</td>
+  <td>int</td>
+  <td>10</td>
+  <td>
+Specifies the size of the bean pools for this
+bmp entity container.
+</td>
+</tr>
+</table>
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/bouncy-castle.mdtext
----------------------------------------------------------------------
diff --git a/docs/bouncy-castle.mdtext b/docs/bouncy-castle.mdtext
new file mode 100644
index 0000000..12ceb33
--- /dev/null
+++ b/docs/bouncy-castle.mdtext
@@ -0,0 +1,31 @@
+Title: Installing Bouncy Castle
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+Installation of Bouncy Castle for use in TomEE itself is done in two steps:
+
+ 1. Add the Bouncy Castle provider jar to the `$JAVA_HOME/jre/lib/ext` directory
+ 1. Create a Bouncy Castle provider entry in the  `$JAVA_HOME/jre/lib/security/java.security` file
+
+The entry to `java.security` will look something like the following:
+
+    security.provider.N=org.bouncycastle.jce.provider.BouncyCastleProvider
+
+Replace `N` with the order of precedence you would like to give Bouncy Castle in comparison to the
+other providers in the file.  **Recommended** would be the last entry in the list -- `N` being the higest number in the list.
+**Warning** that configuring Bouncy Castle as the first provider, `security.provider.1`, may cause JVM errors.
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/built-in-type-converters.mdtext
----------------------------------------------------------------------
diff --git a/docs/built-in-type-converters.mdtext b/docs/built-in-type-converters.mdtext
new file mode 100644
index 0000000..74958f1
--- /dev/null
+++ b/docs/built-in-type-converters.mdtext
@@ -0,0 +1,91 @@
+Title: Built-in Type Converters
+The following built-in types are supported for @Resource injection in EJBs
+via <env-entry> elements in a META-INF/ejb-jar.xml or via plain properties
+in a META-INF/env-entries.properties file.
+
+EJB 3.0 required types:
+
+ - java.lang.Boolean
+ - java.lang.Byte
+ - java.lang.Character
+ - java.lang.Double
+ - java.lang.Float
+ - java.lang.Integer
+ - java.lang.Long
+ - java.lang.Short
+ - java.lang.String
+
+OpenEJB 3.0 additional types:
+
+ - java.lang.Class
+ - java.lang.Enum (any subclass of)
+ - java.io.File
+ - java.math.BigDecimal
+ - java.math.BigInteger
+ - java.net.Inet4Address
+ - java.net.Inet6Address
+ - java.net.InetAddress
+ - java.net.URI
+ - java.net.URL
+ - java.util.ArrayList
+ - java.util.Date
+ - java.util.HashMap
+ - java.util.Hashtable
+ - java.util.IdentityHashMap
+ - java.util.LinkedHashMap
+ - java.util.LinkedHashSet
+ - java.util.LinkedList
+ - java.util.List
+ - java.util.Map
+ - java.util.Properties
+ - java.util.Set
+ - java.util.SortedMap
+ - java.util.TreeMap
+ - java.util.TreeSet
+ - java.util.Vector
+ - java.util.WeakHashMap
+ - java.util.logging.Logger
+ - java.util.regex.Pattern
+ - javax.management.ObjectName
+ - javax.naming.Context
+ - org.apache.commons.logging.Log
+ - org.apache.log4j.Logger
+
+To use an OpenEJB additional type in xml, simply declare it as
+<env-entry-type>java.lang.String</env-entry-type> and it will be converted
+on the fly to the field/setter type used by the bean class.  For example:
+
+
+    package org.superbiz.foo;
+    
+    import java.util.Date;
+    
+    @Stateless
+    public class MyBean {
+    
+        @Resource
+        private Date myDate;
+    }
+
+
+Works with an ejb-jar.xml as follows:
+
+    <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" version="3.0"
+    metadata-complete="false">
+      <enterprise-beans>
+        <session>
+          <ejb-name>MyBean</ejb-name>
+          <env-entry>
+      <env-entry-name>org.superbiz.foo.MyBean/myDate</env-entry-name>
+      <env-entry-value>2008-04-19</env-entry-value>
+      <env-entry-type>java.lang.String</env-entry-type>
+          </env-entry>
+        </session>
+      </enterprise-beans>
+    </ejb-jar>
+
+    
+Or with an env-entries.properties file as follows:
+
+    org.superbiz.foo.MyBean/myDate = 2008-04-19
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/callbacks.mdtext
----------------------------------------------------------------------
diff --git a/docs/callbacks.mdtext b/docs/callbacks.mdtext
new file mode 100644
index 0000000..143da30
--- /dev/null
+++ b/docs/callbacks.mdtext
@@ -0,0 +1,164 @@
+Title: Callbacks
+Correct usage of PostConstruct, PreDestroy, PrePassivate, PostActivate, and
+AroundInvoke for EJBs and Interceptors.
+
+For Stateful, Stateless, and MessageDriven, the syntax is as follows:
+
+ - @PostConstruct &lt;any-scope&gt; void &lt;method-name&gt;() 
+ - @PreDestroy &lt;any-scope&gt; void &lt;method-name&gt;() 
+ - @PrePassivate &lt;any-scope&gt; void &lt;method-name&gt;() 
+ - @PostActivate &lt;any-scope&gt; void &lt;method-name&gt;() 
+
+For an Interceptor, the syntax includes InvocationContext as follows:
+
+ - @PostConstruct &lt;any-scope&gt; void &lt;method-name&gt;(InvocationContext) 
+ - @PreDestroy &lt;any-scope&gt; void &lt;method-name&gt;(InvocationContext) 
+ - @PrePassivate &lt;any-scope&gt; void &lt;method-name&gt;(InvocationContext) 
+ - @PostActivate &lt;any-scope&gt; void &ltmethod-name&gt;(InvocationContext) 
+
+The AroundInvoke syntax for an EJB or Interceptor is the same:
+
+ - @AroundInvoke &lt;any-scope&gt; Object &lt;method-name&gt;(InvocationContext) throws Exception
+
+
+<a name="Callbacks-Stateless"></a>
+## Stateless
+
+
+    import javax.ejb.Stateless;
+    import javax.annotation.PostConstruct;
+    import javax.annotation.PreDestroy;
+    import javax.interceptor.AroundInvoke;
+    import javax.interceptor.InvocationContext;
+    
+    @Stateless
+    public class MyStatelessBean implements  MyBusinessInterface  {
+    
+        @PostConstruct
+        public void constructed(){
+    
+        }
+    
+        @PreDestroy
+        public void destroy(){
+    
+        }
+    
+        @AroundInvoke
+        public Object invoke(InvocationContext invocationContext) throws Exception {
+    	return invocationContext.proceed();
+        }
+    }
+
+
+<a name="Callbacks-Stateful"></a>
+## Stateful
+
+
+    import javax.ejb.Stateful;
+    import javax.ejb.PostActivate;
+    import javax.ejb.PrePassivate;
+    import javax.annotation.PostConstruct;
+    import javax.annotation.PreDestroy;
+    import javax.interceptor.AroundInvoke;
+    import javax.interceptor.InvocationContext;
+    
+    @Stateful
+    public class MyStatefulBean implements	MyBusinessInterface  {
+    
+        @PostConstruct
+        public void constructed(){
+    
+        }
+    
+        @PreDestroy
+        public void destroy(){
+    
+        }
+    
+        @AroundInvoke
+        public Object invoke(InvocationContext invocationContext) throws Exception {
+    	      return invocationContext.proceed();
+        }
+    
+        @PostActivate
+        public void activated(){
+    
+        }
+    
+        @PrePassivate
+        public void passivate(){
+    
+        }
+    }
+
+
+<a name="Callbacks-MessageDriven"></a>
+## MessageDriven
+
+
+    import javax.ejb.MessageDriven;
+    import javax.annotation.PostConstruct;
+    import javax.annotation.PreDestroy;
+    import javax.interceptor.AroundInvoke;
+    import javax.interceptor.InvocationContext;
+    
+    @MessageDriven
+    public class MyMessageDrivenBean implements  MyListenerInterface  {
+    
+        @PostConstruct
+        public void constructed(){
+    
+        }
+    
+        @PreDestroy
+        public void destroy(){
+    
+        }
+    
+        @AroundInvoke
+        public Object invoke(InvocationContext invocationContext) throws Exception {
+    	      return invocationContext.proceed();
+        }
+    }
+
+
+<a name="Callbacks-Interceptor"></a>
+## Interceptor
+
+
+    import javax.annotation.PostConstruct;
+    import javax.annotation.PreDestroy;
+    import javax.interceptor.InvocationContext;
+    import javax.interceptor.AroundInvoke;
+    import javax.ejb.PostActivate;
+    import javax.ejb.PrePassivate;
+    
+    public class MyInterceptor {
+    
+        @PostConstruct
+        public void constructed(InvocationContext invocationContext){
+    
+        }
+    
+        @PreDestroy
+        public void destroy(InvocationContext invocationContext){
+    
+        }
+    
+        @AroundInvoke
+        public Object invoke(InvocationContext invocationContext) throws Exception {
+          	return invocationContext.proceed();
+        }
+    
+        @PostActivate
+        public void activated(InvocationContext invocationContext){
+    
+        }
+    
+        @PrePassivate
+        public void passivate(InvocationContext invocationContext){
+    
+        }
+    }
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/changing-jms-implementations.mdtext
----------------------------------------------------------------------
diff --git a/docs/changing-jms-implementations.mdtext b/docs/changing-jms-implementations.mdtext
new file mode 100644
index 0000000..1975441
--- /dev/null
+++ b/docs/changing-jms-implementations.mdtext
@@ -0,0 +1,133 @@
+Title: Changing JMS Implementations
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+ActiveMQ is the default JMS provider in Apache TomEE and OpenEJB.
+
+Changing JMS implementation is as simple as using that implementation's Java EE Connector.  The connector which will be a `.rar` file should be bundled with the application in a `.ear` 
+file.  All JMS usage in that `.ear` will favor the JMS ConnectionFactory and Topic and Queue implementations
+that are configured in the `.rar` file rather than ActiveMQ.
+
+If the JMS implementation does not have a `.rar` file, there are still some options for wiring in an alternate implementation.
+
+# Generic JMS Resource Adapter
+
+If the JMS implementation does not have a Resource Archive (`.rar` file) that defines a compliant Resource Adapter, the [Generic Resource Adapter for JMS](http://genericjmsra.java.net/) should work fine.
+
+To use this Adapter in TomEE or OpenEJB you'll need to create a `service-jar.xml` file and include that in a jar file and add it to the `<tomee.home>/lib/` directory.
+Then you can declare `ConnectionFactory`, `Topic`, and `Queue` and more via the `tomee.xml` file.
+
+The one below should be considered boiler plate.  Updating it to contain some useful default values for your JMS implementation would be good.  These values can be overridden in the `tomee.xml` or `openejb.xml`
+
+Let's say that the following file lives in the jar at `META-INF/org.superbiz/service-jar.xml`
+
+    <?xml version="1.0" encoding="UTF-8"?>
+    <ServiceJar>
+      <ServiceProvider
+          id="genericra"
+          service="Resource"
+          types="GenericJMSRA"
+          class-name="com.sun.genericra.GenericJMSRA">
+              UserName
+              Password
+              ProviderIntegrationMode
+              ConnectionFactoryClassName
+              QueueConnectionFactoryClassName
+              TopicConnectionFactoryClassName
+              XAConnectionFactoryClassName
+              XAQueueConnectionFactoryClassName
+              XATopicConnectionFactoryClassName
+              UnifiedDestinationClassName
+              TopicClassName
+              QueueClassName
+              SupportsXA
+              ConnectionFactoryProperties
+              JndiProperties
+              CommonSetterMethodName
+              RMPolicy
+              LogLevel
+              DeliveryType
+              UseFirstXAForRedelivery
+      </ServiceProvider>
+    
+      <ServiceProvider
+          id="ConnectionFactory"
+          service="Resource"
+          types="javax.jms.ConnectionFactory, javax.jms.QueueConnectionFactory, javax.jms.TopicConnectionFactory, QueueConnectionFactory, TopicConnectionFactory"
+          class-name="com.sun.genericra.outbound.ManagedJMSConnectionFactory">
+              ConnectionFactoryJndiName
+              ClientId
+              ConnectionValidationEnabled
+              ResourceAdapter
+      </ServiceProvider>
+    
+      <ServiceProvider
+          id="Queue"
+          service="Resource"
+          types="javax.jms.Queue, Queue"
+          class-name="com.sun.genericra.outbound.QueueProxy">
+              DestinationJndiName
+              ResourceAdapter
+              UserName
+              Password
+              JndiProperties
+              QueueClassName
+      </ServiceProvider>
+    
+      <ServiceProvider
+          id="Topic"
+          service="Resource"
+          types="javax.jms.Topic, Topic"
+          class-name="com.sun.genericra.outbound.TopicProxy">
+              DestinationJndiName
+              ResourceAdapter
+              UserName
+              Password
+              JndiProperties
+              TopicClassName
+      </ServiceProvider>
+    </ServiceJar>
+
+It is strongly recommended to not leave the values in the service-jar.xml file blank as shown above.  It is 
+possible to setup several sets of defaults in a `service-jar.xml` or via several `service-jar.xml` files.
+
+Once this file is packed in a jar and added to the `<tomee.home>/lib` or  `<openejb.home>/lib` directory, you can 
+then declare and configure "instances" of these things in your `tomee.xml` or `openejb.xml` config file as follows:
+
+    <Resource id="My Generic Adapter" type="GenericJMSRA" provider="org.superbiz:genericra">
+    AdapterProperty1 PropertyValue1
+    AdapterProperty2 PropertyValue2
+    ...
+    </Resource>
+
+Or in properties like so:
+
+    myGenericAdapter = new://Resource?type=GenericJMSRA&provider=org.superbiz:genericra
+    myGenericAdapter.AdapterProperty1 = PropertyValue1
+    myGenericAdapter.AdapterProperty2 = PropertyValue2
+
+This is basically the same as all configuration in TomEE/OpenEJB, but with the addition that you must 
+specify the `provider` attribute so the server knows where to look for the `service-jar.xml` file that 
+defines the resource and all its defaults.
+
+In this example:
+
+ - the file is `META-INF/org.superbiz/service-jar.xml`
+ - so the `provider` attribute is `org.superbiz`
+
+You can use whatever prefix you like for the `provider` id, though for obvious reasons we'd advise not using `org.apache.openejb` or `org.apache.tomee` in the prefix.
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/client-server-transports.mdtext
----------------------------------------------------------------------
diff --git a/docs/client-server-transports.mdtext b/docs/client-server-transports.mdtext
new file mode 100644
index 0000000..5dd8721
--- /dev/null
+++ b/docs/client-server-transports.mdtext
@@ -0,0 +1,19 @@
+Title: Client-Server Transports
+<a name="Client-ServerTransports-Client/Servertransports"></a>
+#  Client/Server transports
+
+<table>
+<tr><th> jar </th><th> transport description </th></tr>
+<tr><td> openejb-ejbd-3.0.jar </td><td> provides the 'ejbd' protocol.	A binary protocol
+traveling over a socket </td></tr>
+<tr><td> openejb-http-3.0.jar </td><td> supports the ejbd protocol over http </td></tr>
+<tr><td> openejb-derbynet-3.0.jar </td><td> allows for derby to accessed via it's network
+driver </td></tr>
+<tr><td> openejb-hsql-3.0.jar </td><td> allows for hsqldb to be accessed via it's network
+driver </td></tr>
+<tr><td> openejb-cxf-3.0.jar </td><td> turns on webservice ability, soap/http, via cxf </td></tr>
+<tr><td> openejb-activemq-3.0.jar </td><td> supports remote jms clients via activemq </td></tr>
+<tr><td> openejb-telnet-3.0.jar </td><td> allows for connecting to the server	via telnet
+for monitoring </td></tr>
+</table>
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/clients.mdtext
----------------------------------------------------------------------
diff --git a/docs/clients.mdtext b/docs/clients.mdtext
new file mode 100644
index 0000000..368a703
--- /dev/null
+++ b/docs/clients.mdtext
@@ -0,0 +1,101 @@
+Title: Clients
+
+<a name="Clients-LocalClient(embeddedcontainer)"></a>
+###  Local Client (embedded container)
+
+
+    Properties p = new Properties();
+    p.put("java.naming.factory.initial", "org.apache.openejb.client.LocalInitialContextFactory");
+    
+    InitialContext ctx = new InitialContext(p);
+    
+    MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote");
+
+
+<a name="Clients-LocalClient(non-defaultrealmname)"></a>
+###  Local Client (non-default realm name)
+
+<a name="Clients-Loginconfigurationfile(conf/login.config)"></a>
+### Login configuration file (conf/login.config)
+
+
+    PropertiesLogin {
+        org.apache.openejb.core.security.jaas.PropertiesLoginModule required
+    	Debug=true
+    	UsersFile="users.properties"
+    	GroupsFile="groups.properties";
+    };
+    MyApp {
+        org.apache.openejb.core.security.jaas.SQLLoginModule required
+    	dataSourceName="MyDataSource"
+    	userSelect="SELECT username, password FROM users WHERE username=?"
+    	groupSelect="SELECT username, grp FROM users WHERE username=?";
+    };
+
+
+<a name="Clients-Programcode"></a>
+### Code
+
+
+    Properties p = new Properties();
+    p.put("java.naming.factory.initial", "org.apache.openejb.client.LocalInitialContextFactory");
+    p.put("openejb.authentication.realmName", "MyApp");
+    
+    InitialContext ctx = new InitialContext(p);
+    
+    MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote");
+
+
+<a name="Clients-RemoteClient(openejbstandalone)"></a>
+###  Remote Client (openejb standalone)
+
+
+    Properties p = new Properties();
+    p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
+    p.put("java.naming.provider.url", "ejbd://localhost:4201");
+    // user and pass optional
+    p.put("java.naming.security.principal", "myuser");
+    p.put("java.naming.security.credentials", "mypass");
+    
+    InitialContext ctx = new InitialContext(p);
+    
+    MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote");
+
+
+<a name="Clients-RemoteClientwithHTTP(openejbstandalone)"></a>
+###  Remote Client with HTTP (openejb standalone)
+
+
+    Properties p = new Properties();
+    p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
+    p.put("java.naming.provider.url", "http://localhost:4204/ejb");
+    // user and pass optional
+    p.put("java.naming.security.principal", "myuser");
+    p.put("java.naming.security.credentials", "mypass");
+    
+    InitialContext ctx = new InitialContext(p);
+    
+    MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote");
+
+
+
+<a name="Clients-RemoteClientwithHTTP(intomcat)"></a>
+###  Remote Client with HTTP (in TomEE)
+
+
+    Properties p = new Properties();
+    p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
+    p.put("java.naming.provider.url", "http://127.0.0.1:8080/tomee/ejb");
+    // user and pass optional
+    p.put("java.naming.security.principal", "myuser");
+    p.put("java.naming.security.credentials", "mypass");
+    
+    InitialContext ctx = new InitialContext(p);
+    
+    MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote");
+
+<a name="RemoteClientUsingEjbInjection)"></a>
+### Remote Client using @EJB Injection
+see here:
+<a href="http://tomee.apache.org/ejb-refs.html">ejb-refs</a>
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/cmpentitycontainer-config.mdtext
----------------------------------------------------------------------
diff --git a/docs/cmpentitycontainer-config.mdtext b/docs/cmpentitycontainer-config.mdtext
new file mode 100644
index 0000000..0947167
--- /dev/null
+++ b/docs/cmpentitycontainer-config.mdtext
@@ -0,0 +1,34 @@
+Title: CmpEntityContainer Configuration
+
+
+A CmpEntityContainer can be declared via xml in the `<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file using a declaration like the following.  All properties in the element body are optional.
+
+    <Container id="myCmpEntityContainer" type="CMP_ENTITY">
+        cmpEngineFactory = org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory
+    </Container>
+
+Alternatively, a CmpEntityContainer can be declared via properties in the `<tomee-home>/conf/system.properties` file or via Java VirtualMachine `-D` properties.  The properties can also be used when embedding TomEE via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`
+
+    myCmpEntityContainer = new://Container?type=CMP_ENTITY
+    myCmpEntityContainer.cmpEngineFactory = org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory
+
+Properties and xml can be mixed.  Properties will override the xml allowing for easy configuration change without the need for ${} style variable substitution.  Properties are not case sensitive.  If a property is specified that is not supported by the declared CmpEntityContainer a warning will be logged.  If a CmpEntityContainer is needed by the application and one is not declared, TomEE will create one dynamically using default settings.  Multiple CmpEntityContainer declarations are allowed.
+# Supported Properties
+<table>
+<tr>
+<th>Property</th>
+<th>Type</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+<tr>
+  <td>cmpEngineFactory</td>
+  <td>String</td>
+  <td>org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory</td>
+  <td>
+
+</td>
+</tr>
+</table>
+
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/collapsed-ear.mdtext
----------------------------------------------------------------------
diff --git a/docs/collapsed-ear.mdtext b/docs/collapsed-ear.mdtext
new file mode 100644
index 0000000..7ce0541
--- /dev/null
+++ b/docs/collapsed-ear.mdtext
@@ -0,0 +1,42 @@
+Title: Collapsed EAR
+<a name="CollapsedEAR-Onearchive"></a>
+# One archive
+
+The basic idea of this approach is that your Servlets and EJBs are together
+in your WAR file as one app.
+
+* No classloader boundries between Servlets and EJBs
+* EJBs and Servlets can share all third-party libraries (like Spring\!) - no EAR required.
+* Can put the web.xml and ejb-jar.xml in the same archive (the WAR file).
+* EJBs can see Servlet classes and vice versa.
+
+<a name="CollapsedEAR-NotquiteJ2EE(itistrulyJava EE6)"></a>
+# Not quite J2EE (it is truly Java EE6)
+
+This is very different than J2EE or Java EE 5 as there aren't several
+levels of separation and classloader hierarchy.  This is going to take some
+getting used to and it should be understood that this style of packaging
+isn't J2EE compliant. Who would care tough as it is a feature of Java EE 6
+we would've been waiting for so long.
+
+ J2EE classloading rules:
+
+* You cannot ever have EJBs and servlets in the same classloader.
+* Three classloader minimum; a classloader for the ear, one for each ejb-jar, and one for each WAR file.
+* Servlets can see EJBs, but EJBs cannot see servlets.
+
+ To pull that off, J2EE has to kill you on packaging:
+* You cannot have EJB classes and Servlet classes in the same archive.
+* You need at least three archives to combine servlets and ejbs; 1 EAR containing 1 EJB jar and 1 servlet WAR.
+* Shared libraries must go in the EAR and be included in a specially formatted 'Class-Path' entry in the EAR's MANIFEST file.
+
+ Critically speaking, forcing more than one classloader on an application
+is where J2EE "jumps the shark" for a large majority of people's needs.
+
+<a name="CollapsedEAR-ExamplewithTomcat"></a>
+# Example with Tomcat
+
+If you want to try to work with Servlets/JSP and OpenEJB using Tomcat, see
+the [setup page](openejbx30:tomcat.html)
+ and the "/webapps/ejb-examples" section of the [openejb-examples.zip](downloads.html)
+ available on the [download page](http://tomee.apache.org/downloads.html).

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/common-datasource-configurations.mdtext
----------------------------------------------------------------------
diff --git a/docs/common-datasource-configurations.mdtext b/docs/common-datasource-configurations.mdtext
new file mode 100644
index 0000000..fb9a992
--- /dev/null
+++ b/docs/common-datasource-configurations.mdtext
@@ -0,0 +1,111 @@
+Title: Common DataSource Configurations
+
+See the [DataSource Configuration](datasource-config.html) for details on all configuration options for DataSources.
+
+<a name="CommonDataSourceConfigurations-HSQLDB"></a>
+## HSQLDB
+
+The drivers are included with OpenEJB 3.0 and HSQLDB is the default
+database.
+
+    <Resource id="HSQLDB Database" type="DataSource">
+        JdbcDriver org.hsqldb.jdbcDriver
+        JdbcUrl jdbc:hsqldb:file:hsqldb
+        UserName sa
+        Password
+    </Resource>
+
+
+<a name="CommonDataSourceConfigurations-Derby(Embedded)"></a>
+## Derby (Embedded)
+
+
+    <Resource id="Derby Database" type="DataSource">
+        #Embedded Derby example
+    
+        JdbcDriver org.apache.derby.jdbc.EmbeddedDriver
+        JdbcUrl jdbc:derby:derbyDB;create=true
+        UserName admin
+        Password pass
+    </Resource>
+
+
+<a name="CommonDataSourceConfigurations-MySQL"></a>
+## MySQL
+
+
+    <Resource id="MySQL Database" type="DataSource">
+        #  MySQL example
+        #
+        #  This connector will not work until you download the driver at:
+        #  http://www.mysql.com/downloads/api-jdbc-stable.html
+    
+        JdbcDriver	com.mysql.jdbc.Driver
+        JdbcUrl	jdbc:mysql://localhost/test
+        UserName	test
+    </Resource>
+
+
+<a name="CommonDataSourceConfigurations-Oracle"></a>
+## Oracle
+
+
+    <Resource id="Oracle Database" type="DataSource">
+        #  Oracle example
+        #
+        #  This connector will not work until you download the driver at:
+        #  http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html
+        JdbcDriver	oracle.jdbc.OracleDriver
+        JdbcUrl	jdbc:oracle:thin:@localhost:1521:orcl
+        UserName	scott
+        Password	tiger
+    </Resource>
+
+<a name="CommonDataSourceConfigurations-OracleXA"></a>
+## OracleXA
+
+
+    <Resource id="OracleXA Database" type="DataSource">
+        #  OracleXA example
+        #
+        #  This connector will not work until you download the driver at:
+        #  http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html
+        JdbcDriver	oracle.jdbc.xa.client.OracleXADataSource
+        JdbcUrl	jdbc:oracle:thin:@localhost:1521:orcl
+        UserName	scott
+        Password	tiger
+    </Resource>
+
+<a name="CommonDataSourceConfigurations-PosgreSQL"></a>
+## PosgreSQL
+
+
+    <Resource id="PostgreSQL Database" type="DataSource">
+        #  PostgreSQL example
+        #
+        #  This connector will not work until you download the driver at:
+        #  http://jdbc.postgresql.org/download.html
+        JdbcDriver	 org.postgresql.Driver
+        JdbcUrl	 jdbc:postgresql://localhost/test
+        UserName	 postgres
+        Password	 pass
+    </Resource>
+
+
+<a name="CommonDataSourceConfigurations-InstantDB"></a>
+## InstantDB
+
+
+    <Resource id="InstantDB Database" type="DataSource">
+        #  InstantDB example
+        #
+        JdbcDriver	 org.enhydra.instantdb.jdbc.idbDriver
+        JdbcUrl	 jdbc:idb:conf/instantdb.properties
+        UserName	 Admin
+        Password	 pass
+    </Resource>
+
+
+
+Internally, from TomEE 1.5.0, JDBC pools are managed via Tomcat-pool. You can still switch back to Apache Commons DBCP by adding the following property: DataSourceCreator dbcp.  To
+get the full list of available configuration properties, have a look to [Apache Commons DBCP configuration](http://commons.apache.org/dbcp/configuration.html).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/common-errors.mdtext
----------------------------------------------------------------------
diff --git a/docs/common-errors.mdtext b/docs/common-errors.mdtext
new file mode 100644
index 0000000..7b3e44c
--- /dev/null
+++ b/docs/common-errors.mdtext
@@ -0,0 +1,27 @@
+Title: Common Errors
+
+<a name="CommonErrors-Cannotfindcontainer"FOO"forbean"BAR""></a>
+# Cannot find container "FOO" for bean "BAR"
+
+When a bean gets deployed in OpenEJB, it gets associated with a particular
+container. Subsequently, that container may not be configured in that
+instance of the server. When the server loads the Jar with the deployed
+beans, it places beans in the containers that the beans were configured
+with. Here, the bean BAR wants to go into the container FOO, which is not
+currently configured.
+
+This message is displayed when the server is starting up.
+<a name="CommonErrors-Cannotfindbean"FOO"referencedbybean"BAR"."></a>
+# Cannot find bean "FOO" referenced by bean "BAR".
+
+When a bean gets deployed in OpenEJB, it may contain references to other
+beans. Subsequently, those beans may not be configured in that instance of
+the server. When the server loads the Jar with the deployed beans, it
+stores those references to those beans. Here, the bean BAR references FOO,
+which is not currently configured in the JNDI namespace.
+
+This message is displayed when the server is starting up.
+
+This message is usally the result of a deployment descriptor that has been
+created by hand.
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/common-persistenceprovider-properties.mdtext
----------------------------------------------------------------------
diff --git a/docs/common-persistenceprovider-properties.mdtext b/docs/common-persistenceprovider-properties.mdtext
new file mode 100644
index 0000000..e1fe351
--- /dev/null
+++ b/docs/common-persistenceprovider-properties.mdtext
@@ -0,0 +1,44 @@
+Title: Common PersistenceProvider properties
+While not a definitive list, it does help to show a side-by-side view of
+common properties used by the various persistence providers out there.
+
+<a name="CommonPersistenceProviderproperties-TopLink"></a>
+# TopLink
+
+
+    <properties>
+     
+      <!--http://www.oracle.com/technology/products/ias/toplink/JPA/essentials/toplink-jpa-extensions.html-->
+      <property name="toplink.ddl-generation" value="drop-and-create-tables"/>
+      <property name="toplink.logging.level" value="FINEST"/>
+      <property name="toplink.ddl-generation.output-mode" value="both"/>
+      <property name="toplink.target-server" value="pl.zsk.samples.ejbservice.OpenEJBServerPlatform"/>
+    </properties>
+
+
+<a name="CommonPersistenceProviderproperties-OpenJPA"></a>
+# OpenJPA
+
+
+    <properties>
+      <!--http://openjpa.apache.org/faq.html-->
+      <!-- does not create foreign keys, creates schema and deletes content of a database
+           (deleteTableContents - foreign keys are created twice???), use dropDB instead -->
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(foreignKeys=true,schemaAction='dropDB,add')"/>
+      <!--Resolves the problem with foreign key integrity - joined entities are persisted sometimes in wrong order??? (verify it)-->
+      <property name="openjpa.jdbc.SchemaFactory" value="native(foreignKeys=true)" />
+      <!--Create foreign keys-->
+      <property name="openjpa.jdbc.MappingDefaults" value="ForeignKeyDeleteAction=restrict, JoinForeignKeyDeleteAction=restrict"/>
+      <property name="openjpa.Log" value="DefaultLevel=TRACE,SQL=TRACE" />
+    </properties>
+
+
+<a name="CommonPersistenceProviderproperties-Hibernate"></a>
+# Hibernate
+
+
+    <properties>
+      <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+      <property name="hibernate.transaction.manager_lookup_class" value="org.apache.openejb.hibernate.TransactionManagerLookup"/>
+    </properties>
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/comparison.mdtext
----------------------------------------------------------------------
diff --git a/docs/comparison.mdtext b/docs/comparison.mdtext
new file mode 100644
index 0000000..4f417b3
--- /dev/null
+++ b/docs/comparison.mdtext
@@ -0,0 +1,219 @@
+Title: Comparison
+
+Apache OpenEJB and Apache TomEE are born from the same project and community.  They differ in two major ways, only one of them technical:
+
+ - TomEE incorporates two additional projects; Tomcat and MyFaces
+ - TomEE, as a name, more easily implies the breadth of technologies included
+
+Effectively, TomEE is a superset of OpenEJB.  They share the same code and TomEE grew out of OpenEJB.
+
+Note: this table is for TomEE 1.x, TomEE 7 comments are under it.
+
+<table>
+<tr>
+<th></th>
+<th>Tomcat</th>
+<th>TomEE</th>
+<th>TomEE JAX-RS (~ Microprofile)</th>
+<th>TomEE+</th>
+<th>TomEE PluME</th>
+<th>OpenEJB</th>
+</tr>
+
+<tr>
+<td>Java Servlets</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td></td>
+</tr>
+
+<tr>
+<td>Java ServerPages (JSP)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td></td>
+</tr>
+
+<tr>
+<td>Java ServerFaces (JSF)</td>
+<td></td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td></td>
+</tr>
+
+<tr>
+<td>Java Transaction API (JTA)</td>
+<td></td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+</tr>
+
+<tr>
+<td>Java Persistence API (JPA)</td>
+<td></td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+</tr>
+
+<tr>
+<td>Java Contexts and Dependency Injection (CDI)</td>
+<td></td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+</tr>
+
+<tr>
+<td>Java Authentication and Authorization Service (JAAS)</td>
+<td></td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+</tr>
+
+<tr>
+<td>Java Authorization Contract for Containers (JACC)</td>
+<td></td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+</tr>
+
+<tr>
+<td>JavaMail API</td>
+<td></td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+</tr>
+
+<tr>
+<td>Bean Validation</td>
+<td></td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+</tr>
+
+<tr>
+<td>Enterprise JavaBeans</td>
+<td></td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+</tr>
+
+<tr>
+<td>Java API for RESTful Web Services (JAX-RS)</td>
+<td></td>
+<td></td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+</tr>
+
+<tr>
+<td>Java API for XML Web Services (JAX-WS)</td>
+<td></td>
+<td></td>
+<td></td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+</tr>
+
+<tr>
+<td>Java EE Connector Architecture</td>
+<td></td>
+<td></td>
+<td></td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+</tr>
+
+<tr>
+<td>Java Messaging Service (JMS)</td>
+<td></td>
+<td></td>
+<td></td>
+<td>(/)</td>
+<td>(/)</td>
+<td>(/)</td>
+</tr>
+
+<tr>
+<td>EclipseLink</td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td>(/)</td>
+<td></td>
+</tr>
+
+<tr>
+<td>Mojarra</td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td>(/)</td>
+<td></td>
+</tr>
+
+</table>
+
+
+TomEE 7 targets JavaEE 7 and implements these specifications (in parenthesis the distibution(s) containing it if not part of the basic packages):
+
+* WebSocket JSR 356
+* JSON-P JSR 353
+* Servlet 3.1 JSR 340
+* JSF 2.2 JSR 344
+* EL 3.0 JSR 341
+* JSP 2.3 JSR 245
+* JSTL 1.2 JSR 52
+* JBatch (plus) JSR 352
+* Concurrency utilities for EE JSR 236
+* CDI 1.2, DI, Interceptors 1.2, Common Annotations JSR 346 + JSR 330 + JSR 318 + JSR 250
+* Bean Validation 1.1 JSR 349
+* EJB 3.2 JSR 345
+* JavaEE Connector JSR 322
+* JPA 2.1 JSR 338 (WARNING: openjpa based distributions provide a JPA 2.0 runtime)
+* JMS 2.0 JSR 343 (layer based on ActiveMQ 5 / JMS 1.1 for default distributions)
+* JTA 1.2 JSR 907
+* Javamail 1.4 (NOTE: EE 7 requires 1.5)
+* JAX-RS 2.0 JSR 339
+* JAX-WS 2.2 JSR 224
+* JAXB 2.2 JSR 222
+* and more inherited from TomEE 1/JavaEE 6
+

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/concepts.mdtext
----------------------------------------------------------------------
diff --git a/docs/concepts.mdtext b/docs/concepts.mdtext
new file mode 100644
index 0000000..dba6d33
--- /dev/null
+++ b/docs/concepts.mdtext
@@ -0,0 +1,75 @@
+Title: Concepts
+OpenEJB was founded on the idea that it would be embedded into third-party
+environments whom would likely already have three things:
+
+ - their one "server" platform with existing clients and protocols
+ - their own way to configure their platform
+ - existing services like TransactionManager, Security, and Connector
+
+Thus the focus of OpenEJB was to create an EJB implementation that would be
+easily embeddible, configurable, and customizable.  
+
+Part of achieving that is a drive to be as simple as possible as to not
+over-define and therefore restrict the ability to be embeddible,
+configurable and customizable.	Smaller third-party environments could
+easily 'downscale' OpenEJB in their integrations by replacing standard
+components with lighter implementations or removing them all together and
+larger environments could 'upscale' OpenEJB by replacing and adding heavier
+implementations of those standard components likely tailored to their
+systems and infrastructure.
+
+Container and Server are mentioned in the EJB spec as being separate things
+but are never defined formally.  In our world Containers, which implement
+the basic component contract and lifecycle of a bean are not coupled to any
+particular Server, which has the job of providing a naming service and
+providing a way for it's clients to reference and invoke components (beans)
+hosted in Containers.  Because Containers have no dependence at all only
+Server, you can run OpenEJB without any Server at all in an embedded
+environment for example without any work or any extra overhead.  Similarly
+you can add as many new Server components as you want without ever having
+to modify any Containers.
+
+There is a very strong pluggability focus in OpenEJB as it was always
+intended to be embedded and customized in other environments.  As a result
+all Containers are pluggable, isolated from each other, and no one
+Container is bound to another Container and therefore removing or adding a
+Container has no repercussions on the other Containers in the system. 
+TransactionManager, SecurityService and Connector also pluggable and are
+services exposed to Containers.  A Container may not be dependent on
+specific implementations of those services.  Service Providers define what
+services they are offering (Container, Connector, Security, Transaction,
+etc.) in a file they place in their jar called service-jar.xml.  
+
+The service-jar.xml should be placed not in the META-INF but somewhere in
+your package hierarchy (ours is in /org/apache/openejb/service-jar.xml)
+which allows the services in your service-jar.xml to be referenced by name
+(such as DefaultStatefulContainer) or more specifically by package and id
+(such as org.apache.openejb#DefaultStatefulContainer).	
+
+The same implementation of a service can be declared several times in a
+service-jar.xml with different ids.  This allows for you to setup several
+several different profiles or pre-configured versions of the services you
+provide each with a different name and different set of default values for
+its properties.  
+
+In your openejb.conf file when you declare Containers and Connectors, we
+are actually hooking you up with Service Providers automatically.  You get
+what is in the org/apache/openejb/service-jar.xml by default, but you are
+able to point specifically to a specific Service Provider by the 'provider'
+attribute on the Container, Connector, TransactionManager, SecurityService,
+etc. elements of the openejb.conf file.  When you declare a service
+(Container, Connector, etc.) in your openejb.conf file the properties you
+supply override the properties supplied by the Service Provider, thus you
+only need to specify the properties you'd like to change and can have your
+openejb.conf file as large or as small as you would like it.  The act of
+doing this can be thought of as essentially instantiating the Service
+Provider and configuring that instance for inclusion in the runtime system. 
+
+For example Container(id=NoTimeoutStatefulContainer,
+provider=DefaultStatefulContainer) could be declared with it's Timeout
+property set to 0 for never, and a
+Container(id=ShortTimeoutStatefulContainer,
+provider=DefaultStatefulContainer) could be declared with it's Timeout
+property set to 15 minutes.  Both would be instances of the
+DefaultStatefulContainer Service Provider which is a service of type
+Container.

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/configuration.mdtext
----------------------------------------------------------------------
diff --git a/docs/configuration.mdtext b/docs/configuration.mdtext
new file mode 100644
index 0000000..f3786a5
--- /dev/null
+++ b/docs/configuration.mdtext
@@ -0,0 +1,140 @@
+Title: Configuration
+<a name="Configuration-ShortOverview"></a>
+# Short Overview
+
+<a name="Configuration-ConfigurationProperties"></a>
+## Configuration Properties
+
+*  _openejb.home_ - OpenEJB home (installation) directory path. All relative paths are resolved against the property unless openejb.base is set. Unless set, the value is assigned to the _user.dir_ Java property.
+*  _openejb.base_ - OpenEJB base directory path. If set, the directory pointed by the property is searched for resources before openejb.home.
+*  _openejb.configuration_ - OpenEJB configuration file path.
+*  _openejb.loader_ - OpenEJB loader that's responsible for loading EJBs. There are 3 different loader types:  
+**  _tomcat-webapp_ - set it when inside of Tomcat scoped at just the webapp, aka. [Collapsed EAR](collapsed-ear.html)
+**  _tomcat_ - set it when inside of Tomcat scoped for all webapps to share
+**  _system_ (also: bootstrap)
+**  _embedded_ (also: noload)
+*  _openejb.configurator_ (default: _org.openejb.alt.config.ConfigurationFactory_ ) - a class that builds org.openejb.alt.assembler.classic.OpenEjbConfiguration object; implements the org.openejb.alt.assembler.classic.OpenEjbConfigurationFactory interface
+*  _openejb.descriptors.output_ - possible values: true|false - When set OpenEJB saves deployment descriptors - ejb-jar.xml and openejb-jar.xml
+
+<a name="Configuration-ConfigurationFile"></a>
+## Configuration File
+
+Show a config file with the elements hyperlinked.
+
+    <?xml version="1.0"?>
+    <openejb>
+      <Container id="Default CMP Container" ctype="CMP_ENTITY">
+        Global_TX_Database	c:/my/app/conf/postgresql.cmp_global_database.xml
+        Local_TX_Database	c:/my/app/conf/postgresql.cmp_local_database.xml
+      </Container>
+      <Connector id="Default JDBC Database">
+        JdbcDriver org.postgresql.Driver
+        JdbcUrl jdbc:postgresql://localhost/mydb
+        UserName username
+        Password password
+      </Connector>
+      <SecurityService id="Default Security Service"/>
+      <TransactionService id="Default Transaction Manager"/>
+      <Deployments jar="c:/my/app/employee.jar"/>
+      <Deployments dir="beans/" />
+    </openejb>
+
+    
+#  Basic Layout
+    
+Basically, openejb.base is the source for 100% of all configuration
+information and third party config files (log4j, castor, instantdb,
+whatever).  This includes finding where the, possibly many, <Deployment>
+entries in the openejb.conf point.  The openejb.home is where the code
+loading OpenEJB will look for all the OpenEJB libraries.  Usually
+openejb.base is not explicitly set and defaults to the value of
+openejb.home, so many people are used to only dealing with openejb.home.
+
+The point of having and openejb.base and openejb.home was basically to
+allow several independently configured instances of OpenEJB running on a
+system (perhaps embedded in Swing apps, in Tomcat, running as a standalone
+Server, or even in Groovy as Mr. Strachan did!) but without the need to
+copy all the OpenEJB system libraries everywhere.
+    
+  *openejb.home*
+    * can be set explicitly via a system property.
+    * if not set it default's to user.dir, which is the current working
+  directory.
+
+  *openejb.base*
+    * can be set explicitly via a system property.
+    * If not set it default's to openejb.home.
+
+  *openejb.configuration*
+    * can be set to explicitly point to the file containing your
+  configuration.
+    * If set to a relative path, we first look in user.dir/your-conf-file,
+  then in openejb.base/your-conf-file
+    * If not set we check in openejb.base/conf/openejb.conf
+    * If no conf file is found, we create one in
+  openejb.base/conf/openejb.conf
+
+
+  *relative paths in openejb.conf*
+    * Deployment entries are resolved relative to openejb.base.
+    * Containers use openejb.base to resolve their own config files.  For
+  example, Castor JDO to loads the database.xml and all other files from the
+  openejb.base directory.
+    * Resource adapters that are embedded usually have config files of their
+  own and are also loaded from the openeb.base.
+
+  *log files*
+    * The log4.configuration file is resolved relative to openejb.base.
+    * The properties in the config file that point to files are also resolved
+  relative to openejb.base.
+
+  *OpenEJB libraries*
+    * The jars in the lib and dist directories under openejb.home are added
+to the classpath.
+    
+## Summary
+    
+A summary of the above in a different notation:
+
+    openejb.home = user.dir (can be set explicitly)
+    openejb.base = openejb.home (can be set explicitly)
+    openejb.conf = openejb.base/conf/openejb.conf (can be set explicitly)
+    logging.conf = openejb.base/conf/logging.conf (can be set explicitly)
+    deployments  = paths listed in openejb.conf (relative paths resolved from openejb.base)
+    Classpath includes openejb.home/lib and openejb.home/dist
+
+## Example layout
+    
+In this one the openejb.home and openejb.base are set, everything else is
+defaulted.  The openejb.conf file as been updated to point to the ejb jars
+by name (abc-ejbs.jar and xyz-ejbs.jar).
+    
+An example layout:
+
+    /usr/local/openejb  (openejb.home)
+    /usr/local/openejb/lib	(in classpath)
+    /usr/local/openejb/dist (in classpath)
+    /home/jsmith/foo_app  (openejb.base)
+    /home/jsmith/foo_app/conf/openejb.conf
+    /home/jsmith/foo_app/conf/logging.conf
+    /home/jsmith/foo_app/abc-ejbs.jar (Deployment entry in openejb.conf)
+    /home/jsmith/foo_app/xyz-ejbs.jar (Deployment entry in openejb.conf)
+    /home/jsmith/foo_app/logs/  
+
+    
+## Another Example layout
+    
+In this example openejb.home and openejb.base are setup as well as the
+explicit paths for the openejb and log4j configuration files.
+    
+An example layout:
+
+    /usr/local/openejb  (openejb.home)
+    /usr/local/openejb/lib	(in classpath)
+    /usr/local/openejb/dist (in classpath)
+    /home/jsmith/foo_app  (openejb.base)
+    /home/jsmith/foo_app/openejb.xml  (openejb.configuration)
+    /home/jsmith/foo_app/abc-ejbs.jar (Deployment entry in openejb.xml)
+    /home/jsmith/foo_app/xyz-ejbs.jar (Deployment entry in openejb.xml)
+    /home/jsmith/foo_app/log4j.conf  (log4j.configuration)
+    /home/jsmith/foo_app/mylogs/  (logging dir as defined in log4j.conf)

http://git-wip-us.apache.org/repos/asf/tomee/blob/f779264f/docs/configuring-containers-in-tests.mdtext
----------------------------------------------------------------------
diff --git a/docs/configuring-containers-in-tests.mdtext b/docs/configuring-containers-in-tests.mdtext
new file mode 100644
index 0000000..c38aecb
--- /dev/null
+++ b/docs/configuring-containers-in-tests.mdtext
@@ -0,0 +1,24 @@
+Title: Configuring Containers in Tests
+Like Resources, Containers can also be declared via InitialContext
+properties as well.  The most useful is to declare a Stateful SessionBean
+container so that it's guaranteed to passivate and activate on each call to
+the bean, allowing you to test your callbacks behave as you need them to.
+
+
+    Properties p = new Properties();
+    p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+    
+    p.put("myStatefulContainer", "new://Container?type=STATEFUL");
+    p.put("myStatefulContainer.PoolSize", "0");
+    p.put("myStatefulContainer.BulkPassivate", "1");
+    
+    Context context = new InitialContext(p);
+
+
+Note, this only works when using the LocalInitialContextFactory to embed
+OpenEJB into the vm.  Once embedded, further configuration properties are
+ignored.
+
+See [Containers and Resources](containers-and-resources.html)
+ for a full list of supported Resource types and their properties.
+