You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by bu...@apache.org on 2013/06/09 11:26:33 UTC

svn commit: r864998 [8/15] - in /websites/staging/deltaspike/trunk/content: ./ deltaspike/ deltaspike/draft/ deltaspike/resources/ draft/ resources/ resources/css/ resources/files/ resources/images/ resources/js/

Added: websites/staging/deltaspike/trunk/content/draft/index2.html
==============================================================================
--- websites/staging/deltaspike/trunk/content/draft/index2.html (added)
+++ websites/staging/deltaspike/trunk/content/draft/index2.html Sun Jun  9 09:26:31 2013
@@ -0,0 +1,127 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="description" content="deltaspike-generate-pages">
+    <meta name="author" content="chm">
+
+    <title>Apache DeltaSpike - Welcome to Apache DeltaSpike!</title>
+
+    
+
+    
+    
+
+    <!-- Styles -->
+    
+    <link href="./../deltaspike/resources/css/bootstrap.css" rel="stylesheet">    
+    <!--<link href="./../deltaspike/resources/css/prettify.css" rel="stylesheet" /> -->
+    <link href="./../deltaspike/resources/css/codehilite.css" rel="stylesheet" />
+    <link href="./../deltaspike/resources/css/bootstrap-responsive.css" rel="stylesheet">
+    <style type="text/css">
+        body {
+            padding-top: 60px;
+            padding-bottom: 40px;
+        }
+    </style>
+	<script type="text/javascript">
+
+	  var _gaq = _gaq || [];
+	  _gaq.push(['_setAccount', 'UA-36103647-1']);
+	  _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="navbar navbar-fixed-top">
+        <div class="navbar-inner">
+            <div class="container">
+                <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+                    <span class="icon-bar"></span>
+                    <span class="icon-bar"></span>
+                    <span class="icon-bar"></span>
+                </a>
+                <a class="brand" href="index.html"><img src="./../deltaspike/resources/images/deltaspike-logo-medium.png"/></a>
+                <div class="nav-collapse">
+                    <ul class="nav">
+                        <li class="active"><a href="./../deltaspike/index.html">Home</a></li>
+                        <li><a href="./../deltaspike/documentation.html">Documentation</a></li>
+                        <li><a href="./../deltaspike/source.html">Source</a></li>
+                        <!-- <li><a href="./../deltaspike/download.html">Download</a></li> -->
+                        <li><a href="./../deltaspike/community.html">Community</a></li>
+                        <!-- <li><a href="./../deltaspike/support.html">Support</a></li>  -->
+                        <li><a href="./../deltaspike/news.html">News</a></li>
+                        <li><a href="./../deltaspike/migration-guide.html">Migration</a></li>
+                    </ul>
+                </div><!--/.nav-collapse -->
+                <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+                    <input value="incubator.apache.org/deltaspike" name="sitesearch" type="hidden"/>
+                    <input class="search-query" name="q" id="query" type="text" />
+                </form>
+            </div>
+        </div>
+    </div>
+
+    <div class="container">
+      <div class="row">
+          <div class="span12">
+              <div class="page-title">
+                <h1>Welcome to Apache DeltaSpike!</h1>
+              </div>
+              <p>DeltaSpike consist of a number of portable CDI extensions that provide useful features
+for Java application developers.</p>
+<h2 id="goals">Goals</h2>
+<p>The goal of DeltaSpike is to create a de-facto standard of CDI-Extensions that is 
+developed and maintained by a wealthy community. </p>
+<h2 id="portability">Portability</h2>
+<p>We will also ensure true portability! We are testing DeltaSpike on different CDI implementations like 
+Apache OpenWebBeans and JBoss Weld, and also on different Java EE servers like 
+Apache Tomcat and TomEE, JBoss-AS7, Oracle GlassFish 3.1+, IBM Websphere 8.x, 
+Oracle Weblogic Server 12c, Jetty, and others.</p>
+<h2 id="community">Community</h2>
+<p>For creating Apache DeltaSpike, we got many features contributed by 
+existing portable CDI extensions like Apache MyFaces CODI, JBoss Seam3 and
+many others. Together they now form the base for the features of DeltaSpike.</p>
+          </div>
+      </div>
+
+      <hr>
+
+      <footer>
+        <p>Copyright © 20011-2012 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
+        <p>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
+      </footer>
+
+    </div> <!-- /container -->
+
+    <!-- Javascript
+    ================================================== -->
+    <!-- Placed at the end of the document so the pages load faster -->
+    <!--<script src="./../deltaspike/resources/js/prettyfy.js"></script> -->
+    <script src="./../deltaspike/resources/js/prettyprint.js"></script>
+    <script src="./../deltaspike/resources/js/jquery.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-transition.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-alert.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-modal.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-dropdown.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-scrollspy.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-tab.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-tooltip.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-popover.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-button.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-collapse.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-carousel.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-typeahead.js"></script>
+
+</body>
+</html>
\ No newline at end of file

