blob: c0fda5a57bdb38924ca3cab2f10b42fd73e5f1cb [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Apache TomEE</title>
<meta name="description" content="Apache TomEE">
<meta name="author" content="Apache TomEE">
<meta name="google-translate-customization" content="f36a520c08f4c9-0a04e86a9c075ce9-g265f3196f697cf8f-10">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
<meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate, max-age=0">
<!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- Le styles -->
<link href="./resources/css/bootstrap.css" rel="stylesheet">
<link href="./resources/css/prettify.css" rel="stylesheet">
<!--link href="./resources/css/bootstrap-mods.css" rel="stylesheet"-->
<link href="./resources/css/main.css" rel="stylesheet">
<link href="./resources/font-awesome-4.6.3/css/font-awesome.min.css" rel="stylesheet">
<script type="text/javascript">
var t = encodeURIComponent(document.title.replace(/^\s+|\s+$/g,""));
var u = encodeURIComponent(""+document.URL);
function fbshare () {
window.open(
"http://www.facebook.com/sharer/sharer.php?u="+u,
'Share on Facebook',
'width=640,height=426');
};
function gpshare () {
window.open(
"https://plus.google.com/share?url="+u,
'Share on Google+',
'width=584,height=385');
};
function twshare () {
window.open(
"https://twitter.com/intent/tweet?url="+u+"&text="+t,
'Share on Twitter',
'width=800,height=526');
};
function pinshare () {
window.open("//www.pinterest.com/pin/create/button/?url="+u+"&media=http%3A%2F%2Ftomee.apache.org%2Fresources%2Fimages%2Ffeather-logo.png&description="+t,
'Share on Pinterest',
'width=800,height=526');
};
</script>
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="./favicon.ico">
<link rel="apple-touch-icon" href="./resources/images/apple-touch-icon.png">
<link rel="apple-touch-icon" sizes="72x72" href="./resources/images/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="114x114" href="./resources/images/apple-touch-icon-114x114.png">
<script src="./resources/js/prettify.js" type="text/javascript"></script>
<script src="./resources/js/jquery-latest.js"></script>
<script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
<script src="./resources/js/common.js"></script>
<script src="./resources/js/prettyprint.js"></script>
<!--script src="//assets.pinterest.com/js/pinit.js" type="text/javascript" async></script//-->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-2717626-1']);
_gaq.push(['_setDomainName', 'apache.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<div class="topbar" data-dropdown="dropdown">
<div class="fill">
<div class="container">
<a class="brand" href="./index.html">Apache TomEE</a>
<ul class="nav">
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
Apache
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<!-- <li><a href="./misc/whoweare.html">Who we are?</a></li> -->
<!-- <li><a href="./misc/heritage.html">Heritage</a></li> -->
<li><a href="http://www.apache.org">Apache Home</a></li>
<!-- <li><a href="./misc/resources.html">Resources</a></li> -->
<li><a href="./misc/contact.html">Contact</a></li>
<li><a href="./misc/legal.html">Legal</a></li>
<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
<li class="divider"/>
<li><a href="http://www.apache.org/security">Security</a></li>
</ul>
</li>
<li><a href="./index.html">Home</a></li>
<li><a href="./downloads.html">Downloads</a></li>
<li><a href="./documentation.html">Documentation</a></li>
<li><a href="./examples-trunk/index.html">Examples</a></li>
<li><a href="./support.html">Support</a></li>
<li><a href="./contribute.html">Contribute</a></li>
<li><a href="./security/index.html">Security</a></li>
</ul>
<!-- Google CSE Search Box Begins -->
<FORM class="pull-right" id="searchbox_010475492895890475512:_t4iqjrgx90" action="http://www.google.com/cse">
<INPUT type="hidden" name="cx" value="010475492895890475512:_t4iqjrgx90">
<INPUT type="hidden" name="cof" value="FORID:0">
<INPUT size="18" width="130" style="width:130px" name="q" type="text" placeholder="Search">
</FORM>
<!--<SCRIPT type="text/javascript" src="http://www.google.com/coop/cse/brand?form=searchbox_010475492895890475512:_t4iqjrgx90"></SCRIPT>-->
<!-- Google CSE Search Box Ends -->
</div>
</div>
</div>
<div class="container">
<div class="page-header">
<small><a href="./index.html">Home</a></small><br>
<h1>Apache TomEE
<div style="float: right; position: relative; bottom: -10px; ">
<a onclick="javascript:gpshare()" class="gp-share sprite" title="Share on Google+">share [gp]</a>
<a onclick="javascript:fbshare()" class="fb-share sprite" title="Share on Facebook">share [fb]</a>
<a onclick="javascript:twshare()" class="tw-share sprite" title="Share on Twitter">share [tw]</a>
<a onclick="javascript:pinshare()" class="pin-share sprite" title="Share on Pinterest">share [pin]</a>
<a data-toggle="modal" href="#edit" class="edit-page" title="Contribute to this Page">contribute</a>
</div>
</h1>
</div>
<p>Apache TomEE, pronounced "Tommy", is an all-Apache Java EE 6 Web Profile certified stack where Apache Tomcat is top dog. Apache TomEE is assembled from a vanilla Apache Tomcat zip file. We start with Apache Tomcat, add our jars and zip up the rest. The result is Tomcat with added EE features - TomEE.</p>
<p><a class="btn primary large" href="downloads.html">Download Apache TomEE Now &raquo;</a>&nbsp; and <a href="documentation.html">get started today!</a></p>
<h2>TomEE</h2>
<p><div class="row"><div class="span6"></p>
<p>The Web Profile version of TomEE contains</p>
<ul>
<li><strong>CDI</strong> - Apache OpenWebBeans</li>
<li><strong>EJB</strong> - Apache OpenEJB</li>
<li><strong>JPA</strong> - Apache OpenJPA</li>
<li><strong>JSF</strong> - Apache MyFaces</li>
<li><strong>JSP</strong> - Apache Tomcat</li>
<li><strong>JSTL</strong> - Apache Tomcat</li>
<li><strong>JTA</strong> - Apache Geronimo Transaction</li>
<li><strong>Servlet</strong> - Apache Tomcat</li>
<li><strong>Javamail</strong> - Apache Geronimo JavaMail</li>
<li><strong>Bean Validation</strong> - Apache BVal</li>
</ul>
<h2>TomEE+</h2>
<p>The TomEE Plus distribution adds the following:</p>
<ul>
<li><strong>JAX-RS</strong> - Apache CXF</li>
<li><strong>JAX-WS</strong> - Apache CXF</li>
<li><strong>JMS</strong> - Apache ActiveMQ</li>
<li><strong>Connector</strong> - Apache Geronimo Connector
</div></li>
</ul>
<div class="span5" style="float:right; width:350px" width="350px">
<img src="resources/images/microprofile.png" alt="Microprofile" style="float:left; margin-right:5px;">
<p style="font-size:13px;line-height:18px;">Microprofile is an open forum to optimize Enterprise Java for a microservices architecture by innovating across multiple implementations and collaborating on common areas of interest with a goal of standardization. TomEE is actively participating in this effort, and would welcome help from the community in moving this process forward.</p>
<p><a class="btn primary"target="_blank" href="http://microprofile.io/">Find out more</a></p>
</div>
<div class="span5" style="float:right; width:350px" width="350px">
<img src="resources/images/Geek-Choice-Awards-App-Server-100x100-black.png" alt="Geeks Choice Award" style="float:left; margin-right:5px">
<p style="font-size:13px;line-height:18px;">RebelLabs released an annual study with awards to recognize Geeky Excellence for 2014. Tomcat and TomEE were named as one of the 10 Geek Choice Awards winner. For a complete list of winners, check out the report <a target="_blank" href="http://zeroturnaround.com/rebellabs/10-kick-ass-technologies-modern-developers-love/">"10 Kick-Ass Technologies Modern Developers Love"</a>.</p>
<p><a class="btn primary"target="_blank" href="http://zeroturnaround.com/rebellabs/10-kick-ass-technologies-modern-developers-love/10/">Read the Report</a></p>
</div>
<p><div class="span10"><div class="hero-unit">
<iframe width="460" height="264" src="http://www.youtube.com/embed/eCrtoSTZ2RE" frameborder="0" allowfullscreen></iframe></div></div></div></p>
<h1>Our Goal</h1>
<p>Simple, get much more from Apache Tomcat, yet without giving anything up.</p>
<h1>Principles</h1>
<p>Some core principles guide the integration:</p>
<ul>
<li>Don't mess with Tomcat - Just take it as it comes and extend it</li>
<li>Keep it as simple as possible for the end user</li>
<li>Avoid architectural overhead - It should just run existing applications out of the box</li>
</ul>
<p>The desire to beef-up Tomcat installations has persisted despite the existence of full-profile application servers,
many of which actually include Tomcat in some truncated or stripped-down form.
TomEE strives to fill this gap.</p>
<h1>Under the Covers</h1>
<p>Apache TomEE is assembled from a vanilla Apache Tomcat official distribution.
No picking and choosing individual parts of Tomcat and building a "new" server
leveraging Tomcat. We start with Tomcat, add our jars and configuration and zip up the rest.
The result is Tomcat with added EE features, TomEE.</p>
<p>Tomcat provides plenty of hooks for filling out parts of its lifecycle. We
leverage them all to fill the gaps. The result is a whole lotta sharing!</p>
<p>Servlets now get access to JPA and Transactions, EJBs get access to Tomcat
provided Security. Any Tomcat provided resources, say from a context.xml,
can be looked up or injected by <em>any</em> managed component in the system.</p>
<h1>Keep it Tight, Keep it Simple</h1>
<p>There's a definite "less is more" philosophy in Apache TomEE. It's too
easy to go too far when developing an app server. The result is usually a
slow to start, memory hogging, beast. We're not here to create an ultra
flexible, super powerful, infinitely composable, be anything to anyone
platform. We're here to deliver Java EE 6 Web Profile in the simplest way
possible.</p>
<p>If you were to imagine taking a plain Tomcat install and integrating the
missing components in the most direct and to-the-point style possible,
you'd end up with TomEE. The result speaks for itself:</p>
<ul>
<li>Runs without any additional memory requirements</li>
<li>Compatible with most Tomcat-aware tools</li>
<li>Compatible with Tomcat-tested apps</li>
</ul>
<h1>History</h1>
<p>In Apache TomEE's previous life, it was simply known as the OpenEJB+Tomcat
integration. That description was always quite misleading. For one,
there's incredible benefit even if EJB is never used.</p>
<p>Quite simply, EJB as a technology integrates with the most number of specs
than any other spec. It touches JMS, Web Services, Connectors, Servlets
(EJB Web Services are still driven by Servlets!), JPA, JDBC, Transactions,
Security. Integrating with all these technologies takes time and expertise
and in the end has very little to do with EJB specifically. To apply this
all to Tomcat and leverage it all from a simple Servlet is a natural
extension and the reason most app servers started out as EJB servers.</p>
<p>Whereas most app servers pluck Tomcat out of its environment, Apache
OpenEJB has always existed as an embeddable container focused on being as
tiny and invisible as possible. The natural extension of this is to embed
the "EE" into Tomcat, rather than the other way around.</p>
<p>But in the end, it is not about EJB. It's about the other guys: ActiveMQ,
CXF, MyFaces, OpenJPA, OpenWebBeans, and of course Tomcat! So out with
OpenEJB+Tomcat and in with Apache TomEE!</p>
<div id="edit" class="modal hide fade in" style="display: none; ">
<div class="modal-header">
<a class="close" data-dismiss="modal">x</a>
<h3>Thank you for contributing to the documentation!</h3>
</div>
<div class="modal-body">
<h4>Any help with the documentation is greatly appreciated.</h4>
<p>All edits are reviewed before going live, so feel free to do much more than fix typos or links. If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it. Don't be surprised if we like it so much we ask you for help with other pages :)</p>
<small>NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.</small>
<!--[if gt IE 6]>
<h4>Internet Explorer Users</h4>
<p>If you are not an Apache committer, click the Yes link and enter a <i>anonymous</i> for the username and leave the password empty</p>
<![endif]-->
</div>
<div class="modal-footer">
Do you have an Apache ID?
<a href="javascript:void(location.href='https://cms.apache.org/redirect?uri='+escape(location.href))" class="btn">Yes</a>
<a href="javascript:void(location.href='https://anonymous:@cms.apache.org/redirect?uri='+escape(location.href))" class="btn">No</a>
</div>
</div>
<script src="./resources/js/bootstrap-modal.js"></script>
<footer>
<p>Copyright &copy; 1999-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation.
All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
</footer>
</div> <!-- /container -->
<!-- Javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="./resources/js/bootstrap-dropdown.js"></script>
</body>
</html>