deltaspike-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From build...@apache.org
Subject svn commit: r934454 [2/9] - in /websites/staging/deltaspike/trunk/content: ./ documentation/
Date Tue, 30 Dec 2014 18:53:43 GMT
Added: websites/staging/deltaspike/trunk/content/documentation/configure.html
==============================================================================
--- websites/staging/deltaspike/trunk/content/documentation/configure.html (added)
+++ websites/staging/deltaspike/trunk/content/documentation/configure.html Tue Dec 30 18:53:43
2014
@@ -0,0 +1,378 @@
+<!DOCTYPE html>
+<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">
+<!-- No caching headers -->
+<meta http-equiv="cache-control" content="no-cache" />
+<meta http-equiv="pragma" content="no-cache" />
+<meta http-equiv="expires" content="-1" />
+
+<title>Configure DeltaSpike in Your Projects</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="https://deltaspike.apache.org/resources/css/bootstrap.css" rel="stylesheet">
+<link href="https://deltaspike.apache.org/resources/css/bootstrap-responsive.css" rel="stylesheet">
+<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.1.0/css/font-awesome.min.css"
rel="stylesheet" >
+
+<style type="text/css">
+/* Stylesheet for CodeRay to match GitHub theme | MIT License | http://foundation.zurb.com
*/
+/*pre.CodeRay {background-color:#f7f7f8;}*/
+.CodeRay .line-numbers{border-right:1px solid #d8d8d8;padding:0 0.5em 0 .25em}
+.CodeRay span.line-numbers{display:inline-block;margin-right:.5em;color:rgba(0,0,0,.3)}
+.CodeRay .line-numbers strong{font-weight: normal}
+table.CodeRay{border-collapse:separate;border-spacing:0;margin-bottom:0;border:0;background:none}
+table.CodeRay td{vertical-align: top}
+table.CodeRay td.line-numbers{text-align:right}
+table.CodeRay td.line-numbers>pre{padding:0;color:rgba(0,0,0,.3)}
+table.CodeRay td.code{padding:0 0 0 .5em}
+table.CodeRay td.code>pre{padding:0}
+.CodeRay .debug{color:#fff !important;background:#000080 !important}
+.CodeRay .annotation{color:#007}
+.CodeRay .attribute-name{color:#000080}
+.CodeRay .attribute-value{color:#700}
+.CodeRay .binary{color:#509}
+.CodeRay .comment{color:#998;font-style:italic}
+.CodeRay .char{color:#04d}
+.CodeRay .char .content{color:#04d}
+.CodeRay .char .delimiter{color:#039}
+.CodeRay .class{color:#458;font-weight:bold}
+.CodeRay .complex{color:#a08}
+.CodeRay .constant,.CodeRay .predefined-constant{color:#008080}
+.CodeRay .color{color:#099}
+.CodeRay .class-variable{color:#369}
+.CodeRay .decorator{color:#b0b}
+.CodeRay .definition{color:#099}
+.CodeRay .delimiter{color:#000}
+.CodeRay .doc{color:#970}
+.CodeRay .doctype{color:#34b}
+.CodeRay .doc-string{color:#d42}
+.CodeRay .escape{color:#666}
+.CodeRay .entity{color:#800}
+.CodeRay .error{color:#808}
+.CodeRay .exception{color:inherit}
+.CodeRay .filename{color:#099}
+.CodeRay .function{color:#900;font-weight:bold}
+.CodeRay .global-variable{color:#008080}
+.CodeRay .hex{color:#058}
+.CodeRay .integer,.CodeRay .float{color:#099}
+.CodeRay .include{color:#555}
+.CodeRay .inline{color:#00}
+.CodeRay .inline .inline{background:#ccc}
+.CodeRay .inline .inline .inline{background:#bbb}
+.CodeRay .inline .inline-delimiter{color:#d14}
+.CodeRay .inline-delimiter{color:#d14}
+.CodeRay .important{color:#555;font-weight:bold}
+.CodeRay .interpreted{color:#b2b}
+.CodeRay .instance-variable{color:#008080}
+.CodeRay .label{color:#970}
+.CodeRay .local-variable{color:#963}
+.CodeRay .octal{color:#40e}
+.CodeRay .predefined{color:#369}
+.CodeRay .preprocessor{color:#579}
+.CodeRay .pseudo-class{color:#555}
+.CodeRay .directive{font-weight:bold}
+.CodeRay .type{font-weight:bold}
+.CodeRay .predefined-type{color:inherit}
+.CodeRay .reserved,.CodeRay .keyword {color:#000;font-weight:bold}
+.CodeRay .key{color:#808}
+.CodeRay .key .delimiter{color:#606}
+.CodeRay .key .char{color:#80f}
+.CodeRay .value{color:#088}
+.CodeRay .regexp .delimiter{color:#808}
+.CodeRay .regexp .content{color:#808}
+.CodeRay .regexp .modifier{color:#808}
+.CodeRay .regexp .char{color:#d14}
+.CodeRay .regexp .function{color:#404;font-weight:bold}
+.CodeRay .string{color:#d20}
+.CodeRay .string .string .string{background:#ffd0d0}
+.CodeRay .string .content{color:#d14}
+.CodeRay .string .char{color:#d14}
+.CodeRay .string .delimiter{color:#d14}
+.CodeRay .shell{color:#d14}
+.CodeRay .shell .delimiter{color:#d14}
+.CodeRay .symbol{color:#990073}
+.CodeRay .symbol .content{color:#a60}
+.CodeRay .symbol .delimiter{color:#630}
+.CodeRay .tag{color:#008080}
+.CodeRay .tag-special{color:#d70}
+.CodeRay .variable{color:#036}
+.CodeRay .insert{background:#afa}
+.CodeRay .delete{background:#faa}
+.CodeRay .change{color:#aaf;background:#007}
+.CodeRay .head{color:#f8f;background:#505}
+.CodeRay .insert .insert{color:#080}
+.CodeRay .delete .delete{color:#800}
+.CodeRay .change .change{color:#66f}
+.CodeRay .head .head{color:#f4f}
+
+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 logocolor"
+					href="../index.html">Apache DeltaSpike</a>
+				<div class="nav-collapse">
+					<ul class="nav">
+						<li class="active"><a
+							href="../index.html">Home</a></li>
+						<li><a href="../documentation">Documentation</a></li>
+						<li><a href="../javadoc.html">Javadoc</a></li>
+						<li><a href="../documentation/source.html">Source</a></li>
+						<li><a href="../download.html">Download</a></li>
+						<li><a href="../community.html">Community</a></li>
+						<!-- <li><a href="./support.html">Support</a></li>  -->
+						<li><a href="../news.html">News</a></li>
+						<li><a href="../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="deltaspike.apache.org" 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>Configure DeltaSpike in Your Projects</h1>
+                </div>
+
+				<div id="toc" class="toc">
+       	 		<ul class="sectlevel1">
+<li><a href="#_option_a_configure_deltaspike_in_maven_based_projects">Option
A: Configure DeltaSpike in Maven-based Projects</a></li>
+<li><a href="#config-maven-indep">Option B: Configure DeltaSpike in Maven-independent
Projects</a></li>
+<li><a href="#_next">Next</a></li>
+</ul>
+       	 		<hr>	
+       	 		
+				<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>DeltaSpike is available for use in Maven-based and Maven-independent projects. Instructions
are given here for obtaining released final versions of DeltaSpike for both approaches.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+You can also opt to use the lastest DeltaSpike snapshots; for more information, see <a
href="snapshots.html">Use DeltaSpike Snapshots</a>.
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_option_a_configure_deltaspike_in_maven_based_projects">Option A: Configure
DeltaSpike in Maven-based Projects</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>DeltaSpike released versions are available from the Maven Central repository for
use in Maven-based projects. This means that you do not need to modify your Maven configuration
<code>settings.xml</code> file; when building projects, Maven automatically searches
the online Maven Central repository for project dependencies and downloads sources to your
local Maven repository.</p>
+</div>
+<div class="paragraph">
+<p>To begin use the DeltaSpike releases from Maven Central, you simply need to configure
the project <code>pom.xml</code> file for each project with information about
the release version and modules you want to use. At a minimum, you must add the DeltaSpike
Core module, which provides the DeltaSpike API and utility classes.</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Open the project <code>pom.xml</code> file for editing</p>
+</li>
+<li>
+<p>Add the DeltaSpike version to the list of properties</p>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;properties&gt;</span>
+    <span class="tag">&lt;deltaspike.version&gt;</span>1.2.1<span
class="tag">&lt;/deltaspike.version&gt;</span>
+<span class="tag">&lt;/properties&gt;</span></code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Add the DeltaSpike Core module to the list of dependencies</p>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;dependency&gt;</span>
+    <span class="tag">&lt;groupId&gt;</span>org.apache.deltaspike.core<span
class="tag">&lt;/groupId&gt;</span>
+    <span class="tag">&lt;artifactId&gt;</span>deltaspike-core-api<span
class="tag">&lt;/artifactId&gt;</span>
+    <span class="tag">&lt;version&gt;</span>${deltaspike.version}<span
class="tag">&lt;/version&gt;</span>
+    <span class="tag">&lt;scope&gt;</span>compile<span class="tag">&lt;/scope&gt;</span>
+<span class="tag">&lt;/dependency&gt;</span>
+
+<span class="tag">&lt;dependency&gt;</span>
+    <span class="tag">&lt;groupId&gt;</span>org.apache.deltaspike.core<span
class="tag">&lt;/groupId&gt;</span>
+    <span class="tag">&lt;artifactId&gt;</span>deltaspike-core-impl<span
class="tag">&lt;/artifactId&gt;</span>
+    <span class="tag">&lt;version&gt;</span>${deltaspike.version}<span
class="tag">&lt;/version&gt;</span>
+    <span class="tag">&lt;scope&gt;</span>runtime<span class="tag">&lt;/scope&gt;</span>
+<span class="tag">&lt;/dependency&gt;</span></code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Save the <code>pom.xml</code> file changes</p>
+</li>
+</ol>
+</div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+The API is scoped for compile time and implementation only included for runtime, assisting
to prevent you from inadvertantly depending on an implementation class.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>For instructions on adding the optional DeltaSpike modules, see the relevant module
page:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="bean-validation.html">Bean Validation</a></p>
+</li>
+<li>
+<p><a href="container-control.html">Container Control</a></p>
+</li>
+<li>
+<p><a href="data.html">Data</a></p>
+</li>
+<li>
+<p><a href="jpa.html">JPA</a></p>
+</li>
+<li>
+<p><a href="jsf.html">JSF</a></p>
+</li>
+<li>
+<p><a href="partial-bean.html">Partial-Bean</a></p>
+</li>
+<li>
+<p><a href="scheduler.html">Scheduler</a></p>
+</li>
+<li>
+<p><a href="security.html">Security</a></p>
+</li>
+<li>
+<p><a href="servlet.html">Servlet</a></p>
+</li>
+<li>
+<p><a href="test-control.html">Test-Control</a></p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="config-maven-indep">Option B: Configure DeltaSpike in Maven-independent Projects</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Deltaspike is provided as a set of downloadable .jar files for projects not utilizing
the Maven build system. Alternatively, you can build the DeltaSpike .jar files from source;
for instructions, see <a href="build.html">Build DeltaSpike from Source</a>. In
both cases, you must add the DeltaSpike .jar files directly to your projects.</p>
+</div>
+<div class="paragraph">
+<p>To use DeltaSpike without Maven from the downloadable .jar files, complete the following
steps:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Download the latest <code>distribution-full-&lt;version&gt;.zip</code>
from <a href="https://deltaspike.apache.org/download.html" class="bare">https://deltaspike.apache.org/download.html</a></p>
+</li>
+<li>
+<p>Extract the archive contents</p>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="shell">$ unzip distribution-full-&lt;version&gt;.zip</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Add the source to your project</p>
+<div class="olist loweralpha">
+<ol class="loweralpha" type="a">
+<li>
+<p>For .war projects, copy the .jar files to the <code>WEB-INF/lib</code>
directory</p>
+</li>
+<li>
+<p>For .ear projects, copy the .jar files to the <code>EAR/lib directory</code>
and add the following to <code>META-INF/application.xml</code>:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;library-directory&gt;</span>lib<span
class="tag">&lt;/library-directory&gt;</span></code></pre>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</li>
+</ol>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_next">Next</h2>
+<div class="sectionbody">
+<div class="ulist">
+<ul>
+<li>
+<p>To check whether your Java environment needs any additional CDI-specific configuration,
see <a href="cdiimp.html">Enable CDI For Your Java Environment</a>.</p>
+</li>
+<li>
+<p>To see ready-to-deploy example DeltaSpike applications, see <a href="http://deltaspike.apache.org/examples.html">See
DeltaSpike in Action</a>.</p>
+</li>
+<li>
+<p>To understand how the various DeltaSpike modules can enhance and extend your applications,
see <a href="modules.html">Overview of DeltaSpike Modules</a> and the individual
module pages.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+			</div>
+
+			<hr>
+
+			<footer>
+				<p>Copyright © 2011-2014 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 -->
+
+</body>
+</html>
\ No newline at end of file

Added: websites/staging/deltaspike/trunk/content/documentation/container-control.html
==============================================================================
--- websites/staging/deltaspike/trunk/content/documentation/container-control.html (added)
+++ websites/staging/deltaspike/trunk/content/documentation/container-control.html Tue Dec
30 18:53:43 2014
@@ -0,0 +1,468 @@
+<!DOCTYPE html>
+<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">
+<!-- No caching headers -->
+<meta http-equiv="cache-control" content="no-cache" />
+<meta http-equiv="pragma" content="no-cache" />
+<meta http-equiv="expires" content="-1" />
+
+<title>Container Control 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="https://deltaspike.apache.org/resources/css/bootstrap.css" rel="stylesheet">
+<link href="https://deltaspike.apache.org/resources/css/bootstrap-responsive.css" rel="stylesheet">
+<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.1.0/css/font-awesome.min.css"
rel="stylesheet" >
+
+<style type="text/css">
+/* Stylesheet for CodeRay to match GitHub theme | MIT License | http://foundation.zurb.com
*/
+/*pre.CodeRay {background-color:#f7f7f8;}*/
+.CodeRay .line-numbers{border-right:1px solid #d8d8d8;padding:0 0.5em 0 .25em}
+.CodeRay span.line-numbers{display:inline-block;margin-right:.5em;color:rgba(0,0,0,.3)}
+.CodeRay .line-numbers strong{font-weight: normal}
+table.CodeRay{border-collapse:separate;border-spacing:0;margin-bottom:0;border:0;background:none}
+table.CodeRay td{vertical-align: top}
+table.CodeRay td.line-numbers{text-align:right}
+table.CodeRay td.line-numbers>pre{padding:0;color:rgba(0,0,0,.3)}
+table.CodeRay td.code{padding:0 0 0 .5em}
+table.CodeRay td.code>pre{padding:0}
+.CodeRay .debug{color:#fff !important;background:#000080 !important}
+.CodeRay .annotation{color:#007}
+.CodeRay .attribute-name{color:#000080}
+.CodeRay .attribute-value{color:#700}
+.CodeRay .binary{color:#509}
+.CodeRay .comment{color:#998;font-style:italic}
+.CodeRay .char{color:#04d}
+.CodeRay .char .content{color:#04d}
+.CodeRay .char .delimiter{color:#039}
+.CodeRay .class{color:#458;font-weight:bold}
+.CodeRay .complex{color:#a08}
+.CodeRay .constant,.CodeRay .predefined-constant{color:#008080}
+.CodeRay .color{color:#099}
+.CodeRay .class-variable{color:#369}
+.CodeRay .decorator{color:#b0b}
+.CodeRay .definition{color:#099}
+.CodeRay .delimiter{color:#000}
+.CodeRay .doc{color:#970}
+.CodeRay .doctype{color:#34b}
+.CodeRay .doc-string{color:#d42}
+.CodeRay .escape{color:#666}
+.CodeRay .entity{color:#800}
+.CodeRay .error{color:#808}
+.CodeRay .exception{color:inherit}
+.CodeRay .filename{color:#099}
+.CodeRay .function{color:#900;font-weight:bold}
+.CodeRay .global-variable{color:#008080}
+.CodeRay .hex{color:#058}
+.CodeRay .integer,.CodeRay .float{color:#099}
+.CodeRay .include{color:#555}
+.CodeRay .inline{color:#00}
+.CodeRay .inline .inline{background:#ccc}
+.CodeRay .inline .inline .inline{background:#bbb}
+.CodeRay .inline .inline-delimiter{color:#d14}
+.CodeRay .inline-delimiter{color:#d14}
+.CodeRay .important{color:#555;font-weight:bold}
+.CodeRay .interpreted{color:#b2b}
+.CodeRay .instance-variable{color:#008080}
+.CodeRay .label{color:#970}
+.CodeRay .local-variable{color:#963}
+.CodeRay .octal{color:#40e}
+.CodeRay .predefined{color:#369}
+.CodeRay .preprocessor{color:#579}
+.CodeRay .pseudo-class{color:#555}
+.CodeRay .directive{font-weight:bold}
+.CodeRay .type{font-weight:bold}
+.CodeRay .predefined-type{color:inherit}
+.CodeRay .reserved,.CodeRay .keyword {color:#000;font-weight:bold}
+.CodeRay .key{color:#808}
+.CodeRay .key .delimiter{color:#606}
+.CodeRay .key .char{color:#80f}
+.CodeRay .value{color:#088}
+.CodeRay .regexp .delimiter{color:#808}
+.CodeRay .regexp .content{color:#808}
+.CodeRay .regexp .modifier{color:#808}
+.CodeRay .regexp .char{color:#d14}
+.CodeRay .regexp .function{color:#404;font-weight:bold}
+.CodeRay .string{color:#d20}
+.CodeRay .string .string .string{background:#ffd0d0}
+.CodeRay .string .content{color:#d14}
+.CodeRay .string .char{color:#d14}
+.CodeRay .string .delimiter{color:#d14}
+.CodeRay .shell{color:#d14}
+.CodeRay .shell .delimiter{color:#d14}
+.CodeRay .symbol{color:#990073}
+.CodeRay .symbol .content{color:#a60}
+.CodeRay .symbol .delimiter{color:#630}
+.CodeRay .tag{color:#008080}
+.CodeRay .tag-special{color:#d70}
+.CodeRay .variable{color:#036}
+.CodeRay .insert{background:#afa}
+.CodeRay .delete{background:#faa}
+.CodeRay .change{color:#aaf;background:#007}
+.CodeRay .head{color:#f8f;background:#505}
+.CodeRay .insert .insert{color:#080}
+.CodeRay .delete .delete{color:#800}
+.CodeRay .change .change{color:#66f}
+.CodeRay .head .head{color:#f4f}
+
+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 logocolor"
+					href="../index.html">Apache DeltaSpike</a>
+				<div class="nav-collapse">
+					<ul class="nav">
+						<li class="active"><a
+							href="../index.html">Home</a></li>
+						<li><a href="../documentation">Documentation</a></li>
+						<li><a href="../javadoc.html">Javadoc</a></li>
+						<li><a href="../documentation/source.html">Source</a></li>
+						<li><a href="../download.html">Download</a></li>
+						<li><a href="../community.html">Community</a></li>
+						<!-- <li><a href="./support.html">Support</a></li>  -->
+						<li><a href="../news.html">News</a></li>
+						<li><a href="../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="deltaspike.apache.org" 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>Container Control Module</h1>
+                </div>
+
+				<div id="toc" class="toc">
+       	 		<ul class="sectlevel1">
+<li><a href="#_overview">Overview</a></li>
+<li><a href="#_configure_your_projects">Configure Your Projects</a>
+<ul class="sectlevel2">
+<li><a href="#_declare_container_control_module_dependencies">Declare Container
Control Module Dependencies</a></li>
+</ul>
+</li>
+<li><a href="#_use_the_module_features">Use the Module Features</a>
+<ul class="sectlevel2">
+<li><a href="#_cdicontainer">CdiContainer</a></li>
+<li><a href="#_contextcontrol_usage">ContextControl Usage</a></li>
+<li><a href="#_procedure_for_builing_uber_jar">Procedure for builing Uber jar</a>
+<ul class="sectlevel3">
+<li><a href="#_restart_the_requestcontext_in_unit_tests">Restart the RequestContext
in Unit Tests</a></li>
+<li><a href="#_attach_a_requestcontext_to_a_new_thread_in_ee">Attach a RequestContext
to a New Thread in EE</a></li>
+</ul>
+</li>
+<li><a href="#_embedded_servlet_support">Embedded Servlet Support</a>
+<ul class="sectlevel3">
+<li><a href="#_jetty">Jetty</a></li>
+<li><a href="#_undertow">Undertow</a></li>
+<li><a href="#_tomcat">Tomcat</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+       	 		<hr>	
+       	 		
+				<div class="sect1">
+<h2 id="_overview">Overview</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The Container Control module provides CDI container booting and shutdown, crucial
for CDI use in Java SE6+ environments, and associated context lifecycle management. The module
abstracts individual CDI container implementations, ensuring projects are container-independent.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_configure_your_projects">Configure Your Projects</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The configuration information provided here is for Maven-based projects and it assumes
that you have already declared the DeltaSpike version and DeltaSpike Core module for your
projects, as detailed in <a href="configure.html">Configure DeltaSpike in Your Projects</a>.
For Maven-independent projects, see <a href="configure.html#config-maven-indep">Configure
DeltaSpike in Maven-independent Projects</a>.</p>
+</div>
+<div class="sect2">
+<h3 id="_declare_container_control_module_dependencies">Declare Container Control Module
Dependencies</h3>
+<div class="paragraph">
+<p>Add the Container Control module to the list of dependencies in the project <code>pom.xml</code>
file using this code snippet:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;dependency&gt;</span>
+    <span class="tag">&lt;groupId&gt;</span>org.apache.deltaspike.cdictrl<span
class="tag">&lt;/groupId&gt;</span>
+    <span class="tag">&lt;artifactId&gt;</span>deltaspike-cdictrl-api<span
class="tag">&lt;/artifactId&gt;</span>
+    <span class="tag">&lt;version&gt;</span>${deltaspike.version}<span
class="tag">&lt;/version&gt;</span>
+    <span class="tag">&lt;scope&gt;</span>compile<span class="tag">&lt;/scope&gt;</span>
+<span class="tag">&lt;/dependency&gt;</span></code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_use_the_module_features">Use the Module Features</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_cdicontainer">CdiContainer</h3>
+<div class="paragraph">
+<p>The <code>CdiContainer</code> interface provides booting and shutdown
of the CDI containers from deployed applications, with <code>CdiContainerLoader</code>
a simple factory providing access to the underlying <code>CdiContainer</code>
implementation.</p>
+</div>
+<div class="paragraph">
+<p>This is useful to Java SE6+ applications in which a standalone CDI implementation
must be provided and booted and shutdown by the application. Booting and shutdown of the CDI
container for Java EE and servlet containers is managed by the servlet container integration.</p>
+</div>
+<div class="paragraph">
+<p>For instructions and examples on using this feature in your projects, see <a
href="cdiimp.html#javase6">Enable CDI For Your Java Environment: Java SE6+</a>.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_contextcontrol_usage">ContextControl Usage</h3>
+<div class="paragraph">
+<p>The <code>ContextControl</code> interface provides life-cycle control
of the CDI container built-in contexts. This includes starting and stoping built-in standard
contexts like <code>@RequestScoped</code>, <code>@ConversationScoped</code>,
and <code>@SessionScoped</code>. It is provided as an <code>@Dependent</code>
bean and can be injected in the classic CDI way. This feature can be used and is helpful in
all Java environments, including Java SE, as illustrated here.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_procedure_for_builing_uber_jar">Procedure for builing Uber jar</h3>
+<div class="paragraph">
+<p>Uber jar or executable jar can created by using the maven shade plugin. Some things
you needs to be aware of when you use it.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Multiple <code>beans.xml</code> and <code>javax.enterprise.inject.spi.Extension</code>
files needs to be merged into the final jar using a transformer.</p>
+</li>
+</ul>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>&lt;transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/&gt;</pre>
+</div>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>The <em>asm:asm:3.3.1</em> transitive dependency of OpenWebBeans isn&#8217;t
properly included in the Uber jar.  Add it as a project dependency if you use OWB. (Only needed
for OWB 1.1.8 !)</p>
+</li>
+<li>
+<p>Some frameworks, like logging frameworks, aren&#8217;t CDI compatible.  So you
need to exclude them from scanning. Use for example the <code>scan</code> feature
of Weld to define which packages needs to be excluded.</p>
+</li>
+</ul>
+</div>
+<div class="sect3">
+<h4 id="_restart_the_requestcontext_in_unit_tests">Restart the RequestContext in Unit
Tests</h4>
+<div class="paragraph">
+<p>In unit testing it can be necessary to test with attached and also with
+detached JPA entities. A very common approach for JPA is the
+<a href="http://docs.redhat.com/docs/en-US/JBoss_Enterprise_Web_Server/1.0/html/Hibernate_Entity_Manager_Reference_Guide/transactions.html">entitymanager-per-request
+approach</a> and thus have a producer method which creates a @RequestScoped
+EntityManager. Since a single unit test is usually treated as one
+‘request’ a problem arises detaching entities.</p>
+</div>
+<div class="listingblock">
+<div class="title">Using ContextControl to Detach Entities</div>
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@Test</span>
+<span class="directive">public</span> <span class="type">void</span>
testMyBusinessLogic()
+{
+    doSomeJpaStuff()
+    MyEntity me = em.find(...);
+
+    ContextControl ctxCtrl = BeanProvider.getContextualReference(ContextControl.class);
+
+    <span class="comment">//stop the RequestContext to dispose of the @RequestScoped
EntityManager</span>
+    ctxCtrl.stopContext(RequestScoped.class);
+
+    <span class="comment">//immediately restart the context again</span>
+    ctxCtrl.startContext(RequestScoped.class);
+
+    <span class="comment">//the entity 'em' is now in a detached state!</span>
+    doSomeStuffWithTheDetachedEntity(em);
+}</code></pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_attach_a_requestcontext_to_a_new_thread_in_ee">Attach a RequestContext to
a New Thread in EE</h4>
+<div class="paragraph">
+<p>Accessing the <code>@RequestScoped</code> bean in a new thread will
result in a
+<code>ContextNotActiveException</code>. The RequestContext usually gets started
+for a particular thread via a simple <code>ServletRequestListener</code>. So
"no
+servlet-request" means that there is no Servlet-Context for the current
+(/new) Thread. You might face such issues, if you would like to reuse
+business services in for example a Quartz Job.</p>
+</div>
+<div class="listingblock">
+<div class="title">Using ContextControl to Control the RequestContext for a Quartz-Job</div>
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span>
<span class="type">class</span> <span class="class">CdiJob</span>
<span class="directive">implements</span> org.quartz.Job
+{
+    <span class="directive">public</span> <span class="type">void</span>
execute(JobExecutionContext context) <span class="directive">throws</span> JobExecutionException
+    {
+        ContextControl ctxCtrl = BeanProvider.getContextualReference(ContextControl.class);
+
+        <span class="comment">//this will implicitly bind a new RequestContext to the
current thread</span>
+        ctxCtrl.startContext(RequestScoped.class);
+
+        <span class="keyword">try</span>
+        {
+            doYourWork();
+        }
+        <span class="keyword">finally</span>
+        {
+            <span class="comment">//stop the RequestContext to ensure that all request-scoped
beans get cleaned up.</span>
+            ctxCtrl.stopContext(RequestScoped.class);
+        }
+    }
+}</code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_embedded_servlet_support">Embedded Servlet Support</h3>
+<div class="paragraph">
+<p>From DeltaSpike 1.0.2, you can use DeltaSpike to power embedded Servlet
+runtimes. This work is done via Servlet Listeners. The configuration is
+specific to each container, below are some examples.</p>
+</div>
+<div class="paragraph">
+<p>The two main listeners are <code>CdiServletRequestListener</code> and
+<code>CdiServletContextListener</code>. <code>CdiServletRequestListener</code>
is responsible
+for starting a <code>RequestContext</code> on each incoming request. In most
+containers this is all you need. For Tomcat specifically, you need to
+use <code>CdiServletContextListener</code> which registers the
+<code>CdiServletRequestListener</code>.</p>
+</div>
+<div class="paragraph">
+<p>The main use case for this feature is for lightweight embedded runtimes,
+microservices. For each of these, it is assumed that you are using the
+following start up code somewhere:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java">CdiContainer cdiContainer
= CdiContainerLoader.getCdiContainer();
+cdiContainer.boot();
+cdiContainer.getContextControl().startContexts();</code></pre>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_jetty">Jetty</h4>
+<div class="paragraph">
+<p>For Jetty, you need to add an <code>EventListener</code> which will
be your
+<code>CdiServletRequestListener</code>. The object must be instantiated. This
must
+be done before the server is started.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java">Server server = <span
class="keyword">new</span> Server(port);
+ServletContextHandler context = <span class="keyword">new</span> ServletContextHandler(ServletContextHandler.SESSIONS);
+context.setContextPath(<span class="string"><span class="delimiter">&quot;</span><span
class="content">/</span><span class="delimiter">&quot;</span></span>);
+server.setHandler(context);
+
+context.addEventListener(<span class="keyword">new</span> CdiServletRequestListener());
+context.addServlet(<span class="keyword">new</span> ServletHolder(<span class="keyword">new</span>
YourServlet()),<span class="string"><span class="delimiter">&quot;</span><span
class="content">/*</span><span class="delimiter">&quot;</span></span>);
+
+server.start();</code></pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_undertow">Undertow</h4>
+<div class="paragraph">
+<p>For Undertow, you register the <code>CdiServletRequestListener</code>
via
+<code>ListenerInfo</code> by passing in the class to their builders. Then you
add
+the <code>ListenerInfo</code> to your deployment before starting.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java">ServletInfo servletInfo
= Servlets.servlet(<span class="string"><span class="delimiter">&quot;</span><span
class="content">YourServletName</span><span class="delimiter">&quot;</span></span>,
YourServlet.class).setAsyncSupported(<span class="predefined-constant">true</span>)
+    .setLoadOnStartup(<span class="integer">1</span>).addMapping(<span class="string"><span
class="delimiter">&quot;</span><span class="content">/*</span><span
class="delimiter">&quot;</span></span>);
+ListenerInfo listenerInfo = Servlets.listener(CdiServletRequestListener.class);
+DeploymentInfo di = <span class="keyword">new</span> DeploymentInfo()
+        .addListener(listenerInfo)
+        .setContextPath(<span class="string"><span class="delimiter">&quot;</span><span
class="content">/</span><span class="delimiter">&quot;</span></span>)
+        .addServlet(servletInfo).setDeploymentName(<span class="string"><span class="delimiter">&quot;</span><span
class="content">CdiSEServlet</span><span class="delimiter">&quot;</span></span>)
+        .setClassLoader(<span class="predefined-type">ClassLoader</span>.getSystemClassLoader());
+DeploymentManager deploymentManager = Servlets.defaultContainer().addDeployment(di);
+deploymentManager.deploy();
+Undertow server = Undertow.builder()
+        .addHttpListener(port, <span class="string"><span class="delimiter">&quot;</span><span
class="content">localhost</span><span class="delimiter">&quot;</span></span>)
+        .setHandler(deploymentManager.start())
+        .build();
+server.start();</code></pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_tomcat">Tomcat</h4>
+<div class="paragraph">
+<p>For Tomcat, you need to register the <code>CdiServletContextListener</code>
instead
+of the <code>CdiServletRequestListener</code>. It is added as an
+<code>ApplicationListener</code> by passing in the class name as a <code>String</code>.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java">Tomcat tomcat = <span
class="keyword">new</span> Tomcat();
+tomcat.setPort(port);
+<span class="predefined-type">File</span> base = <span class="keyword">new</span>
<span class="predefined-type">File</span>(<span class="string"><span
class="delimiter">&quot;</span><span class="content">...</span><span
class="delimiter">&quot;</span></span>);
+<span class="predefined-type">Context</span> ctx = tomcat.addContext(<span
class="string"><span class="delimiter">&quot;</span><span class="content">/</span><span
class="delimiter">&quot;</span></span>,base.getAbsolutePath());
+StandardContext standardContext = (StandardContext)ctx;
+standardContext.addApplicationListener(CdiServletContextListener.class.getName());
+Wrapper wrapper = Tomcat.addServlet(ctx,<span class="string"><span class="delimiter">&quot;</span><span
class="content">YourServlet</span><span class="delimiter">&quot;</span></span>,YourServlet.class.getName());
+wrapper.addMapping(<span class="string"><span class="delimiter">&quot;</span><span
class="content">/*</span><span class="delimiter">&quot;</span></span>);
+tomcat.start();</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+			</div>
+
+			<hr>
+
+			<footer>
+				<p>Copyright © 2011-2014 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 -->
+
+</body>
+</html>
\ No newline at end of file



Mime
View raw message