Added: websites/staging/deltaspike/trunk/content/draft/se-features-ranking.html
==============================================================================
--- websites/staging/deltaspike/trunk/content/draft/se-features-ranking.html (added)
+++ websites/staging/deltaspike/trunk/content/draft/se-features-ranking.html Sun Jun  9 09:26:31 2013
@@ -0,0 +1,221 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="description" content="deltaspike-generate-pages">
+    <meta name="author" content="chm">
+
+    <title>Apache DeltaSpike - Features for JavaSE</title>
+
+    
+
+    
+    <!-- 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 &quot;License&quot;); 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 &quot;AS IS&quot; 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. -->
+
+    <!-- Styles -->
+    
+    <link href="./../deltaspike/resources/css/bootstrap.css" rel="stylesheet">    
+    <!--<link href="./../deltaspike/resources/css/prettify.css" rel="stylesheet" /> -->
+    <link href="./../deltaspike/resources/css/codehilite.css" rel="stylesheet" />
+    <link href="./../deltaspike/resources/css/bootstrap-responsive.css" rel="stylesheet">
+    <style type="text/css">
+        body {
+            padding-top: 60px;
+            padding-bottom: 40px;
+        }
+    </style>
+	<script type="text/javascript">
+
+	  var _gaq = _gaq || [];
+	  _gaq.push(['_setAccount', 'UA-36103647-1']);
+	  _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="navbar navbar-fixed-top">
+        <div class="navbar-inner">
+            <div class="container">
+                <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+                    <span class="icon-bar"></span>
+                    <span class="icon-bar"></span>
+                    <span class="icon-bar"></span>
+                </a>
+                <a class="brand" href="index.html"><img src="./../deltaspike/resources/images/deltaspike-logo-medium.png"/></a>
+                <div class="nav-collapse">
+                    <ul class="nav">
+                        <li class="active"><a href="./../deltaspike/index.html">Home</a></li>
+                        <li><a href="./../deltaspike/documentation.html">Documentation</a></li>
+                        <li><a href="./../deltaspike/source.html">Source</a></li>
+                        <!-- <li><a href="./../deltaspike/download.html">Download</a></li> -->
+                        <li><a href="./../deltaspike/community.html">Community</a></li>
+                        <!-- <li><a href="./../deltaspike/support.html">Support</a></li>  -->
+                        <li><a href="./../deltaspike/news.html">News</a></li>
+                        <li><a href="./../deltaspike/migration-guide.html">Migration</a></li>
+                    </ul>
+                </div><!--/.nav-collapse -->
+                <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+                    <input value="incubator.apache.org/deltaspike" name="sitesearch" type="hidden"/>
+                    <input class="search-query" name="q" id="query" type="text" />
+                </form>
+            </div>
+        </div>
+    </div>
+
+    <div class="container">
+      <div class="row">
+          <div class="span12">
+              <div class="page-title">
+                <h1>Features for JavaSE</h1>
+              </div>
+              <p>This page is a starting point for the discussions to merge features of MyFaces CODI and Seam3. This page just ranks <em>features which are available for JavaSE applications</em> and the only dependency is the API of CDI.</p>
+<p>The donating teams list <em>all</em> features of the corresponding code-base and rank them based on the priority for DeltaSpike (priority: 1...low - 10...high).
+In the 2nd column place a 'y' if a feature is important but the concept should be changed a bit for DeltaSpike. Placing a 'n' doesn't mean that the implementation won't change - it's just about the basic concept.
+A team places a 'x' in the 4th column of the other project, if there are basic objections about the <em>concept</em> itself.
+The ranking as well as the objections will be discussed on the dev list.</p>
+<p>This list does also contain a few Utils methods which will most times be of public interest and thus be served in the +api+ modules.</p>
+<h1 id="myfaces-codi-feature-ranking">MyFaces CODI feature ranking</h1>
+<h2 id="core">Core</h2>
+<p>|| Feature || "Requires" concept changes || Ranking || Objections || Discussion finished
+| BeanManagerProvider | n | 10 | | (+) |
+| ProjectStage | n | 10 | | (+) |
+| Deactivatable | n | 10 | |  (+) |
+| ProjectStageActivated | n | 10 | | (+) |
+| ExpressionActivated | n | 10 | | (+) |
+| ClassloaderUtils | y (needs tweaking: collection of ClassLoader related standard java stuff) | 10 |
+| CodiConfig | n (we can remove the workarounds we introduced for weld &lt; v1.1.4). Code must get cleaned up and reviewed. | 9 | | (+) |
+| ServiceProvider | y (use the version of owb instead) | 9 | | (+) |
+| AccessDecisionVoter | postponed | 9 |
+| @Secured | postponed ( y) | 9 |
+| Logger | postponed | 8 | we should generally discuss if CDI Loggers are useful. |
+| Startup logging of module config | postponed | 8 |
+| @InvocationOrder | postponed | 7 |
+| ClassDeactivator | y | 7 | | (+) |
+| StartupEventBroadcaster | postponed | 7 |
+| ...resource. * | postponed | 6 |
+| StartupEvent | postponed ( y) | 5 |
+| BeanNames | n | 3 | | (+) |
+| @Advanced | postponed ( y) | 2 |
+| @Enhanced | postponed ( y) | 2 |
+| Aggregatable | y | 2 | | (+)
+| DefaultAnnotation | n | overlap | | (+) (will be continued at AnnotationInstanceProvider) |
+| rest of ...config.* | postponed |
+| ViewNavigationHandler | postponed |
+| ...scope.* | postponed |</p>
+<p>You can find details at:
+ * [https://cwiki.apache.org/confluence/display/EXTCDI/Core+Usage]
+ * [https://cwiki.apache.org/confluence/display/EXTCDI/Core+Config+and+SPI]
+ * [https://cwiki.apache.org/confluence/display/EXTCDI/Core+DevDoc]</p>
+<h2 id="i18n-module">I18n Module</h2>
+<p>|| Feature || "Requires" concept changes || Ranking || Objections ||</p>
+<p>(discussion postponed)</p>
+<h1 id="seam3-feature-ranking">Seam3 feature ranking</h1>
+<h2 id="solder">Solder</h2>
+<p>|| Feature || "Requires" changes || Ranking || Objections || Discussion finished ||
+| [@Veto|https://github.com/seam/solder/blob/develop/api/src/main/java/org/jboss/solder/core/Veto.java] | n | 10 | | (+) |
+| [@Requires|https://github.com/seam/solder/blob/develop/api/src/main/java/org/jboss/solder/core/Requires.java] | y clean up, possibly rework for OWB. | 10 | x (behaviour non-spec conform; doesn't work with OWB and Resin)| (+) |
+| [javax.enterprise.inject.spi.Bean metadata implementations / utils|https://github.com/seam/solder/tree/develop/impl/src/main/java/org/jboss/solder/bean] | y(@DefaultBean is only needed for some CDI-1.0 containers if BDA is enabled - should get moved into an own jar) | 10 | | (+) / (-) still more to talk about
+| [Reflection utilities|https://github.com/seam/solder/tree/develop/api/src/main/java/org/jboss/solder/reflection] | n | 9 | I think we could consolidate things a bit with what's in MyFaces CODI |
+| [Properties|https://github.com/seam/solder/tree/develop/impl/src/main/java/org/jboss/solder/properties] | n | 7 |
+| [Logging|https://github.com/seam/solder/tree/develop/api/src/main/java/org/jboss/solder/logging] | n - probably need more impls | 7 | Currently based on JBoss logging, need to investigate changing to some other logging API (slf4j?).  Provides typesafe logging feature, which is important. |
+| [Unwrap|https://github.com/seam/solder/tree/develop/api/src/main/java/org/jboss/solder/unwraps] | n | 5 |
+| [ServiceHandler|https://github.com/seam/solder/tree/develop/api/src/main/java/org/jboss/solder/serviceHandler] | n - We've talked about doing a Binding approach though like interceptors | 5 |
+| [@System|https://github.com/seam/solder/blob/develop/api/src/main/java/org/jboss/solder/core/System.java] | n Could be part of resources | 4 |
+| [ResourceLoader|https://github.com/seam/solder/tree/develop/api/src/main/java/org/jboss/solder/resourceLoader] | n | 4 |
+| [@Exact|https://github.com/seam/solder/blob/develop/api/src/main/java/org/jboss/solder/core/Exact.java] | n | 3 |
+| [Messages &amp; i18n|https://github.com/seam/solder/tree/develop/api/src/main/java/org/jboss/solder/messages] | postponed | 3 |
+| [@FullyQualified|https://github.com/seam/solder/blob/develop/api/src/main/java/org/jboss/solder/core/FullyQualified.java] | n | 2 |
+| [@ExtensionManaged|https://github.com/seam/solder/blob/develop/api/src/main/java/org/jboss/solder/core/ExtensionManaged.java] | n | 2 |
+| [VersionLoggerUtil|https://github.com/seam/solder/blob/develop/api/src/main/java/org/jboss/solder/core/VersionLoggerUtil.java] | n | 2 |
+| [Generic Beans|https://github.com/seam/solder/tree/develop/impl/src/main/java/org/jboss/solder/bean/generic] | y - need a better impl for hierarchical servers | up for debate |</p>
+<p>[Solder documentation|http://docs.jboss.org/seam/3/latest/reference/en-US/html/pt01.html] not everything is completely documented as well as it ought to be :-( but between that and the links to the source should be enough.</p>
+<h3 id="non-core-solder-parts">Non Core Solder Parts</h3>
+<p>|| Feature || "Requires" changes || Ranking || Objections ||
+| Seam Config both xml and possible Java based \ | n | 10 |
+| [Seam Catch|https://github.com/seam/solder/tree/develop/api/src/main/java/org/jboss/solder/exception] | n | 9 |
+\</p>
+<h1 id="misc">Misc</h1>
+<h2 id="interdyn">InterDyn</h2>
+<p>see https://github.com/struberg/InterDyn</p>
+<h1 id="approved-features-of-myfaces-codi-for-deltaspike">Approved features of MyFaces CODI for DeltaSpike</h1>
+<h2 id="core_1">Core</h2>
+<p>|| Feature || Comment || Initial impl. finished || Tests finished || JavaDoc finished || Documentation finished || Review finished
+| BeanManagerProvider | we move the util methods to BeanProvider | (+) | (+) | (+) | (+) | (+) |
+| BeanProvider | | (+) | (+) | (+) | (+) | (+) |
+| ProjectStage | | (+) | (+) | (+) | (+) | (+) |
+| Deactivatable | | (+) | (+) | (+) | (+) | (+) |
+| ProjectStageActivated | see Exclude | - | - | - | - | - |
+| ExpressionActivated | see Exclude | - | - | - | - | - |</p>
+<h1 id="approved-features-of-seam3-for-deltaspike">Approved features of Seam3 for DeltaSpike</h1>
+<h2 id="solder_1">Solder</h2>
+<table>
+<thead>
+<tr>
+<th></th>
+<th>Feature</th>
+<th></th>
+<th>Comment</th>
+<th></th>
+<th>Initial impl. finished</th>
+<th></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>Veto</td>
+<td>see Exclude</td>
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td>-</td>
+</tr>
+</tbody>
+</table>
+<h1 id="new-and-approved-deltaspike-features">New and approved DeltaSpike features</h1>
+<h2 id="core_2">Core</h2>
+<p>|| Feature || Comment || Initial impl. finished || Tests finished || JavaDoc finished || Documentation finished || Review finished
+| Exclude | further discussions about the naming are needed.) | (+) | (+) | (-) | (+) | (-) |</p>
+          </div>
+      </div>
+
+      <hr>
+
+      <footer>
+        <p>Copyright © 20011-2012 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
+        <p>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
+      </footer>
+
+    </div> <!-- /container -->
+
+    <!-- Javascript
+    ================================================== -->
+    <!-- Placed at the end of the document so the pages load faster -->
+    <!--<script src="./../deltaspike/resources/js/prettyfy.js"></script> -->
+    <script src="./../deltaspike/resources/js/prettyprint.js"></script>
+    <script src="./../deltaspike/resources/js/jquery.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-transition.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-alert.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-modal.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-dropdown.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-scrollspy.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-tab.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-tooltip.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-popover.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-button.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-collapse.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-carousel.js"></script>
+    <script src="./../deltaspike/resources/js/bootstrap-typeahead.js"></script>
+
+</body>
+</html>
\ No newline at end of file

Added: websites/staging/deltaspike/trunk/content/examples.html
==============================================================================
--- websites/staging/deltaspike/trunk/content/examples.html (added)
+++ websites/staging/deltaspike/trunk/content/examples.html Sun Jun  9 09:26:31 2013
@@ -0,0 +1,122 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="description" content="deltaspike-generate-pages">
+    <meta name="author" content="chm">
+
+    <title>Apache DeltaSpike - Examples</title>
+
+    
+
+    
+    <!-- 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 &quot;License&quot;); 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 &quot;AS IS&quot; 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. -->
+
+    <!-- Styles -->
+    
+    <link href="./deltaspike/resources/css/bootstrap.css" rel="stylesheet">    
+    <!--<link href="./deltaspike/resources/css/prettify.css" rel="stylesheet" /> -->
+    <link href="./deltaspike/resources/css/codehilite.css" rel="stylesheet" />
+    <link href="./deltaspike/resources/css/bootstrap-responsive.css" rel="stylesheet">
+    <style type="text/css">
+        body {
+            padding-top: 60px;
+            padding-bottom: 40px;
+        }
+    </style>
+	<script type="text/javascript">
+
+	  var _gaq = _gaq || [];
+	  _gaq.push(['_setAccount', 'UA-36103647-1']);
+	  _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="navbar navbar-fixed-top">
+        <div class="navbar-inner">
+            <div class="container">
+                <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+                    <span class="icon-bar"></span>
+                    <span class="icon-bar"></span>
+                    <span class="icon-bar"></span>
+                </a>
+                <a class="brand" href="index.html"><img src="./deltaspike/resources/images/deltaspike-logo-medium.png"/></a>
+                <div class="nav-collapse">
+                    <ul class="nav">
+                        <li class="active"><a href="./deltaspike/index.html">Home</a></li>
+                        <li><a href="./deltaspike/documentation.html">Documentation</a></li>
+                        <li><a href="./deltaspike/source.html">Source</a></li>
+                        <!-- <li><a href="./deltaspike/download.html">Download</a></li> -->
+                        <li><a href="./deltaspike/community.html">Community</a></li>
+                        <!-- <li><a href="./deltaspike/support.html">Support</a></li>  -->
+                        <li><a href="./deltaspike/news.html">News</a></li>
+                        <li><a href="./deltaspike/migration-guide.html">Migration</a></li>
+                    </ul>
+                </div><!--/.nav-collapse -->
+                <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+                    <input value="incubator.apache.org/deltaspike" name="sitesearch" type="hidden"/>
+                    <input class="search-query" name="q" id="query" type="text" />
+                </form>
+            </div>
+        </div>
+    </div>
+
+    <div class="container">
+      <div class="row">
+          <div class="span12">
+              <div class="page-title">
+                <h1>Examples</h1>
+              </div>
+              <h2 id="1">#1</h2>
+<p>artifact-id: deltaspike-jse-owb-example
+(the shown use-cases also work with <em>Weld</em> - only the bootstrapping of the container is different, because this example is based on Java-SE and therefore outside of an Java-EE(6+) application server.</p>
+<h1 id="external">External</h1>
+<ul>
+<li><a href="https://github.com/confess/confess2012_deltaspike">confess2012_deltaspike</a></li>
+<li><a href="https://github.com/jboss-jdf/jboss-as-quickstart">jboss-as-quickstart (search for
+    <em>deltaspike</em>)</a></li>
+</ul>
+          </div>
+      </div>
+
+      <hr>
+
+      <footer>
+        <p>Copyright © 20011-2012 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
+        <p>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
+      </footer>
+
+    </div> <!-- /container -->
+
+    <!-- Javascript
+    ================================================== -->
+    <!-- Placed at the end of the document so the pages load faster -->
+    <!--<script src="./deltaspike/resources/js/prettyfy.js"></script> -->
+    <script src="./deltaspike/resources/js/prettyprint.js"></script>
+    <script src="./deltaspike/resources/js/jquery.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-transition.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-alert.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-modal.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-dropdown.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-scrollspy.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-tab.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-tooltip.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-popover.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-button.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-collapse.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-carousel.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-typeahead.js"></script>
+
+</body>
+</html>
\ No newline at end of file

Added: websites/staging/deltaspike/trunk/content/exceptions.html
==============================================================================
--- websites/staging/deltaspike/trunk/content/exceptions.html (added)
+++ websites/staging/deltaspike/trunk/content/exceptions.html Sun Jun  9 09:26:31 2013
@@ -0,0 +1,354 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="description" content="deltaspike-generate-pages">
+    <meta name="author" content="chm">
+
+    <title>Apache DeltaSpike - Exception Handling</title>
+
+    
+
+    
+    <!-- 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 &quot;License&quot;); 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 &quot;AS IS&quot; 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. -->
+
+    <!-- Styles -->
+    
+    <link href="./deltaspike/resources/css/bootstrap.css" rel="stylesheet">    
+    <!--<link href="./deltaspike/resources/css/prettify.css" rel="stylesheet" /> -->
+    <link href="./deltaspike/resources/css/codehilite.css" rel="stylesheet" />
+    <link href="./deltaspike/resources/css/bootstrap-responsive.css" rel="stylesheet">
+    <style type="text/css">
+        body {
+            padding-top: 60px;
+            padding-bottom: 40px;
+        }
+    </style>
+	<script type="text/javascript">
+
+	  var _gaq = _gaq || [];
+	  _gaq.push(['_setAccount', 'UA-36103647-1']);
+	  _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="navbar navbar-fixed-top">
+        <div class="navbar-inner">
+            <div class="container">
+                <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+                    <span class="icon-bar"></span>
+                    <span class="icon-bar"></span>
+                    <span class="icon-bar"></span>
+                </a>
+                <a class="brand" href="index.html"><img src="./deltaspike/resources/images/deltaspike-logo-medium.png"/></a>
+                <div class="nav-collapse">
+                    <ul class="nav">
+                        <li class="active"><a href="./deltaspike/index.html">Home</a></li>
+                        <li><a href="./deltaspike/documentation.html">Documentation</a></li>
+                        <li><a href="./deltaspike/source.html">Source</a></li>
+                        <!-- <li><a href="./deltaspike/download.html">Download</a></li> -->
+                        <li><a href="./deltaspike/community.html">Community</a></li>
+                        <!-- <li><a href="./deltaspike/support.html">Support</a></li>  -->
+                        <li><a href="./deltaspike/news.html">News</a></li>
+                        <li><a href="./deltaspike/migration-guide.html">Migration</a></li>
+                    </ul>
+                </div><!--/.nav-collapse -->
+                <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+                    <input value="incubator.apache.org/deltaspike" name="sitesearch" type="hidden"/>
+                    <input class="search-query" name="q" id="query" type="text" />
+                </form>
+            </div>
+        </div>
+    </div>
+
+    <div class="container">
+      <div class="row">
+          <div class="span12">
+              <div class="page-title">
+                <h1>Exception Handling</h1>
+              </div>
+              <p>Exception handling in DeltaSpike is based around the CDI eventing model. While
+the implementation of exception handlers may not be the same as a CDI event, and
+the programming model is not exactly the same as specifying a CDI event /
+observer, the concepts are very similar. DeltaSpike makes use of events for many of
+its features. Eventing is actually the only way to start using DeltaSpike's
+exception handling.</p>
+<p>This event is fired either by the application or a DeltaSpike exception handling integration. DeltaSpike then hands the exception off to a
+chain of registered handlers, which deal with the exception appropriately. The use of CDI events to connect
+exceptions to handlers makes this strategy of exception handling non-invasive and minimally coupled to the exception handling
+infrastructure.</p>
+<p>The exception handling process remains mostly transparent to the developer. In most cases, you register an
+exception handler simply by annotating a handler method. Alternatively, you can handle an exception
+programmatically, just as you would observe an event in CDI.</p>
+<h2 id="exception-handling-usage">Exception Handling - Usage</h2>
+<h3 id="eventing-into-the-exception-handling-framework">Eventing into the exception handling framework</h3>
+<p>The entire exception handling process starts with an event. This helps keep your application minimally coupled to
+DeltaSpike, but also allows for further extension.  Exception handling in DeltaSpike is all about letting you take care of
+exceptions the way that makes the most sense for your application. Events provide this delicate balance. Firing the event
+is the main way of starting the exception handling proccess.</p>
+<p>Manually firing an event to use DeltaSpike's exception handling is primarily used in your own try/catch blocks. It's very
+painless and also easy. Let's examine a sample that might exist inside of a simple business logic lookup
+into an inventory database:</p>
+<div class="codehilite"><pre><span class="n">public</span> <span class="n">class</span> <span class="n">InventoryActions</span> <span class="p">{</span>
+  <span class="p">@</span><span class="n">PersistenceContext</span> <span class="n">private</span> <span class="n">EntityManager</span> <span class="n">em</span><span class="p">;</span>
+  <span class="p">@</span><span class="n">Inject</span> <span class="n">private</span> <span class="n">Event</span><span class="o">&lt;</span><span class="n">ExceptionToCatchEvent</span><span class="o">&gt;</span> <span class="n">catchEvent</span><span class="p">;</span>
+
+  <span class="n">public</span> <span class="n">Integer</span> <span class="n">queryForItem</span><span class="p">(</span><span class="n">Item</span> <span class="n">item</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">try</span> <span class="p">{</span>
+      <span class="n">Query</span> <span class="n">q</span> <span class="p">=</span> <span class="n">em</span><span class="p">.</span><span class="n">createQuery</span><span class="p">(</span>&quot;<span class="n">SELECT</span> <span class="nb">i</span> <span class="n">from</span> <span class="n">Item</span> <span class="nb">i</span> <span class="n">where</span> <span class="nb">i</span><span class="p">.</span><span class="n">id</span> <span class="p">=</span> <span class="p">:</span><span class="n">id</span>&quot;<span class="p">);</span>
+      <span class="n">q</span><span class="p">.</span><span class="n">setParameter</span><span class="p">(</span>&quot;<span class="n">id</span>&quot;<span class="p">,</span> <span class="n">item</span><span class="p">.</span><span class="n">getId</span><span class="p">());</span>
+      <span class="k">return</span> <span class="n">q</span><span class="p">.</span><span class="n">getSingleResult</span><span class="p">();</span>
+   <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">PersistenceException</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+     <span class="n">catchEvent</span><span class="p">.</span><span class="n">fire</span><span class="p">(</span><span class="n">new</span> <span class="n">ExceptionToCatchEvent</span><span class="p">(</span><span class="n">e</span><span class="p">));</span>
+   <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>The {{Event}} of generic type {{ExceptionToCatchEvent}} is injected into
+your class for use later within a try/catch block.</p>
+<p>The event is fired with a new instance of {{ExceptionToCatchEvent}} constructed with the
+exception to be handled.</p>
+<h2 id="exception-handlers">Exception handlers</h2>
+<p>As an application developer (i.e., an end user of DeltaSpike's exception handling), you'll be focused on writing exception handlers. An
+exception handler is a method on a CDI bean that is invoked to handle a specific type of exception. Within that
+method, you can implement any logic necessary to handle or respond to the exception.</p>
+<div class="codehilite"><pre><span class="n">If</span> <span class="n">there</span> <span class="n">are</span> <span class="n">no</span> <span class="n">exception</span> <span class="n">handlers</span> <span class="k">for</span> <span class="n">an</span> <span class="n">exception</span><span class="p">,</span> <span class="n">the</span> <span class="n">exception</span> <span class="n">is</span> <span class="n">rethrown</span><span class="p">.</span>
+</pre></div>
+
+
+<p>Given that exception handler beans are CDI beans, they can make use of dependency injection, be scoped, have
+interceptors or decorators and any other functionality available to CDI beans.</p>
+<p>Exception handler methods are designed to follow the syntax and semantics of CDI observers, with some special
+purpose exceptions explained in this guide. The advantage of this design is that exception handlers will be
+immediately familiar to you if you are studying or well-versed in CDI.</p>
+<p>In this and subsequent sections, you'll learn how to define an exception handler, explore how and when it gets invoked, modify
+an exception and a stack trace, and even extend exception handling further through events that are fired during the handling
+workflow.  We'll begin by covering the two annotations that are used to declare an exception handler,
+{{@ExceptionHandler}} and {{@Handles}}, and {{@BeforeHandles}} to create a callback before the handler is called.</p>
+<h3 id="exception-handler-annotations">Exception handler annotations</h3>
+<p>Exception handlers are contained within exception handler beans, which are CDI beans annotated with
+{{@ExceptionHandler}}. Exception handlers are methods which have a parameter which is an
+instance of {{ExceptionEvent<T extends Throwable>}} annotated with the
+{{@Handles}} annotation.</p>
+<h4 id="exceptionhandler">{{@ExceptionHandler}}</h4>
+<p>The {{@ExceptionHandler}} annotation is simply a marker annotation that instructs the DeltaSpike
+exception handling CDI extension to scan the bean for handler methods.</p>
+<p>Let's designate a CDI bean as an exception handler by annotating it with {{@ExceptionHandler}}.</p>
+<div class="codehilite"><pre><span class="p">@</span><span class="n">ExceptionHandler</span>
+<span class="n">public</span> <span class="n">class</span> <span class="n">MyHandlers</span> <span class="p">{}</span>
+</pre></div>
+
+
+<p>That's all there is to it. Now we can begin defining exception handling methods on this bean.</p>
+<h4 id="handles-and-beforehandles">{{@Handles}} and {{@BeforeHandles}}</h4>
+<p>{{@Handles}} is a method parameter annotation that designates a method as an exception
+handler. Exception handler methods are registered on beans annotated with
+{{@ExceptionHandler}}. DeltaSpike will discover all such methods at deployment time.</p>
+<p>Let's look at an example. The following method is invoked for every exception that DeltaSpike processes and
+prints the exception message to stdout. ({{Throwable}} is the base exception type in Java and
+thus represents all exceptions).</p>
+<div class="codehilite"><pre><span class="p">@</span><span class="n">ExceptionHandler</span>
+<span class="n">public</span> <span class="n">class</span> <span class="n">MyHandlers</span>
+<span class="p">{</span>
+   <span class="n">void</span> <span class="n">printExceptions</span><span class="p">(@</span><span class="n">Handles</span> <span class="n">ExceptionEvent</span><span class="o">&lt;</span><span class="n">Throwable</span><span class="o">&gt;</span> <span class="n">evt</span><span class="p">)</span>
+   <span class="p">{</span>
+      <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span>&quot;<span class="n">Something</span> <span class="n">bad</span> <span class="n">happened</span><span class="p">:</span> &quot; <span class="o">+</span>
+            <span class="n">evt</span><span class="p">.</span><span class="n">getException</span><span class="p">().</span><span class="n">getMessage</span><span class="p">());</span>
+      <span class="n">evt</span><span class="p">.</span><span class="n">handleAndContinue</span><span class="p">();</span>
+   <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>The {{@Handles}} annotation on the first parameter designates this method as an
+exception handler (though it is not required to be the first parameter). This parameter must be
+of type {{ExceptionEvent<T extends Throwable>}}, otherwise it's detected as
+a definition error. The type parameter designates which exception the method should handle. This
+method is notified of all exceptions (requested by the base exception type
+{{Throwable}}).</p>
+<p>The {{ExceptionEvent}} instance provides access to information about the exception
+and can be used to control exception handling flow. In this case, it's used to read the current
+exception being handled in the exception chain, as returned by
+{{getException()}}.</p>
+<p>This handler does not modify the invocation of subsequent handlers, as designated by invoking
+{{handleAndContinue()}} on {{ExceptionEvent}}. As this is the default behavior,
+this line could be omitted.</p>
+<p>The {{@Handles}} annotation must be placed on a parameter of the method, which must
+be of type {{ExceptionEvent<T extends Throwable>}}. Handler methods are similar to CDI
+observers and, as such, follow the same principles and guidelines as observers (such as invocation,
+injection of parameters, qualifiers, etc) with the following exceptions:</p>
+<ul>
+<li>a parameter of a handler method must be a {{ExceptionEvent}}</li>
+<li>handlers are ordered before they are invoked (invocation order of observers is non-deterministic)</li>
+<li>any handler can prevent subsequent handlers from being invoked</li>
+</ul>
+<p>In addition to designating a method as exception handler, the {{@Handles}}
+annotation specifies an {{ordinal}} about when the method should be invoked relative to other
+handler methods of the same type. Handlers with higher ordinal are
+invoked before handlers with a lower ordinal that handle the same exception type. The default
+ordinal (if not specified) is 0.</p>
+<p>The {{@BeforeHandles}} designates a method as a callback to happen before handlers are called.</p>
+<p>Let's take a look at more sophisticated example that uses all the features of handlers to log all
+exceptions.</p>
+<div class="codehilite"><pre><span class="p">@</span><span class="n">ExceptionHandler</span>
+<span class="n">public</span> <span class="n">class</span> <span class="n">MyHandlers</span>
+<span class="p">{</span>
+   <span class="n">void</span> <span class="n">logExceptions</span><span class="p">(@</span><span class="n">BeforeHandles</span> <span class="p">@</span><span class="n">WebRequest</span> <span class="n">ExceptionEvent</span><span class="o">&lt;</span><span class="n">Throwable</span><span class="o">&gt;</span> <span class="n">evt</span><span class="p">,</span>
+         <span class="n">Logger</span> <span class="nb">log</span><span class="p">)</span>
+   <span class="p">{</span>
+      <span class="nb">log</span><span class="p">.</span><span class="n">warn</span><span class="p">(</span>&quot;<span class="n">Something</span> <span class="n">bad</span> <span class="n">happened</span><span class="p">:</span> &quot; <span class="o">+</span> <span class="n">evt</span><span class="p">.</span><span class="n">getException</span><span class="p">().</span><span class="n">getMessage</span><span class="p">());</span>
+   <span class="p">}</span>
+
+   <span class="n">void</span> <span class="n">logExceptions</span><span class="p">(@</span><span class="n">Handles</span> <span class="p">@</span><span class="n">WebRequest</span> <span class="n">ExceptionEvent</span><span class="o">&lt;</span><span class="n">Throwable</span><span class="o">&gt;</span> <span class="n">evt</span><span class="p">,</span>
+         <span class="n">Logger</span> <span class="nb">log</span><span class="p">)</span>
+   <span class="p">{</span>
+      <span class="o">//</span> <span class="n">possibly</span> <span class="n">send</span> <span class="n">a</span> <span class="n">HTTP</span> <span class="n">Error</span> <span class="n">code</span>
+   <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>This handler has a default ordinal of 0 (the default value of the ordinal attribute on
+{{@Handles}}).</p>
+<p>This handler is qualified with {{@WebRequest}}. When DeltaSpike calculates the handler
+chain, it filters handlers based on the exception type and qualifiers. This handler will only be
+invoked for exceptions passed to DeltaSpike that carry the {{@WebRequest}} qualifier.
+We'll assume this qualifier distinguishes a web page request from a REST request.</p>
+<p>Any additional parameters of a handler method are treated as injection points. These parameters are
+injected into the handler when it is invoked by DeltaSpike. In this case, we are injecting a
+{{Logger}} bean that must be defined within the application (or by an extension).</p>
+<p>A handler is guaranteed to only be invoked once per exception (automatically muted), unless it re-enables
+itself by invoking the {{unmute()}} method on the {{ExceptionEvent}} instance.</p>
+<p>Handlers must not throw checked exceptions, and should avoid throwing unchecked exceptions. Should a handler
+throw an unchecked exception it will propagate up the stack and all handling done via DeltaSpike will cease. Any
+exception that was being handled will be lost.</p>
+<h2 id="exception-chain-processing">Exception Chain Processing</h2>
+<p>When an exception is thrown, chances are it's nested (wrapped) inside other exceptions. (If you've ever
+examined a server log, you'll appreciate this fact). The collection of exceptions in its entirety is termed an
+exception chain.</p>
+<p>The outermost exception of an exception chain (e.g., EJBException, ServletException, etc) is probably of
+little use to exception handlers. That's why DeltaSpike doesn't simply pass the exception chain directly to
+the exception handlers. Instead, it intelligently unwraps the chain and treats the root exception cause
+as the primary exception.</p>
+<p>The first exception handlers to be invoked by DeltaSpike are those that match the type of root cause. Thus, instead
+of seeing a vague {{EJBException}}, your handlers will instead see an meaningful exception such
+as {{ConstraintViolationException}}.
+<em>This feature, alone, makes DeltaSpike's exception handling a worthwhile tool.</em></p>
+<p>DeltaSpike continues to work through the exception chain, notifying handlers of each exception in the stack,
+until a handler flags the exception as handled or the whole exception chain has been iterated. Once an exception is marked as handled, DeltaSpike stops processing
+the exception chain. If a handler instructs DeltaSpike to rethrow the exception (by invoking
+{{ExceptionEvent#throwOriginal()}}, DeltaSpike will rethrow the exception outside the DeltaSpike exception handling
+infrastructure. Otherwise, it simply returns flow control to the caller.</p>
+<p>Consider a exception chain containing the following nested causes (from outer cause to root cause):</p>
+<ul>
+<li>EJBException</li>
+<li>PersistenceException</li>
+<li>SQLGrammarException</li>
+</ul>
+<p>DeltaSpike will unwrap this exception and notify handlers in the following order:</p>
+<ul>
+<li>SQLGrammarException</li>
+<li>PersistenceException</li>
+<li>EJBException</li>
+</ul>
+<p>If there's a handler for {{PersistenceException}}, it will likely prevent the handlers for
+{{EJBException}} from being invoked, which is a good thing since what useful information can
+really be obtained from {{EJBException}}?</p>
+<h2 id="handler-ordinal">Handler ordinal</h2>
+<p>When DeltaSpike finds more than one handler for the same exception type, it orders the handlers by ordinal.
+Handlers with higher ordinal are executed before handlers with a lower ordinal. If DeltaSpike detects two
+handlers for the same type with the same ordinal, the order is non-deterministic.</p>
+<p>Let's define two handlers with different ordinals:</p>
+<div class="codehilite"><pre><span class="n">void</span> <span class="n">handleIOExceptionFirst</span><span class="p">(@</span><span class="n">Handles</span><span class="p">(</span><span class="n">ordinal</span> <span class="p">=</span> 100<span class="p">)</span> <span class="n">ExceptionEvent</span><span class="o">&lt;</span><span class="n">IOException</span><span class="o">&gt;</span> <span class="n">evt</span><span class="p">)</span>
+<span class="p">{</span>
+   <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span>&quot;<span class="n">Invoked</span> <span class="n">first</span>&quot;<span class="p">);</span>
+<span class="p">}</span>
+
+<span class="n">void</span> <span class="n">handleIOExceptionSecond</span><span class="p">(@</span><span class="n">Handles</span> <span class="n">ExceptionEvent</span><span class="o">&lt;</span><span class="n">IOException</span><span class="o">&gt;</span> <span class="n">evt</span><span class="p">)</span>
+<span class="p">{</span>
+   <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span>&quot;<span class="n">Invoked</span> <span class="n">second</span>&quot;<span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>The first method is invoked first since it has a higher ordinal (100) than the second method, which has
+the default ordinal (0).</p>
+<p>To summarize, here's how DeltaSpike determines the order of handlers to invoke (until a handler marks exception as
+handled):</p>
+<div class="codehilite"><pre><span class="c"># Unwrap exception stack</span>
+<span class="c"># Begin processing root cause</span>
+<span class="c"># Invoke any callback methods annotated with @BeforeHandles for the closest type to the exception</span>
+<span class="c"># Find handler for the closest type to the exception</span>
+<span class="c"># If multiple handlers for same type, invoke handlers with higher ordinal first</span>
+<span class="c"># Continue above steps for each exception in stack</span>
+</pre></div>
+
+
+<h2 id="apis-for-exception-information-and-flow-control">APIs for exception information and flow control</h2>
+<p>There are two APIs provided by DeltaSpike that should be familiar to application developers:</p>
+<ul>
+<li>{{ExceptionEvent}}</li>
+<li>{{ExceptionStackEvent}}</li>
+</ul>
+<h3 id="exceptionevent">ExceptionEvent</h3>
+<p>In addition to providing information about the exception being handled, the
+{{ExceptionEvent}} object contains methods to control the exception handling process, such
+as rethrowing the exception, aborting the handler chain or unmuting the current handler.
+Five methods exist on the {{ExceptionEvent}} object to give flow control to the handler</p>
+<ul>
+<li>{{abort()}} - terminate all handling immediately after this handler, does not mark the exception as handled, does not re-throw the exception.</li>
+<li>{{throwOriginal()}} - continues through all handlers, but once all handlers have been called (assuming another handler does not call abort() or handled()) the initial exception passed to DeltaSpike is rethrown. Does not mark the exception as handled.</li>
+<li>{{handled()}} - marks the exception as handled and terminates further handling.</li>
+<li>{{handleAndContinue()}} - default. Marks the exception as handled and proceeds with the rest of the handlers.</li>
+<li>{{skipCause()}} - marks the exception as handled, but proceeds to the next cause in the cause container, without calling other handlers for the current cause.</li>
+<li>{{rethrow(Throwable)}} - Throw a new exception after this handler is invoked</li>
+</ul>
+<p>Once a handler is invoked it is muted, meaning it will not be run again for that exception chain,
+unless it's explicitly marked as unmuted via the {{unmute()}} method on
+{{ExceptionEvent}}.</p>
+          </div>
+      </div>
+
+      <hr>
+
+      <footer>
+        <p>Copyright © 20011-2012 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
+        <p>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
+      </footer>
+
+    </div> <!-- /container -->
+
+    <!-- Javascript
+    ================================================== -->
+    <!-- Placed at the end of the document so the pages load faster -->
+    <!--<script src="./deltaspike/resources/js/prettyfy.js"></script> -->
+    <script src="./deltaspike/resources/js/prettyprint.js"></script>
+    <script src="./deltaspike/resources/js/jquery.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-transition.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-alert.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-modal.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-dropdown.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-scrollspy.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-tab.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-tooltip.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-popover.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-button.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-collapse.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-carousel.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-typeahead.js"></script>
+
+</body>
+</html>
\ No newline at end of file

Added: websites/staging/deltaspike/trunk/content/index.html
==============================================================================
--- websites/staging/deltaspike/trunk/content/index.html (added)
+++ websites/staging/deltaspike/trunk/content/index.html Sun Jun  9 09:26:31 2013
@@ -0,0 +1,32 @@
+{% extends "deltaspike-markdown.html" %}
+
+
+{% block title %}Apache DeltaSpike{% endblock %}
+{% block content %}
+
+        <!-- Main hero unit for a primary marketing message or call to action -->
+        <div class="hero-unit">
+            <p>Some logos ideas</p>
+            <img src="resources/images/deltaspike-logo.png"/><p></p>
+            <img src="resources/images/deltaspike-3words.png"/><p></p>
+            <img src="resources/images/ds-logo.png" width="350" height="250"/><p></p>
+            <p>DeltaSpike consist of a number of portable CDI extensions that provide useful features for Java application developers.</p>
+            <p>We will also ensure true portability! We are testing DeltaSpike on different CDI implementations like Apache OpenWebBeans and JBoss Weld, and also on different Java EE servers like Apache Tomcat and TomEE, JBoss-AS7, Oracle GlassFish 3.1+, IBM Websphere 8.x, Oracle Weblogic Server 12c, Jetty, and others.</p>
+            <!-- <p><a class="btn btn-primary btn-large">Learn more »</a></p> -->
+        </div>
+
+        <!-- Example row of columns -->
+        <div class="row">
+            <div class="span6">
+                <h2>Modules</h2>
+                <p>CDI extensions created by the Apache DeltaSpike community are packaged as modules. They offer additional functionality not provided out of the box by the CDI spec (Security, JPA, ...) </p>
+                <p><a class="btn" href="documentation.html#module-overview">View details »</a></p>
+            </div>
+            <div class="span6">
+                <h2>Examples</h2>
+                <p>See the following examples which are part of the project to discover how to use DeltaSpike project.</p>
+                <p><a class="btn" href="examples.html#">View details »</a></p>
+            </div>
+        </div>
+
+{% endblock %}
\ No newline at end of file

Added: websites/staging/deltaspike/trunk/content/jpa.html
==============================================================================
--- websites/staging/deltaspike/trunk/content/jpa.html (added)
+++ websites/staging/deltaspike/trunk/content/jpa.html Sun Jun  9 09:26:31 2013
@@ -0,0 +1,406 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="description" content="deltaspike-generate-pages">
+    <meta name="author" content="chm">
+
+    <title>Apache DeltaSpike - JPA Module</title>
+
+    
+
+    
+    <!-- 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 &quot;License&quot;); 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 &quot;AS IS&quot; 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. -->
+
+    <!-- Styles -->
+    
+    <link href="./deltaspike/resources/css/bootstrap.css" rel="stylesheet">    
+    <!--<link href="./deltaspike/resources/css/prettify.css" rel="stylesheet" /> -->
+    <link href="./deltaspike/resources/css/codehilite.css" rel="stylesheet" />
+    <link href="./deltaspike/resources/css/bootstrap-responsive.css" rel="stylesheet">
+    <style type="text/css">
+        body {
+            padding-top: 60px;
+            padding-bottom: 40px;
+        }
+    </style>
+	<script type="text/javascript">
+
+	  var _gaq = _gaq || [];
+	  _gaq.push(['_setAccount', 'UA-36103647-1']);
+	  _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="navbar navbar-fixed-top">
+        <div class="navbar-inner">
+            <div class="container">
+                <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+                    <span class="icon-bar"></span>
+                    <span class="icon-bar"></span>
+                    <span class="icon-bar"></span>
+                </a>
+                <a class="brand" href="index.html"><img src="./deltaspike/resources/images/deltaspike-logo-medium.png"/></a>
+                <div class="nav-collapse">
+                    <ul class="nav">
+                        <li class="active"><a href="./deltaspike/index.html">Home</a></li>
+                        <li><a href="./deltaspike/documentation.html">Documentation</a></li>
+                        <li><a href="./deltaspike/source.html">Source</a></li>
+                        <!-- <li><a href="./deltaspike/download.html">Download</a></li> -->
+                        <li><a href="./deltaspike/community.html">Community</a></li>
+                        <!-- <li><a href="./deltaspike/support.html">Support</a></li>  -->
+                        <li><a href="./deltaspike/news.html">News</a></li>
+                        <li><a href="./deltaspike/migration-guide.html">Migration</a></li>
+                    </ul>
+                </div><!--/.nav-collapse -->
+                <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+                    <input value="incubator.apache.org/deltaspike" name="sitesearch" type="hidden"/>
+                    <input class="search-query" name="q" id="query" type="text" />
+                </form>
+            </div>
+        </div>
+    </div>
+
+    <div class="container">
+      <div class="row">
+          <div class="span12">
+              <div class="page-title">
+                <h1>JPA Module</h1>
+              </div>
+              <div class="toc">
+<ul>
+<li><a href="#transactional">@Transactional</a></li>
+<li><a href="#transactionscoped">@TransactionScoped</a></li>
+<li><a href="#jta-support">JTA Support</a></li>
+</ul>
+</div>
+<hr />
+<h1 id="transactional">@Transactional</h1>
+<p>This annotation is an alternative to transactional EJBs which allows to execute a method within a transaction.
+Before it's possible to start using the annotation, it's required to implement a CDI producer for an <code>EntityManager</code> and it's needed to inject the <code>EntityManager</code> in the bean which uses <code>@Transactional</code>. As shown later on it's also possible to use multiple qualifiers for using different <code>EntityManager</code>s.</p>
+<p><strong>Hint:</strong>
+If you are using features described by this page and the CDI container you are using is Weld (or OpenWebBeans in BDA mode), you have to enable the transaction interceptor in your beans.xml file:</p>
+<div class="codehilite"><pre><span class="nt">&lt;beans&gt;</span>
+    <span class="nt">&lt;interceptors&gt;</span>
+        <span class="nt">&lt;class&gt;</span>org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor<span class="nt">&lt;/class&gt;</span>
+    <span class="nt">&lt;/interceptors&gt;</span>
+<span class="nt">&lt;/beans&gt;</span>
+</pre></div>
+
+
+<p>The following example shows a simple producer for an <code>EntityManager</code> and the corresponding dispose-method.
+Producing it as request scoped bean means that the dispose method will be called on finishing the request.
+As an alternative it's possible to use a special scope called <code>@TransactionScoped</code> provided by the same DeltaSpike module.</p>
+<p>Producer for the default EntityManager:</p>
+<div class="codehilite"><pre><span class="c1">//...</span>
+<span class="kd">public</span> <span class="kd">class</span> <span class="nc">EntityManagerProducer</span>
+<span class="o">{</span>
+    <span class="c1">//or manual bootstrapping</span>
+    <span class="nd">@PersistenceContext</span>
+    <span class="kd">private</span> <span class="n">EntityManager</span> <span class="n">entityManager</span><span class="o">;</span>
+
+    <span class="nd">@Produces</span>
+    <span class="nd">@RequestScoped</span>
+    <span class="kd">protected</span> <span class="n">EntityManager</span> <span class="nf">createEntityManager</span><span class="o">()</span>
+    <span class="o">{</span>
+        <span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="na">entityManager</span><span class="o">;</span>
+    <span class="o">}</span>
+
+    <span class="kd">protected</span> <span class="kt">void</span> <span class="nf">closeEntityManager</span><span class="o">(</span><span class="nd">@Disposes</span> <span class="n">EntityManager</span> <span class="n">entityManager</span><span class="o">)</span>
+    <span class="o">{</span>
+        <span class="k">if</span> <span class="o">(</span><span class="n">entityManager</span><span class="o">.</span><span class="na">isOpen</span><span class="o">())</span>
+        <span class="o">{</span>
+            <span class="n">entityManager</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
+        <span class="o">}</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<p>The following examples show how to use the <code>EntityManager</code> produced by the example above.</p>
+<p>Beans with transactional method:</p>
+<div class="codehilite"><pre><span class="c1">//...</span>
+<span class="kd">public</span> <span class="kd">class</span> <span class="nc">TransactionalBean</span>
+<span class="o">{</span>
+    <span class="nd">@Inject</span>
+    <span class="kd">private</span> <span class="n">EntityManager</span> <span class="n">entityManager</span><span class="o">;</span>
+
+    <span class="nd">@Transactional</span>
+    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">executeInTransaction</span><span class="o">()</span>
+    <span class="o">{</span>
+        <span class="c1">//...</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<p>Simple transactional bean (all methods transactional):</p>
+<div class="codehilite"><pre><span class="c1">//...</span>
+<span class="nd">@Transactional</span>
+<span class="kd">public</span> <span class="kd">class</span> <span class="nc">TransactionalBean</span>
+<span class="o">{</span>
+    <span class="nd">@Inject</span>
+    <span class="kd">private</span> <span class="n">EntityManager</span> <span class="n">entityManager</span><span class="o">;</span>
+
+    <span class="c1">//...</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<p>As illustrated in the following example it's also possible to use <code>@Transactional</code> for stereotypes.</p>
+<p>Stereotype for transactional beans (+ usage):</p>
+<div class="codehilite"><pre><span class="nd">@Stereotype</span>
+<span class="nd">@Transactional</span>
+<span class="nd">@ApplicationScoped</span>
+<span class="kd">public</span> <span class="nd">@interface</span> <span class="n">Repository</span>
+<span class="o">{</span>
+<span class="o">}</span>
+
+<span class="c1">//...</span>
+<span class="nd">@Repository</span>
+<span class="kd">public</span> <span class="kd">class</span> <span class="nc">TransactionalBean</span>
+<span class="o">{</span>
+    <span class="nd">@Inject</span>
+    <span class="kd">private</span> <span class="n">EntityManager</span> <span class="n">entityManager</span><span class="o">;</span>
+
+    <span class="c1">//...</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<p>Besides such simple usages, it's also supported to use qualifiers to access multiple persistence-units in parallel.
+The default qualifier for <code>@Transactional</code> is <code>@Any</code>. Therefore a transaction for every injected entity manager will be started.
+The example afterwards shows how to change this default behaviour.</p>
+<p>Producer for multiple entity managers (+ usage):</p>
+<div class="codehilite"><pre><span class="c1">//...</span>
+<span class="kd">public</span> <span class="kd">class</span> <span class="nc">EntityManagerProducer</span>
+<span class="o">{</span>
+    <span class="nd">@PersistenceContext</span><span class="o">(</span><span class="n">unitName</span> <span class="o">=</span> <span class="s">&quot;firstDB&quot;</span><span class="o">)</span>
+    <span class="kd">private</span> <span class="n">EntityManager</span> <span class="n">firstEntityManager</span><span class="o">;</span>
+
+    <span class="nd">@PersistenceContext</span><span class="o">(</span><span class="n">unitName</span> <span class="o">=</span> <span class="s">&quot;secondDB&quot;</span><span class="o">)</span>
+    <span class="kd">private</span> <span class="n">EntityManager</span> <span class="n">secondEntityManager</span><span class="o">;</span>
+
+    <span class="nd">@Produces</span>
+    <span class="nd">@First</span>
+    <span class="nd">@RequestScoped</span>
+    <span class="kd">protected</span> <span class="n">EntityManager</span> <span class="nf">createFirstEntityManager</span><span class="o">()</span>
+    <span class="o">{</span>
+        <span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="na">firstEntityManager</span><span class="o">;</span>
+    <span class="o">}</span>
+
+    <span class="kd">protected</span> <span class="kt">void</span> <span class="nf">closeFirstEntityManager</span><span class="o">(</span><span class="nd">@Disposes</span> <span class="nd">@First</span> <span class="n">EntityManager</span> <span class="n">entityManager</span><span class="o">)</span>
+    <span class="o">{</span>
+        <span class="k">if</span> <span class="o">(</span><span class="n">entityManager</span><span class="o">.</span><span class="na">isOpen</span><span class="o">())</span>
+        <span class="o">{</span>
+            <span class="n">entityManager</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
+        <span class="o">}</span>
+    <span class="o">}</span>
+
+    <span class="nd">@Produces</span>
+    <span class="nd">@Second</span>
+    <span class="nd">@RequestScoped</span>
+    <span class="kd">protected</span> <span class="n">EntityManager</span> <span class="nf">createSecondEntityManager</span><span class="o">()</span>
+    <span class="o">{</span>
+        <span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="na">secondEntityManager</span><span class="o">;</span>
+    <span class="o">}</span>
+
+    <span class="kd">protected</span> <span class="kt">void</span> <span class="nf">closeSecondEntityManager</span><span class="o">(</span><span class="nd">@Disposes</span> <span class="nd">@Second</span> <span class="n">EntityManager</span> <span class="n">entityManager</span><span class="o">)</span>
+    <span class="o">{</span>
+        <span class="k">if</span> <span class="o">(</span><span class="n">entityManager</span><span class="o">.</span><span class="na">isOpen</span><span class="o">())</span>
+        <span class="o">{</span>
+            <span class="n">entityManager</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
+        <span class="o">}</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+
+<span class="c1">//...</span>
+<span class="kd">public</span> <span class="kd">class</span> <span class="nc">FirstLevelTransactionBean</span>
+<span class="o">{</span>
+    <span class="nd">@Inject</span>
+    <span class="kd">private</span> <span class="nd">@First</span> <span class="n">EntityManager</span> <span class="n">firstEntityManager</span><span class="o">;</span>
+
+    <span class="nd">@Inject</span>
+    <span class="kd">private</span> <span class="n">NestedTransactionBean</span> <span class="n">nestedTransactionBean</span><span class="o">;</span>
+
+    <span class="nd">@Transactional</span>
+    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">executeInTransaction</span><span class="o">()</span>
+    <span class="o">{</span>
+        <span class="c1">//...</span>
+        <span class="k">this</span><span class="o">.</span><span class="na">nestedTransactionBean</span><span class="o">.</span><span class="na">executeInTransaction</span><span class="o">();</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+
+<span class="c1">//...</span>
+<span class="kd">public</span> <span class="kd">class</span> <span class="nc">NestedTransactionBean</span>
+<span class="o">{</span>
+    <span class="nd">@Inject</span>
+    <span class="kd">private</span> <span class="nd">@Second</span> <span class="n">EntityManager</span> <span class="n">secondEntityManager</span><span class="o">;</span>
+
+    <span class="nd">@Transactional</span>
+    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">executeInTransaction</span><span class="o">()</span>
+    <span class="o">{</span>
+        <span class="c1">//...</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<p>The following example shows how to use only the specified <code>EntityManager</code>/s</p>
+<p>Activating entity managers manually:</p>
+<div class="codehilite"><pre><span class="kd">public</span> <span class="kd">class</span> <span class="nc">MultiTransactionBean</span>
+<span class="o">{</span>
+    <span class="nd">@Inject</span>
+    <span class="kd">private</span> <span class="n">EntityManager</span> <span class="n">defaultEntityManager</span><span class="o">;</span>
+
+    <span class="nd">@Inject</span>
+    <span class="kd">private</span> <span class="nd">@First</span> <span class="n">EntityManager</span> <span class="n">firstEntityManager</span><span class="o">;</span>
+
+    <span class="nd">@Inject</span>
+    <span class="kd">private</span> <span class="nd">@Second</span> <span class="n">EntityManager</span> <span class="n">secondEntityManager</span><span class="o">;</span>
+
+    <span class="nd">@Transactional</span><span class="o">(</span><span class="n">qualifier</span> <span class="o">=</span> <span class="n">Default</span><span class="o">.</span><span class="na">class</span><span class="o">)</span>
+    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">executeInDefaultTransaction</span><span class="o">()</span>
+    <span class="o">{</span>
+    <span class="o">}</span>
+
+    <span class="nd">@Transactional</span><span class="o">(</span><span class="n">qualifier</span> <span class="o">=</span> <span class="n">First</span><span class="o">.</span><span class="na">class</span><span class="o">)</span>
+    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">executeInFirstTransaction</span><span class="o">()</span>
+    <span class="o">{</span>
+    <span class="o">}</span>
+
+    <span class="nd">@Transactional</span><span class="o">(</span><span class="n">qualifier</span> <span class="o">=</span> <span class="n">Second</span><span class="o">.</span><span class="na">class</span><span class="o">)</span>
+    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">executeInSecondTransaction</span><span class="o">()</span>
+    <span class="o">{</span>
+    <span class="o">}</span>
+
+    <span class="nd">@Transactional</span><span class="o">(</span><span class="n">qualifier</span> <span class="o">=</span> <span class="o">{</span><span class="n">First</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="n">Second</span><span class="o">.</span><span class="na">class</span><span class="o">})</span>
+    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">executeInFirstAndSecondTransaction</span><span class="o">()</span>
+    <span class="o">{</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<p>All examples also work with nested calls. In the following example the transaction handling is done on the entry point (after FirstLevelTransactionBean#executeInTransaction).</p>
+<p>Joining existing transaction in nested call:</p>
+<div class="codehilite"><pre><span class="c1">//...</span>
+<span class="kd">public</span> <span class="kd">class</span> <span class="nc">FirstLevelTransactionBean</span>
+<span class="o">{</span>
+    <span class="nd">@Inject</span>
+    <span class="kd">private</span> <span class="n">EntityManager</span> <span class="n">entityManager</span><span class="o">;</span>
+
+    <span class="nd">@Inject</span>
+    <span class="kd">private</span> <span class="n">NestedTransactionBean</span> <span class="n">nestedTransactionBean</span><span class="o">;</span>
+
+    <span class="nd">@Transactional</span>
+    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">executeInTransaction</span><span class="o">()</span>
+    <span class="o">{</span>
+        <span class="k">this</span><span class="o">.</span><span class="na">nestedTransactionBean</span><span class="o">.</span><span class="na">executeInTransaction</span><span class="o">();</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+
+<span class="c1">//...</span>
+<span class="kd">public</span> <span class="kd">class</span> <span class="nc">NestedTransactionBean</span>
+<span class="o">{</span>
+    <span class="nd">@Inject</span>
+    <span class="kd">private</span> <span class="n">EntityManager</span> <span class="n">entityManager</span><span class="o">;</span>
+
+    <span class="nd">@Transactional</span>
+    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">executeInTransaction</span><span class="o">()</span>
+    <span class="o">{</span>
+        <span class="c1">//...</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<p>The final transaction handling for all <code>EntityManager</code> s is also done after the outermost transactional method if <code>NestedTransactionBean</code> uses a different <code>EntityManager</code>.
+So it's possible to catch an exception in <code>FirstLevelTransactionBean</code> e.g. to try an optional path instead of an immediate rollback.</p>
+<h1 id="transactionscoped">@TransactionScoped</h1>
+<p><code>@Transactional</code> also starts a context which is available as long as the transaction started by <code>@Transactional</code>. Besides other beans you can use this scope for the <code>EntityManager</code> itself. That means the <code>EntityManager</code> will be closed after leaving the method annotated with <code>@Transactional</code>.</p>
+<p>Producer for the default EntityManager which should be used only for one transaction:</p>
+<div class="codehilite"><pre><span class="c1">//...</span>
+<span class="kd">public</span> <span class="kd">class</span> <span class="nc">EntityManagerProducer</span>
+<span class="o">{</span>
+    <span class="c1">//or manual bootstrapping</span>
+    <span class="nd">@PersistenceContext</span>
+    <span class="kd">private</span> <span class="n">EntityManager</span> <span class="n">entityManager</span><span class="o">;</span>
+
+    <span class="nd">@Produces</span>
+    <span class="nd">@TransactionScoped</span>
+    <span class="kd">protected</span> <span class="n">EntityManager</span> <span class="nf">createEntityManager</span><span class="o">()</span>
+    <span class="o">{</span>
+        <span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="na">entityManager</span><span class="o">;</span>
+    <span class="o">}</span>
+
+    <span class="kd">protected</span> <span class="kt">void</span> <span class="nf">closeEntityManager</span><span class="o">(</span><span class="nd">@Disposes</span> <span class="n">EntityManager</span> <span class="n">entityManager</span><span class="o">)</span>
+    <span class="o">{</span>
+        <span class="k">if</span> <span class="o">(</span><span class="n">entityManager</span><span class="o">.</span><span class="na">isOpen</span><span class="o">())</span>
+        <span class="o">{</span>
+            <span class="n">entityManager</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
+        <span class="o">}</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<h1 id="jta-support">JTA Support</h1>
+<p>Per default the transaction-type used by <code>@Transactional</code>is 'RESOURCE_LOCAL'. If you configure <code>transaction-type="JTA"</code>in the persistence.xml, you have to enable an alternative <code>TransactionStrategy</code> in the beans.xml which is called <code>org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy</code>.</p>
+<div class="codehilite"><pre><span class="nt">&lt;beans&gt;</span>
+    <span class="nt">&lt;alternatives&gt;</span>
+        <span class="nt">&lt;class&gt;</span>org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy<span class="nt">&lt;/class&gt;</span>
+    <span class="nt">&lt;/alternatives&gt;</span>
+<span class="nt">&lt;/beans&gt;</span>
+</pre></div>
+
+
+<p>If you have multiple persistence-units and you have to use both transaction-types or the settings for development have to be different than the production settings, you can use <code>org.apache.deltaspike.jpa.impl.transaction.EnvironmentAwareTransactionStrategy</code> instead.</p>
+<p><strong>Hint:</strong></p>
+<p>In case of some versions of Weld (or OpenWebBeans in BDA mode), you have to configure it as global-alternative instead of an <code>&lt;alternatives&gt;</code> in beans.xml. That means you have to add e.g.:
+<code>globalAlternatives.org.apache.deltaspike.jpa.spi.transaction.TransactionStrategy=org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy</code>
+to /META-INF/apache-deltaspike.properties</p>
+          </div>
+      </div>
+
+      <hr>
+
+      <footer>
+        <p>Copyright © 20011-2012 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
+        <p>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
+      </footer>
+
+    </div> <!-- /container -->
+
+    <!-- Javascript
+    ================================================== -->
+    <!-- Placed at the end of the document so the pages load faster -->
+    <!--<script src="./deltaspike/resources/js/prettyfy.js"></script> -->
+    <script src="./deltaspike/resources/js/prettyprint.js"></script>
+    <script src="./deltaspike/resources/js/jquery.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-transition.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-alert.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-modal.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-dropdown.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-scrollspy.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-tab.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-tooltip.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-popover.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-button.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-collapse.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-carousel.js"></script>
+    <script src="./deltaspike/resources/js/bootstrap-typeahead.js"></script>
+
+</body>
+</html>
\ No newline at end of file