blob: 846962b665e3a85261e444e65abff865593a564e [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Apache TomEE</title>
<meta name="description"
content="Apache TomEE is a lightweight, yet powerful, JavaEE Application server with feature rich tooling." />
<meta name="keywords" content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian" />
<meta name="author" content="Luka Cvetinovic for Codrops" />
<link rel="icon" href="../favicon.ico">
<link rel="icon" type="image/png" href="../favicon.png">
<meta name="msapplication-TileColor" content="#80287a">
<meta name="theme-color" content="#80287a">
<link rel="stylesheet" type="text/css" href="../css/normalize.css">
<link rel="stylesheet" type="text/css" href="../css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="../css/owl.css">
<link rel="stylesheet" type="text/css" href="../css/animate.css">
<link rel="stylesheet" type="text/css" href="../fonts/font-awesome-4.1.0/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="../fonts/eleganticons/et-icons.css">
<link rel="stylesheet" type="text/css" href="../css/jqtree.css">
<link rel="stylesheet" type="text/css" href="../css/idea.css">
<link rel="stylesheet" type="text/css" href="../css/cardio.css">
<script type="text/javascript">
<!-- Matomo -->
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function () {
var u = "//matomo.privacy.apache.org/";
_paq.push(['setTrackerUrl', u + 'matomo.php']);
_paq.push(['setSiteId', '5']);
var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];
g.async = true;
g.src = u + 'matomo.js';
s.parentNode.insertBefore(g, s);
})();
<!-- End Matomo Code -->
</script>
</head>
<body>
<div class="preloader">
<img src="../img/loader.gif" alt="Preloader image">
</div>
<nav class="navbar">
<div class="container">
<div class="row"> <div class="col-md-12">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/" title="Apache TomEE">
<span>
<img
src="../img/apache_tomee-logo.svg"
onerror="this.src='../img/apache_tomee-logo.jpg'"
height="50"
>
</span>
</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right main-nav">
<li><a href="../docs.html">Documentation</a></li>
<li><a href="../community/index.html">Community</a></li>
<li><a href="../security/security.html">Security</a></li>
<li><a class="btn btn-accent accent-orange no-shadow" href="../download.html">Downloads</a></li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div></div>
</div>
<!-- /.container-fluid -->
</nav>
<div id="main-block" class="container main-block">
<div class="row title">
<div class="col-md-12">
<div class='page-header'>
<h1>Tips and Suggestions</h1>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="sect1">
<h2 id="_useful_information_for_contributors">Useful information for contributors</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_jira_usage">JIRA usage</h3>
<div class="paragraph">
<p>It&#8217;s good to leverage JIRA, but everything that happens there should be
considered invisible for the most part and only reviewed on a random and
infrequent basis.</p>
</div>
<div class="paragraph">
<p>A good way to bring jira "discussion" back to the list is to follow up on the list rather than posting more jira comments. Maybe by having the first followup comment be a link to Nabble&#8217;s "forum" view of the list. Optionally, you can Cc <a href="mailto:jira@apache.org">jira@apache.org</a> and include "[jira](jira.html)
OPENEJB-XXX" anywhere in your subject line and your email will get added
as a jira comment.</p>
</div>
<div class="paragraph">
<p>For those looking to contribute, there are some good habits to put into
use. We use a permission scheme called "Interactive Permissions." It&#8217;s
description has some good information:</p>
</div>
<div class="literalblock">
<div class="content">
<pre>Interactive Permissions</pre>
</div>
</div>
<div class="literalblock">
<div class="content">
<pre>This permissions model differs from the Standard Permissions
model in that people in the Contributor role must interact with
the dev list to get to get issues assigned to them and issues
closed. This isn't a trust issue, more that there are a few
benefits.</pre>
</div>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Active contributors hitting the list to begin and end work
shows other people not yet active how to get involved.</p>
</li>
<li>
<p>Adds more "touch points" between Contributors and
Committers. It should be possible to "see" the active
contributors even if you are not watching the JIRA or SVN
notifications. It&#8217;s also hoped that the practice of
announcing your intentions on the dev list will persist
even when the Contributor becomes a Committer.</p>
</li>
<li>
<p>Gives Committers the opportunity to help, mentor or
otherwise get the Contributor going in the right direction
before a task is started; potentially resulting in fewer
rejected patches, less waisted Contributor time, and more
collaborative development.</p>
</li>
<li>
<p>Overall brings more communication to the dev list before
all work is done and all decisions made giving more
potential to collaboration.</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>{}If you'd like to get added to the openejb-contributors JIRA group, just
ping the list with your JIRA id and someone will add you.{}</p>
</div>
</div>
<div class="sect2">
<h3 id="_commits">Commits</h3>
<div class="paragraph">
<p><strong>Contributed by</strong>: David Blevins
Here is an email from David Blevins explaining the things he keeps in mind
during commits. <strong>{}Definitely worth a read{}{</strong>}:</p>
</div>
<div class="paragraph">
<p>I generally <strong>try never to reformat a file and make changes at the same
time</strong> as it makes it impossible for anyone to see what I&#8217;ve changed. Needle
in a haystack. I <strong>try to get the reformatting as its own commit</strong> before or
after I change a file.</p>
</div>
<div class="paragraph">
<p>A lot of times I end up tweaking a bunch of little unrelated things while
working on a bigger change. <strong>I tend to like to "clear them out" in separate
commits as to isolate the big change in one commit</strong>. Sometimes I&#8217;m not so
good at that and other times I&#8217;m really meticulous about it.</p>
</div>
<div class="paragraph">
<p><strong>Include the JIRA number and title (if there is a jira)</strong>. I try never to
say "Fixed FOO-2543" all by itself. Reviewing the last 10 changes on a
file is a super big PITA when all you see is numbers to other systems. <strong>I
shoot for more or less "Fixed &lt;issue-number&gt; &lt;issue-title&gt;
&lt;how-did-i-fix-it&gt;"</strong> Sometimes the "how did i fix it" part is obvious by
the title, other times not. Sometimes I&#8217;m too tired and the wife is
impatiently waiting for me to leave the computer :-)
As far as jiras go, there doesn&#8217;t have to be a jira for absolutely every
commit&#8201;&#8212;&#8201;what&#8217;s the point of that. I <strong>try to make sure there&#8217;s a jira for
anything we&#8217;d definitely want to see in the release notes</strong>. Sometimes I
don&#8217;t get the jira created till long after the change, towards release time
when creating the release notes :-) It&#8217;s pretty easy to forget stuff that
way though :-)</p>
</div>
<div class="paragraph">
<p>As far as jira titles, I always <strong>try and make them short and succinct</strong> for
the future release notes.</p>
</div>
</div>
<div class="sect2">
<h3 id="_svn_jira">SVN + JIRA</h3>
<div class="sect3">
<h4 id="_contributed_by_vamsi"><strong>Contributed by</strong>: Vamsi</h4>
<div class="paragraph">
<p>I had trouble figuring out if a revision is related to a JIRA and what all
revisions corresponded to a particular JIRA. So, I always include the JIRA
number (if there is an associated JIRA) in the svn comment and once
committed, I add the revision number to the JIRA comment. It may be a
minute or two more to do this. But, it saves a lot of time if you ever
have to investigate a regression or if there are multiple revisions for a
JIRA you know where to find the revision numbers instead of having to mine
the svn logs.</p>
</div>
<div class="paragraph">
<p>Some files may be missing $Rev$ and $Date$ in the header. Whenever I
modify an existing file, I always check if I have to add these missing
$Rev$ $Date$ and add those so that the file will have them from my next
commit onwards.</p>
</div>
</div>
<div class="sect3">
<h4 id="_contributed_by_david_blevins"><strong>Contributed by</strong>: David Blevins</h4>
<div class="quoteblock">
<blockquote>
<div class="paragraph">
<p>If you put "\[jira\](jira\.html)
OPENEJB-XXX" anywhere in your subject line and cc <a href="mailto:jira@apache.org">jira@apache.org</a> our
email gets added as a comment with all '&gt; quoted' text stripped out.
PS: XXX is the JIRA issue number</p>
</div>
</blockquote>
</div>
</div>
<div class="sect3">
<h4 id="_details">Details</h4>
<div class="paragraph">
<p>The following subject lines did work:
- Subject: \[jira\](jira\.html)
OPENEJB-670
- Subject: Some other subject prefix (\[jira\](jira\.html)
OPENEJB-670)
- Subject: Re: Some other subject prefix (\[jira\](jira\.html)
OPENEJB-670)</p>
</div>
<div class="paragraph">
<p>The following subject lines did <strong>not</strong> work:
- Subject: OPENEJB-670
- Subject: Some other subject prefix (jira: OPENEJB-670)
- Subject: Some other subject prefix (jira OPENEJB-670)
- Subject: Some other subject prefix (OPENEJB-670)</p>
</div>
<div class="paragraph">
<p>It appears that as long as the subject contains "\[jira\](jira\.html)
FOO-XXX" the email contents will be added as comments.</p>
</div>
<div class="paragraph">
<p>It also appears that all quoted text regardless of place in the email is
stripped out and the remaining text is added as the comment.</p>
</div>
<div class="paragraph">
<p>The exact email bodies, white space and all, for the "reply text" comments
above are:</p>
</div>
<div class="paragraph">
<p>&lt;one&gt;
Reply text at the top.</p>
</div>
<div class="paragraph">
<p>&#8201;&#8212;&#8201;David</p>
</div>
<div class="paragraph">
<p>On Aug 23, 2007, at 1:02 PM, David Blevins wrote:</p>
</div>
<div class="paragraph">
<p>Testing adding comments via email with this subject line "Some other subject prefix (\[jira\](jira\.html)
OPENEJB-670)"</p>
</div>
<div class="paragraph">
<p>&lt;/one&gt;</p>
</div>
<div class="paragraph">
<p>&lt;two&gt;</p>
</div>
<div class="paragraph">
<p>On Aug 23, 2007, at 1:02 PM, David Blevins wrote:</p>
</div>
<div class="paragraph">
<p>Testing adding comments via email with this subject line "Some other subject prefix (\[jira\](jira\.html)
OPENEJB-670)"</p>
</div>
<div class="paragraph">
<p>Reply text at the bottom.</p>
</div>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>David</p>
</div>
<div class="paragraph">
<p>&lt;/two&gt;</p>
</div>
<div class="paragraph">
<p>&lt;three&gt;
On Aug 23, 2007, at 1:02 PM, David Blevins wrote:</p>
</div>
<div class="paragraph">
<p>Testing adding comments via email</p>
</div>
<div class="paragraph">
<p>Some reply text</p>
</div>
<div class="paragraph">
<p>with this subject line "Some other subject prefix (\[jira\](jira\.html)
OPENEJB-670)"</p>
</div>
<div class="paragraph">
<p>Some more reply text</p>
</div>
</div>
</div>
<div class="paragraph">
<p>David</p>
</div>
<div class="paragraph">
<p>&lt;/three&gt;</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_scp_ssh_and_rsync_examples_for_working_with_files_and_directories_on_people_apache_org">scp, ssh, and rsync examples for working with files and directories on people.apache.org</h3>
<div class="paragraph">
<p><strong>Contributed by</strong>: David Blevins</p>
</div>
<div class="paragraph">
<p><strong>copying a file to apache from locahost</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre>scp topsecret.tar.gz kmalhi@people.apache.org:
scp index.html kmalhi@people.apache.org:public_html/</pre>
</div>
</div>
<div class="paragraph">
<p><strong>copying a file from apache to localhost&#8201;&#8212;&#8201;reverse of the above</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre>scp kmalhi@people.apache.org:topsecret.tar.gz ./
scp kmalhi@people.apache.org:public_html/index.html ./</pre>
</div>
</div>
<div class="paragraph">
<p><strong>copying directories</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre>scp \-r kmalhi@people.apache.org:public_html ./
scp \-r public_html kmalhi@people.apache.org:</pre>
</div>
</div>
<div class="paragraph">
<p><strong>When the directory exists, better to rsync</strong></p>
</div>
<div class="paragraph">
<p><strong>pull a dir from apache</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre>rsync \-v \-e ssh \-lzrptog kmalhi@people.apache.org:public_html ./
rsync \-v \-e ssh \-lzrptog
kmalhi@people.apache.org:/home/kmalhi/public_html ./</pre>
</div>
</div>
<div class="paragraph">
<p><strong>the two above commands do the exact same thing</strong></p>
</div>
<div class="paragraph">
<p><strong>push the same dir to apache</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre>rsync \-v \-e ssh \-lzrptog ./public_html kmalhi@people.apache.org:
rsync \-v \-e ssh \-lzrptog ./public_html
kmalhi@people.apache.org:/home/kmalhi/</pre>
</div>
</div>
<div class="paragraph">
<p><strong>the two above commands do the exact same thing</strong></p>
</div>
<div class="paragraph">
<p><strong>sometimes useful to execute commands over ssh (piping works too)</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre>ssh people.apache.org ls /home \| tee home-dirs-on-apache.txt
echo \-e 'Hello, me\n\nHow am I doing today?' \| ssh
kmalhi@people.apache.org mail \-s 'Greetings' kmalhi@apache.org</pre>
</div>
</div>
<div class="paragraph">
<p><strong>For Putty users</strong>
<strong>Contributed by:</strong> Mohammad
I have Putty on my linux machine and it is easier to use, Putty has a
Windows version too, I issue this command to upload a file to my home dir
on people.apache.org</p>
</div>
<div class="listingblock">
<div class="content">
<pre> pscp [[file-name]
| [dir]
] mnour@people.apache.org:~/</pre>
</div>
</div>
<div class="paragraph">
<p>and if you want to access your home page, you should create a dir with the
name public_html, and then upload files to it.</p>
</div>
</div>
<div class="sect2">
<h3 id="_a_cool_subversion_tip">A cool subversion tip</h3>
<div class="paragraph">
<p><strong>Contributed by</strong>: Jacek Laskowski.</p>
</div>
<div class="paragraph">
<p><strong>It&#8217;ll let you forget about some svn administrative commands you&#8217;d
otherwise have to type in on the command line.</strong>
Edit/Add the following configurations to \~/.subversion/config:</p>
</div>
<div class="listingblock">
<div class="content">
<pre> [miscellany]
global-ignores = *.log *.save *.o *.lo *.la #*# .*~ *~ .#* .DS_Store
build dist target *.ipr *.iml *.iws .project .classpath .settings
enable-auto-props = yes
[auto-props]
*.c = svn:eol-style=native;svn:keywords=Date Author Id Revision HeadURL
*.cpp = svn:eol-style=native;svn:keywords=Date Author Id Revision HeadURL
*.h = svn:eol-style=native;svn:keywords=Date Author Id Revision HeadURL
*.dsp = svn:eol-style=CRLF
*.dsw = svn:eol-style=CRLF
*.sh = svn:executable;svn:eol-style=native;svn:keywords=Date Revision
*.cmd = svn:mime-type=text/plain;svn:eol-style=CRLF
*.bat = svn:mime-type=text/plain;svn:eol-style=CRLF
Makefile = svn:eol-style=native;svn:keywords=Date Author Id Revision
HeadURL
*.obj = svn:mime-type=application/octet-stream
*.bin = svn:mime-type=application/octet-stream
*.bmp = svn:mime-type=image/bmp
*.class = svn:mime-type=application/java
*.doc = svn:mime-type=application/msword
*.exe = svn:mime-type=application/octet-stream
*.gif = svn:mime-type=image/gif
*.gz = svn:mime-type=application/x-gzip
*.jar = svn:mime-type=application/java-archive
*.jelly = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision
*.jpg = svn:mime-type=image/jpeg
*.jpeg = svn:mime-type=image/jpeg
*.pdf = svn:mime-type=application/pdf
*.png = svn:mime-type=image/png
*.tgz = svn:mime-type=application/octet-stream
*.tif = svn:mime-type=image/tiff
*.tiff = svn:mime-type=image/tiff
*.zip = svn:mime-type=application/zip
*.txt = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision
*.xml = svn:mime-type=text/xml;svn:eol-style=native;svn:keywords=Date
Revision
*.ent = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision
*.dtd = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision
*.vsl = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision
*.xsd = svn:mime-type=text/xml;svn:eol-style=native;svn:keywords=Date
Revision
*.xsl = svn:mime-type=text/xml;svn:eol-style=native;svn:keywords=Date
Revision
*.wsdl = svn:mime-type=text/xml;svn:eol-style=native;svn:keywords=Date
Revision
*.htm = svn:mime-type=text/html;svn:eol-style=native;svn:keywords=Date
Revision
*.html = svn:mime-type=text/html;svn:eol-style=native;svn:keywords=Date
Revision
*.css = svn:mime-type=text/css;svn:eol-style=native;svn:keywords=Date
Revision
*.js = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision
*.jsp = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision
*.txt = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision
*.java = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision
*.properties =
svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision
*.sql = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_maven_tips">Maven tips</h3>
<div class="paragraph">
<p><strong>Contributed by:</strong> Jacek and David
<strong>I want to make a small change in a module , for example openejb-core and
then want to build a snapshot of openejb-standalone, start the server and
test my change. What is the easiest and fastest way of doing it?</strong>
Run the following from within openejb-core</p>
</div>
<div class="listingblock">
<div class="content">
<pre> mvn -Dtest=none install</pre>
</div>
</div>
<div class="paragraph">
<p>Now run the following from within openejb-standalone</p>
</div>
<div class="listingblock">
<div class="content">
<pre> mvn -Dtest=none clean package</pre>
</div>
</div>
<div class="paragraph">
<p><strong>So what if I wanted to do the above in a single command?</strong>
It&#8217;s possible with ${module} and ${assemble} properties and <strong>create a
profile or a plugin</strong></p>
</div>
<div class="paragraph">
<p>Another option is and <strong>if you&#8217;re in bash</strong>, here&#8217;s what could be done</p>
</div>
<div class="listingblock">
<div class="content">
<pre> # camping out in assembly/openejb-standalone/
$ (cd ../../container/openejb-core &amp;&amp; mvn clean install -Dtest=skip) &amp;&amp; mvn
clean install &amp;&amp; ./try.sh</pre>
</div>
</div>
<div class="paragraph">
<p>That&#8217;s one command, parens and all. The first "$" is the prompt,don&#8217;t type
that. Then just edit ./try.sh to do what you&#8217;re looking for on the
standalone zip.</p>
</div>
<div class="paragraph">
<p>The parens in bash are great as nothing done in there lasts&#8201;&#8212;&#8201;at least no
changes to the environment. So you can 'cd' around all you want and not
have to 'cd' back when done.</p>
</div>
<div class="paragraph">
<p>For example</p>
</div>
<div class="listingblock">
<div class="content">
<pre> $ export FOO=hello &amp;&amp; (export FOO=byebye) &amp;&amp; echo $FOO
hello
$ cd ~ &amp;&amp; echo $PWD &amp;&amp; (cd /tmp &amp;&amp; echo $PWD) &amp;&amp; echo $PWD
/Users/dblevins
/tmp
/Users/dblevins</pre>
</div>
</div>
<div class="paragraph">
<p>As well, several commands can be combined with '&amp;&amp;'. Far better than just
separating commands with ';' as if one of the commands fail, the remaining
commands will not be executed.</p>
</div>
<div class="paragraph">
<p><strong>Suggestion from Dain</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre>&gt; &amp;nbsp;I suggest that you always do a full build (with tests) before
&gt; committing. I do this even if the change is small because I have been
&gt; burned too many times by trivial changes. At the very least I suggest you
&gt; run
&gt;
&gt; mvn -Dtest=none clean install
&gt;
&gt; Using \-Dtest=none instead of \-Dmaven.test.skip=true causes maven to
&gt; compile the test classes so you know that your change doesn't have compile
&gt; errors.
&gt; If you want to be thorough, run with \-Dassemble.</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_jaxb_usage">JAXB Usage</h3>
<div class="paragraph">
<p>TODO:
Create a write up from here
<a href="http://www.nabble.com/jaxb-question-td18023648.html" class="bare">http://www.nabble.com/jaxb-question-td18023648.html</a></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div style="margin-bottom: 30px;"></div>
<footer>
<div class="container">
<div class="row">
<div class="col-sm-6 text-center-mobile">
<h3 class="white">Be simple. Be certified. Be Tomcat.</h3>
<h5 class="light regular light-white">"A good application in a good server"</h5>
<ul class="social-footer">
<li><a href="https://www.facebook.com/ApacheTomEE/"><i class="fa fa-facebook"></i></a></li>
<li><a href="https://twitter.com/apachetomee"><i class="fa fa-twitter"></i></a></li>
</ul>
<h5 class="light regular light-white">
<a href="../privacy-policy.html" class="white">Privacy Policy</a>
</h5>
</div>
<div class="col-sm-6 text-center-mobile">
<div class="row opening-hours">
<div class="col-sm-3 text-center-mobile">
<h5><a href="../latest/docs/" class="white">Documentation</a></h5>
<ul class="list-unstyled">
<li><a href="../latest/docs/admin/configuration/index.html" class="regular light-white">How to configure</a></li>
<li><a href="../latest/docs/admin/file-layout.html" class="regular light-white">Dir. Structure</a></li>
<li><a href="../latest/docs/developer/testing/index.html" class="regular light-white">Testing</a></li>
<li><a href="../latest/docs/admin/cluster/index.html" class="regular light-white">Clustering</a></li>
</ul>
</div>
<div class="col-sm-3 text-center-mobile">
<h5><a href="../latest/examples/" class="white">Examples</a></h5>
<ul class="list-unstyled">
<li><a href="../latest/examples/simple-cdi-interceptor.html" class="regular light-white">CDI Interceptor</a></li>
<li><a href="../latest/examples/rest-cdi.html" class="regular light-white">REST with CDI</a></li>
<li><a href="../latest/examples/ejb-examples.html" class="regular light-white">EJB</a></li>
<li><a href="../latest/examples/jsf-managedBean-and-ejb.html" class="regular light-white">JSF</a></li>
</ul>
</div>
<div class="col-sm-3 text-center-mobile">
<h5><a href="../community/index.html" class="white">Community</a></h5>
<ul class="list-unstyled">
<li><a href="../community/contributors.html" class="regular light-white">Contributors</a></li>
<li><a href="../community/social.html" class="regular light-white">Social</a></li>
<li><a href="../community/sources.html" class="regular light-white">Sources</a></li>
</ul>
</div>
<div class="col-sm-3 text-center-mobile">
<h5><a href="../security/index.html" class="white">Security</a></h5>
<ul class="list-unstyled">
<li><a href="https://apache.org/security" target="_blank" class="regular light-white">Apache Security</a></li>
<li><a href="https://apache.org/security/projects.html" target="_blank" class="regular light-white">Security Projects</a></li>
<li><a href="https://cve.mitre.org" target="_blank" class="regular light-white">CVE</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="row bottom-footer text-center-mobile">
<div class="col-sm-12 light-white">
<p>Copyright &copy; 1999-2022 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
</div>
</div>
</div>
</footer>
<!-- Holder for mobile navigation -->
<div class="mobile-nav">
<ul>
<li><a hef="../latest/docs/admin/index.html">Administrators</a>
<li><a hef="../latest/docs/developer/index.html">Developers</a>
<li><a hef="../latest/docs/advanced/index.html">Advanced</a>
<li><a hef="../community/index.html">Community</a>
</ul>
<a href="#" class="close-link"><i class="arrow_up"></i></a>
</div>
<!-- Scripts -->
<script src="../js/jquery-1.11.1.min.js"></script>
<script src="../js/owl.carousel.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
<script src="../js/wow.min.js"></script>
<script src="../js/typewriter.js"></script>
<script src="../js/jquery.onepagenav.js"></script>
<script src="../js/tree.jquery.js"></script>
<script src="../js/highlight.pack.js"></script>
<script src="../js/main.js"></script>
</body>
</html>