Added: tomee/site/trunk/refcard/refcard.html URL: http://svn.apache.org/viewvc/tomee/site/trunk/refcard/refcard.html?rev=1493089&view=auto ============================================================================== --- tomee/site/trunk/refcard/refcard.html (added) +++ tomee/site/trunk/refcard/refcard.html Fri Jun 14 14:33:55 2013 @@ -0,0 +1,1559 @@ +<!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.3" 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.force-load=<comma separated list of class name prefixes></code>: classes to load from the webapp first +whatever is in the container</p> +</li> +<li> +<p><code>openejb.classloader.force-skip=<idem></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/…) 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…)</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.force-load = my.pack1,my.pack2 +openejb.classloader.force-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 > FINE > INFO > WARNING > 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><daemon name.<attribute>=value</code></p> +</li> +<li> +<p>conf/conf.d/<daemon name>.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"><?xml version='1.0' encoding='utf-8'?> +<Server port="8005" shutdown="SHUTDOWN"> + <!-- TomEE integration with Tomcat --> + <Listener className="org.apache.tomee.catalina.ServerListener" /> + + <Service name="Catalina"> + + <!-- Connectors are entry points (HTTP, AJP...) --> + <Connector port="8080" protocol="HTTP/1.1" /> + + <Engine name="Catalina" defaultHost="localhost"> + <!-- + folder webapps will scanned for webapps + and webapps will be deployed on localhost + --> + <Host name="localhost" appBase="webapps" /> + </Engine> + </Service> +</Server></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"><?xml version="1.0" encoding="UTF-8"?> +<openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1"> + <ejb-deployment ejb-name="CalculatorImpl"> + <properties> + # 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 + </properties> + </ejb-deployment> +</openejb-jar></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…).</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><tomee>/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"><?xml version="1.0"?> +<scan> + <packages> + <package>org.foo1</package> + <package>org.foo2</package> + </packages> + <classes> + <class>org.bar.Bar1</class> + <class>org.anotherbar.Bar2</class> + </classes> +</scan></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"><?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- + mainly a tomee.xml embed in the application + (META-INF or WEB-INF) + --> + <Resource id="name" type="DataSource"> + JdbcUrl = jdbc:hsqldb:mem:my-ds + </Resource> +</resources></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"><?xml version="1.0" encoding="UTF-8"?> +<openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1"> + <!-- + class-name has to be the JAXRS application name + or this one if no Application is defined + --> + <pojo-deployment class-name="jaxrs-application"> + <properties> + cxf.jaxrs.providers = org.foo.BarProvider, id1 + </properties> + </pojo-deployment> +</openejb-jar></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"><?xml version="1.0" encoding="utf-8"?> +<resources> + <Service id="json" class-name="org.foo.bar"> + Attribute1 = Value1 + Attribute2 = Value2 + </Resource> +</resources></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"><?xml version="1.0" encoding="utf-8"?> +<tomee> + <!-- + resources can be declared here + To lookup it directly just use openejb:Resource/<id> name + --> + <Resource id="name" type="DataSource> + # here comes the configuration in properties like format + JdbcUrl = jdbc:hsqldb:mem:my-ds + UserName = SA + </Resource> + + <!-- resource can be any class available in the container loader --> + <Resource id="foo" class-name="org.foo.MyPojo"> + pojoAttr1 = value2 + </Resource> + + <!-- + if you want to deploy ear/jar, + declare it + put the file in apps folder + --> + <Deployments dir="apps" /> + + <!-- more on http://tomee.apache.org/containers-and-resources.html --> +</tomee></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.aapche.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=<path to login.config></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"><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" /></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"><!-- core: embedded cdi, ejb, EJBContainer... --> +<dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>openejb-core</artifactId> + <version>${openejb.version}</version> +</dependency> + +<!-- for JAXWS webservices --> +<dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>openejb-cxf</artifactId> + <version>${openejb.version}</version> +</dependency> + +<!-- for JAXRS webservices --> +<dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>openejb-cxf-rs</artifactId> + <version>${openejb.version}</version> +</dependency> + +<!-- embedded arquillian adapter --> +<dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>arquillian-openejb-embedded-4</artifactId> + <version>${openejb.version}</version> +</dependency></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"><!-- tomee zip --> +<dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>apache-tomee</artifactId> + <version>${tomee.version}</version> + <type>zip</type> +</dependency> + +<!-- tomee arquillian adapter --> +<dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>arquillian-tomee-remote</artifactId> + <version>${tomee.version}</version> +</dependency></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"><!-- tomee zip --> +<dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>tomee-embedded</artifactId> + <version>${tomee.version}</version> + <type>zip</type> +</dependency> + +<!-- tomee embedded arquillian adapter --> +<dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>arquillian-tomee-embedded</artifactId> + <version>${tomee.version}</version> +</dependency> + +<!-- tomee jaxrs --> +<dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>tomee-jaxrs</artifactId> + <version>${tomee.version}</version> +</dependency> + +<!-- tomee jaxws --> +<dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>tomee-webservices</artifactId> + <version>${tomee.version}</version> +</dependency></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"><plugin> + <groupId>org.apache.openejb.maven</groupId> + <artifactId>tomee-maven-plugin</artifactId> + <version>${tmp.version}</version> + <configuration> <!-- all is optional --> + <tomeeVersion>1.5.0</tomeeVersion> + <tomeeClassifier>plus</tomeeClassifier> <!-- webprofile, jaxrs --> + + <!-- remote debugging --> + <debug>false</debug> + <debugPort>5005</debugPort> + + <!-- http port - same exists for ajp and https --> + <tomeeHttpPort>8080</tomeeHttpPort> + + <!-- remove default tomee webapp --> + <removeDefaultWebapps>true</removeDefaultWebapps> + <!-- remove even tomee webapp - if you don't use it --> + <removeTomeeWebapp>true</removeTomeeWebapp> + + <!-- add some libs to the server --> + <libs> + <lib>mysql:mysql-connector-java:5.1.20</lib> + </libs> + + <!-- deploy another webapp, same exists for ear with <apps /> --> + <webapps> + <webapp>org.superbiz:my-simple-webapp:1.0.0</webapp> + </webapps> + + <!-- auto update of the app --> + </configuration> + <!-- can the app be redeployed after update --> + <reloadOnUpdate>true</reloadOnUpdate> + <synchronization> + <!-- extensions updating and redeploying --> + <extensions> + <extension>.class<extension> + </extensions> + <!-- extensions updating without redeploy --> + <updateOnlyExtensions> + <updateOnlyExtension>.html<updateOnlyExtension> + <updateOnlyExtension>.js<updateOnlyExtension> + <updateOnlyExtension>.jcss<updateOnlyExtension> + </updateOnlyExtensions> + </synchronization> + <!-- <synchronizations/> exist to handle multiple source/target --> + </configuration> + </configuration> +</plugin></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">>= 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 <path>: deploy path archive</p> +</li> +<li> +<p>tomee:undeploy <path>: 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"><?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="openejb" default="true"> + <configuration> + <!-- container properties (~ conf/system.properties) --> + <property name="properties"> + # 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 + </property> + </configuration> + </container> +</arquillian></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"><?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> + </configuration> + </container> +</arquillian></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"><?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.openejb</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> + </configuration> + </container> +</arquillian></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"><?xml version="1.0" encoding="UTF-8"?> +<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation=" + http://jboss.org/schema/arquillian + http://jboss.org/schema/arquillian/arquillian_1_0.xsd"> + <group qualifier="tomee-cluster"> + <container qualifier="tomee-1"> + <configuration> + <property name="httpPort">-1</property> + <property name="stopPort">-1</property> + <property name="ajpPort">-1</property> + <property name="dir">target/tomee1</property> + <property name="appWorkingDir">target/wd1</property> + </configuration> + </container> + <container qualifier="tomee-2"> + <configuration> + <property name="httpPort">-1</property> + <property name="stopPort">-1</property> + <property name="ajpPort">-1</property> + <property name="dir">target/tomee2</property> + <property name="appWorkingDir">target/wd2</property> + </configuration> + </container> + </group> +</arquillian></code></pre> +</div> +</div> +<div class="paragraph"> +<p>Then in 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 - 20130614-1453 +</div> +</footer> +</body> +</html> \ No newline at end of file
