Author: buildbot
Date: Sat Aug 8 18:20:03 2015
New Revision: 961174
Log:
Production update by buildbot for tapestry
Modified:
websites/production/tapestry/content/application-module-class-cheat-sheet.html
websites/production/tapestry/content/cache/main.pageCache
websites/production/tapestry/content/component-cheat-sheet.html
websites/production/tapestry/content/logging-in-tapestry.html
websites/production/tapestry/content/operation-tracker.html
websites/production/tapestry/content/parallel-execution.html
websites/production/tapestry/content/registry-startup.html
websites/production/tapestry/content/request-processing.html
websites/production/tapestry/content/starting-the-ioc-registry.html
websites/production/tapestry/content/tapestry-for-jsf-users.html
websites/production/tapestry/content/using-jsr-330-standard-annotations.html
Modified:
websites/production/tapestry/content/application-module-class-cheat-sheet.html
==============================================================================
---
websites/production/tapestry/content/application-module-class-cheat-sheet.html
(original)
+++
websites/production/tapestry/content/application-module-class-cheat-sheet.html
Sat Aug 8 18:20:03 2015
@@ -31,8 +31,6 @@
<link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet'
type='text/css' />
<script src='/resources/highlighter/scripts/shCore.js'
type='text/javascript'></script>
<script src='/resources/highlighter/scripts/shBrushJava.js'
type='text/javascript'></script>
- <script src='/resources/highlighter/scripts/shBrushXml.js'
type='text/javascript'></script>
- <script src='/resources/highlighter/scripts/shBrushPlain.js'
type='text/javascript'></script>
<script type="text/javascript">
SyntaxHighlighter.defaults['toolbar'] = false;
SyntaxHighlighter.all();
@@ -67,12 +65,12 @@
</div>
<div id="content">
-<div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1437952782331 {padding: 0px;}
-div.rbtoc1437952782331 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1437952782331 li {margin-left: 0px;padding-left: 0px;}
+<div id="ConfluenceContent"><p> </p><p>The <strong>Application
Module</strong> class is a simple Java class used to configure Tapestry. A
system of annotations and naming conventions allows Tapestry to determine what
services are provided by the module to your application. This is the place
where you bind your custom implementation of services, contribute to, decorate
and override existing services.</p><p><style type="text/css">/*<![CDATA[*/
+div.rbtoc1439057978181 {padding: 0px;}
+div.rbtoc1439057978181 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1439057978181 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1437952782331">
+/*]]>*/</style></p><div class="toc-macro rbtoc1439057978181">
<ul class="toc-indentation"><li>Related Articles</li></ul>
<ul><li><a shape="rect"
href="#ApplicationModuleClassCheatSheet-Namingconventions">Naming
conventions</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#ApplicationModuleClassCheatSheet-Thebindmethod">The bind
method</a></li><li><a shape="rect"
href="#ApplicationModuleClassCheatSheet-Servicebuildermethods">Service builder
methods</a></li><li><a shape="rect"
href="#ApplicationModuleClassCheatSheet-Contributemethods">Contribute
methods</a>
@@ -83,7 +81,7 @@ div.rbtoc1437952782331 li {margin-left:
</li><li><a shape="rect"
href="#ApplicationModuleClassCheatSheet-Loadservicesonregistrystartup">Load
services on registry startup</a></li><li><a shape="rect"
href="#ApplicationModuleClassCheatSheet-Defineservicescope">Define service
scope</a></li><li><a shape="rect"
href="#ApplicationModuleClassCheatSheet-Disambiguateservices">Disambiguate
services</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#ApplicationModuleClassCheatSheet-WithserviceId">With service
Id</a></li><li><a shape="rect"
href="#ApplicationModuleClassCheatSheet-WithMarkers">With Markers</a></li></ul>
</li><li><a shape="rect"
href="#ApplicationModuleClassCheatSheet-Overrideexistingservices">Override
existing services</a></li></ul>
-</div><p> The <strong>Application Module</strong> class is a simple Java
class used to configure Tapestry. A system of annotations and naming
conventions allows Tapestry to determine what services are provided by the
module to your application. This is the place where you bind your custom
implementation of services, contribute to, decorate and override existing
services.</p><div class="aui-label" style="float:right" title="Related
Articles">
+</div><div class="aui-label" style="float:right" title="Related Articles">
@@ -209,7 +207,7 @@ public class MyAppModule
configuration.add(myTuple);
}
</pre>
-</div></div><h3 id="ApplicationModuleClassCheatSheet-Decoratemethods">Decorate
methods</h3><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Annotations">Annotations</h2><p>Main
Article: <a shape="rect" href="annotations.html">Annotations</a></p><p>Tapestry
5.2 comes with a set of annotations to better your understanding of module
classes.</p><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-parameter-typesParametertypes"><span
class="confluence-anchor-link"
id="ApplicationModuleClassCheatSheet-parameter-types"></span>Parameter
types</h2><p>These methods may have any number of parameters, tapestry will try
to resolve each parameter value as a configuration element or a registry
element.</p><h3
id="ApplicationModuleClassCheatSheet-Configurationparametertypes">Configuration
parameter types</h3><p><em>content under development</em></p><h3
id="ApplicationModuleClassCheatSheet-Linktoservices">Link to
services</h3><p><em>cont
ent under development</em></p><h3
id="ApplicationModuleClassCheatSheet-Symbols">Symbols</h3><p>Main Article: <a
shape="rect" href="symbols.html">Symbols</a></p><p><em>content under
development</em></p><h2
id="ApplicationModuleClassCheatSheet-Loadservicesonregistrystartup">Load
services on registry startup</h2><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Defineservicescope">Define service
scope</h2><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Disambiguateservices">Disambiguate
services</h2><p><em>content under development</em></p><h3
id="ApplicationModuleClassCheatSheet-WithserviceId">With service
Id</h3><p><em>content under development</em></p><h3
id="ApplicationModuleClassCheatSheet-WithMarkers">With
Markers</h3><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Overrideexistingservices">Override
existing services</h2><p><em>content under development</em></p></div>
+</div></div><h3 id="ApplicationModuleClassCheatSheet-Decoratemethods">Decorate
methods</h3><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Annotations">Annotations</h2><p>Main
Article: <a shape="rect" href="annotations.html">Annotations</a></p><p>Tapestry
5.2 comes with a set of annotations to better your understanding of module
classes.</p><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-parameter-typesParametertypes"><span
class="confluence-anchor-link"
id="ApplicationModuleClassCheatSheet-parameter-types"></span>Parameter
types</h2><p>These methods may have any number of parameters, tapestry will try
to resolve each parameter value as a configuration element or a registry
element.</p><h3
id="ApplicationModuleClassCheatSheet-Configurationparametertypes">Configuration
parameter types</h3><p><em>content under development</em></p><h3
id="ApplicationModuleClassCheatSheet-Linktoservices">Link to
services</h3><p><em>cont
ent under development</em></p><h3
id="ApplicationModuleClassCheatSheet-Symbols">Symbols</h3><p>Main Article: <a
shape="rect" href="symbols.html">Symbols</a></p><p><em>content under
development</em></p><h2
id="ApplicationModuleClassCheatSheet-Loadservicesonregistrystartup">Load
services on registry startup</h2><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Defineservicescope">Define service
scope</h2><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Disambiguateservices">Disambiguate
services</h2><p><em>content under development</em></p><h3
id="ApplicationModuleClassCheatSheet-WithserviceId">With service
Id</h3><p><em>content under development</em></p><h3
id="ApplicationModuleClassCheatSheet-WithMarkers">With
Markers</h3><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Overrideexistingservices">Override
existing services</h2><p><em>content under
development</em></p><p> </p><p></p>
</div>
</div>
<div class="clearer"></div>
Modified: websites/production/tapestry/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.
Modified: websites/production/tapestry/content/component-cheat-sheet.html
==============================================================================
--- websites/production/tapestry/content/component-cheat-sheet.html (original)
+++ websites/production/tapestry/content/component-cheat-sheet.html Sat Aug 8
18:20:03 2015
@@ -31,8 +31,6 @@
<link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet'
type='text/css' />
<script src='/resources/highlighter/scripts/shCore.js'
type='text/javascript'></script>
<script src='/resources/highlighter/scripts/shBrushJava.js'
type='text/javascript'></script>
- <script src='/resources/highlighter/scripts/shBrushXml.js'
type='text/javascript'></script>
- <script src='/resources/highlighter/scripts/shBrushPlain.js'
type='text/javascript'></script>
<script type="text/javascript">
SyntaxHighlighter.defaults['toolbar'] = false;
SyntaxHighlighter.all();
@@ -67,7 +65,7 @@
</div>
<div id="content">
-<div id="ConfluenceContent"><p>This is a summary of the more common
annotations and methods you can add to Tapestry pages and component
classes.</p><div class="aui-label" style="float:right" title="Related Articles">
+<div id="ConfluenceContent"><p> </p><p>This is a summary of the more
common annotations and methods you can add to Tapestry pages and component
classes.</p><div class="aui-label" style="float:right" title="Related Articles">
@@ -163,7 +161,7 @@ public void setParam(MappedConfiguration
public void setParam(MappedConfiguration< String, String> configuration){
configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
}</pre>
-</div></div></li></ul><p></p></div>
+</div></div></li></ul><p> </p><p></p></div>
</div>
<div class="clearer"></div>
Modified: websites/production/tapestry/content/logging-in-tapestry.html
==============================================================================
--- websites/production/tapestry/content/logging-in-tapestry.html (original)
+++ websites/production/tapestry/content/logging-in-tapestry.html Sat Aug 8
18:20:03 2015
@@ -30,9 +30,7 @@
<link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet'
type='text/css' />
<link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet'
type='text/css' />
<script src='/resources/highlighter/scripts/shCore.js'
type='text/javascript'></script>
- <script src='/resources/highlighter/scripts/shBrushJava.js'
type='text/javascript'></script>
<script src='/resources/highlighter/scripts/shBrushXml.js'
type='text/javascript'></script>
- <script src='/resources/highlighter/scripts/shBrushPlain.js'
type='text/javascript'></script>
<script type="text/javascript">
SyntaxHighlighter.defaults['toolbar'] = false;
SyntaxHighlighter.all();
@@ -172,7 +170,7 @@
</dependency>
</dependencies>
</pre>
-</div></div><p>This pulls out the log4j support normally included with
Tapestry, and replaces it with the SLF4J library that wraps around JDK 1.4
logging.</p><p>In all likelihood, you'll replace <em>tapestry-ioc</em> with
<em>tapestry-core</em> (assuming you are building a web application using
Tapestry, rather than using Tapestry IoC as part of some other application).
And, of course, version numbers change all the time!</p></div>
+</div></div><p>This pulls out the log4j support normally included with
Tapestry, and replaces it with the SLF4J library that wraps around JDK 1.4
logging.</p><p>In all likelihood, you'll replace <em>tapestry-ioc</em> with
<em>tapestry-core</em> (assuming you are building a web application using
Tapestry, rather than using Tapestry IoC as part of some other application).
And, of course, version numbers change all the
time!</p><p> </p><p></p></div>
</div>
<div class="clearer"></div>
Modified: websites/production/tapestry/content/operation-tracker.html
==============================================================================
--- websites/production/tapestry/content/operation-tracker.html (original)
+++ websites/production/tapestry/content/operation-tracker.html Sat Aug 8
18:20:03 2015
@@ -27,16 +27,6 @@
</title>
<link type="text/css" rel="stylesheet" href="/resources/space.css">
- <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet'
type='text/css' />
- <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet'
type='text/css' />
- <script src='/resources/highlighter/scripts/shCore.js'
type='text/javascript'></script>
- <script src='/resources/highlighter/scripts/shBrushJava.js'
type='text/javascript'></script>
- <script src='/resources/highlighter/scripts/shBrushXml.js'
type='text/javascript'></script>
- <script src='/resources/highlighter/scripts/shBrushPlain.js'
type='text/javascript'></script>
- <script type="text/javascript">
- SyntaxHighlighter.defaults['toolbar'] = false;
- SyntaxHighlighter.all();
- </script>
<link href="/styles/style.css" rel="stylesheet" type="text/css"/>
@@ -106,7 +96,7 @@
</div>
</li></ul>
-</div><p>The <a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/OperationTracker.html">OperationTracker</a>
is a resource; it's actually a singleton, and is available for injection into
any IoC service (or Tapestry component).</p><p>Using the OperationTracker you
may run a Runnable, or invoke an Invokable (returning a typed response).
 Associated with the operation is a description string.</p><p>If there are
no exceptions, then no problem.</p><p>If there  are exceptions, then
you'll see the console output logged at the point of the
exception:</p><pre></pre><p>qtp644826761-13 [ERROR] Registry Operations
trace:<br clear="none">qtp644826761-13 [ERROR] Registry [ 1] Handling page
render request for page DatumEditor<br clear="none">qtp644826761-13 [ERROR]
Registry [ 2] Constructing instance of page class
org.apache.tapestry5.integration.app1.pages.DatumEditor<br
clear="none">qtp644826761-13 [ERROR] Registry [ 3] Assem
bling root component for page DatumEditor<br clear="none">qtp644826761-13
[ERROR] Registry [ 4] Running component class transformations on
org.apache.tapestry5.integration.app1.pages.Datum<br
clear="none">qtp644826761-13 [ERROR] RequestExceptionHandler Processing of
request failed with uncaught exception: java.lang.RuntimeException: Exception
assembling root component of page DatumEditor: Unable to instantiate instance
of transformed class org.apache.tapestry5.integration.app1.pages.DatumEditor:
java.lang.reflect.InvocationTargetException<br
clear="none">java.lang.RuntimeException: Exception assembling root component of
page DatumEditor: Unable to instantiate instance of transformed class
org.apache.tapestry5.integration.app1.pages.DatumEditor:
java.lang.reflect.InvocationTargetException<br clear="none">at
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.performAssembleRootComponent(ComponentAssemblerImpl.<a
shape="rect" class="external-link" href="http://java:129" >jav
a:129</a>)<br clear="none">at
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.access$000(ComponentAssemblerImpl.java:37)<br
clear="none">at
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$1.invoke(ComponentAssemblerImpl.java:81)<br
clear="none">at
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$1.invoke(ComponentAssemblerImpl.java:78)<br
clear="none">at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)<br
clear="none">at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)<br
clear="none">at
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.<a
shape="rect" class="external-link" href="http://java:1258" >java:1258</a>)<br
clear="none">at
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.assembleRootComponent(ComponentAssemblerImpl.java:76)<br
clear="none">at
org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageL
oaderImpl.<a shape="rect" class="external-link" href="http://java:197"
>java:197</a>)<br clear="none">at
org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.<a
shape="rect" class="external-link" href="http://java:190" >java:190</a>)<br
clear="none">at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)<br
clear="none">at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)<br
clear="none">at
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.<a
shape="rect" class="external-link" href="http://java:1258" >java:1258</a>)<br
clear="none">at
org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.<a
shape="rect" class="external-link" href="http://java:189" >java:189</a>)<br
clear="none">at $PageLoader_13a0346ec83c4e52.loadPage(Unknown Source)<br
clear="none">at
org.apache.tapestry5.internal.services.PageSourceImpl.getPage(PageSourceImpl.
<a shape="rect" class="external-link" href="http://java:104" >java:104</a>)<br
clear="none">at $PageSource_13a0346ec83c4e51.getPage(Unknown Source)<br
clear="none">at $PageSource_13a0346ec83c4e50.getPage(Unknown Source)<br
clear="none">at
org.apache.tapestry5.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:86)<br
clear="none">at $RequestPageCache_13a0346ec83c4e4f.get(Unknown Source)<br
clear="none">at $RequestPageCache_13a0346ec83c4e4e.get(Unknown Source)<br
clear="none">at
org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:56)<br
clear="none">at
org.apache.tapestry5.modules.TapestryModule$34.handle(TapestryModule.<a
shape="rect" class="external-link" href="http://java:1978" >java:1978</a>)<br
clear="none">at $PageRenderRequestHandler_13a0346ec83c4f9c.handle(Unknown
Source)<br clear="none">at
$PageRenderRequestHandler_13a0346ec83c4f97.handle(Unknown Source)<br
clear="none">at org.apache.tapestry5.internal
.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)<br
clear="none">at
org.apache.tapestry5.internal.services.DeferredResponseRenderer.handlePageRender(DeferredResponseRenderer.java:52)<br
clear="none">at
$ComponentRequestFilter_13a0346ec83c4f95.handlePageRender(Unknown Source)<br
clear="none">at
$ComponentRequestHandler_13a0346ec83c4f98.handlePageRender(Unknown Source)<br
clear="none">at
org.apache.tapestry5.services.InitializeActivePageName.handlePageRender(InitializeActivePageName.java:47)<br
clear="none">at
$ComponentRequestFilter_13a0346ec83c4f94.handlePageRender(Unknown Source)<br
clear="none">at
$ComponentRequestHandler_13a0346ec83c4f98.handlePageRender(Unknown Source)<br
clear="none">at
org.apache.tapestry5.internal.services.ProductionModeUnknownComponentFilter.handlePageRender(ProductionModeUnknownComponentFilter.java:62)<br
clear="none">at
$ComponentRequestFilter_13a0346ec83c4f93.handlePageRender(Unknown Source)<br
clear=
"none">at $ComponentRequestHandler_13a0346ec83c4f98.handlePageRender(Unknown
Source)<br clear="none">at
org.apache.tapestry5.internal.services.RequestOperationTracker$2.run(RequestOperationTracker.java:73)<br
clear="none">at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:56)<br
clear="none">at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:60)<br
clear="none">at
org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.<a shape="rect"
class="external-link" href="http://java:1252" >java:1252</a>)<br
clear="none">at
org.apache.tapestry5.internal.services.RequestOperationTracker.handlePageRender(RequestOperationTracker.java:66)<br
clear="none">at
$ComponentRequestFilter_13a0346ec83c4f92.handlePageRender(Unknown Source)<br
clear="none">at
$ComponentRequestHandler_13a0346ec83c4f98.handlePageRender(Unknown Source)<br
clear="none">at
$ComponentRequestHandler_13a0346ec83c4f81.handlePageRender(Unknown
Source)<br clear="none">at
org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:52)<br
clear="none">at $Dispatcher_13a0346ec83c4f7f.dispatch(Unknown Source)<br
clear="none">at $Dispatcher_13a0346ec83c4f80.dispatch(Unknown Source)<br
clear="none">at $Dispatcher_13a0346ec83c4f74.dispatch(Unknown Source)<br
clear="none">at
org.apache.tapestry5.modules.TapestryModule$RequestHandlerTerminator.service(TapestryModule.<a
shape="rect" class="external-link" href="http://java:304" >java:304</a>)<br
clear="none">at
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)<br
clear="none">at $RequestFilter_13a0346ec83c4f73.service(Unknown Source)<br
clear="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br
clear="none">at
org.apache.tapestry5.modules.TapestryModule$3.service(TapestryModule.<a
shape="rect" class="external-link" href="http://java:854" >java:854</a>)<br
clear="none">at $RequestHandler_1
3a0346ec83c4f75.service(Unknown Source)<br clear="none">at
org.apache.tapestry5.modules.TapestryModule$2.service(TapestryModule.<a
shape="rect" class="external-link" href="http://java:844" >java:844</a>)<br
clear="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br
clear="none">at
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:89)<br
clear="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br
clear="none">at
org.apache.tapestry5.integration.app1.services.AppModule$2.service(AppModule.<a
shape="rect" class="external-link" href="http://java:111" >java:111</a>)<br
clear="none">at $RequestFilter_13a0346ec83c4f71.service(Unknown Source)<br
clear="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br
clear="none">at $RequestHandler_13a0346ec83c4f6a.service(Unknown Source)<br
clear="none">at
org.apache.tapestry5.modules.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.<a
shape=
"rect" class="external-link" href="http://java:255" >java:255</a>)<br
clear="none">at
org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:59)<br
clear="none">at $HttpServletRequestHandler_13a0346ec83c4f6c.service(Unknown
Source)<br clear="none">at
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)<br
clear="none">at $HttpServletRequestFilter_13a0346ec83c4f6d.service(Unknown
Source)<br clear="none">at
$HttpServletRequestFilter_13a0346ec83c4f68.service(Unknown Source)<br
clear="none">at $HttpServletRequestHandler_13a0346ec83c4f6c.service(Unknown
Source)<br clear="none">at
org.apache.tapestry5.modules.TapestryModule$1.service(TapestryModule.<a
shape="rect" class="external-link" href="http://java:804" >java:804</a>)<br
clear="none">at $HttpServletRequestHandler_13a0346ec83c4f6c.service(Unknown
Source)<br clear="none">at
$HttpServletRequestHandler_13a0346ec83c4f67.service(Unknown Source)<br
clear="none">at org.apache.tapestry5.
TapestryFilter.doFilter(TapestryFilter.<a shape="rect" class="external-link"
href="http://java:166" >java:166</a>)<br clear="none">at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.<a
shape="rect" class="external-link" href="http://java:1291" >java:1291</a>)<br
clear="none">at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.<a
shape="rect" class="external-link" href="http://java:443" >java:443</a>)<br
clear="none">at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.<a
shape="rect" class="external-link" href="http://java:137" >java:137</a>)<br
clear="none">at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.<a
shape="rect" class="external-link" href="http://java:556" >java:556</a>)<br
clear="none">at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.<a
shape="rect" class="external-link" href="http://java:227" >java:227</a>)<br
clear="none">at org.eclipse.jetty.server.handler.Conte
xtHandler.doHandle(ContextHandler.<a shape="rect" class="external-link"
href="http://java:1044" >java:1044</a>)<br clear="none">at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.<a shape="rect"
class="external-link" href="http://java:372" >java:372</a>)<br clear="none">at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.<a
shape="rect" class="external-link" href="http://java:189" >java:189</a>)<br
clear="none">at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.<a
shape="rect" class="external-link" href="http://java:978" >java:978</a>)<br
clear="none">at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.<a
shape="rect" class="external-link" href="http://java:135" >java:135</a>)<br
clear="none">at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.<a
shape="rect" class="external-link" href="http://java:116" >java:116</a>)<br
clear="none">at org.eclipse.jetty.server.Server.handle(Server.<
a shape="rect" class="external-link" href="http://java:369" >java:369</a>)<br
clear="none">at
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.<a
shape="rect" class="external-link" href="http://java:486" >java:486</a>)<br
clear="none">at
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.<a
shape="rect" class="external-link" href="http://java:933" >java:933</a>)<br
clear="none">at
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.<a
shape="rect" class="external-link" href="http://java:995" >java:995</a>)<br
clear="none">at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.<a
shape="rect" class="external-link" href="http://java:644" >java:644</a>)<br
clear="none">at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.<a
shape="rect" class="external-link" href="http://java:235" >java:235</a>)<br
clear="none">at org.eclipse.jetty.server.AsyncHttpConnect
ion.handle(AsyncHttpConnection.java:82)<br clear="none">at
org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.<a
shape="rect" class="external-link" href="http://java:668" >java:668</a>)<br
clear="none">at
org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)<br
clear="none">at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.<a
shape="rect" class="external-link" href="http://java:608" >java:608</a>)<br
clear="none">at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.<a
shape="rect" class="external-link" href="http://java:543" >java:543</a>)<br
clear="none">at java.lang.Thread.run(Thread.<a shape="rect"
class="external-link" href="http://java:724" >java:724</a>)<br
clear="none">Caused by: java.lang.RuntimeException: Unable to instantiate
instance of transformed class
org.apache.tapestry5.integration.app1.pages.DatumEditor:
java.lang.reflect.InvocationTargetException<br clear="none">at or
g.apache.tapestry5.internal.plastic.ClassInstantiatorImpl.newInstance(ClassInstantiatorImpl.<a
shape="rect" class="external-link" href="http://java:113" >java:113</a>)<br
clear="none">at
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$2$1.newInstance(ComponentInstantiatorSourceImpl.<a
shape="rect" class="external-link" href="http://java:235" >java:235</a>)<br
clear="none">at
org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.<init>(InternalComponentResourcesImpl.<a
shape="rect" class="external-link" href="http://java:163" >java:163</a>)<br
clear="none">at
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.<init>(ComponentPageElementImpl.<a
shape="rect" class="external-link" href="http://java:555" >java:555</a>)<br
clear="none">at
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.<init>(ComponentPageElementImpl.<a
shape="rect" class="external-link" href="http://java:579" >java:579</a>)<br
clear=
"none">at
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.performAssembleRootComponent(ComponentAssemblerImpl.java:97)<br
clear="none">... 94 more<br clear="none">Caused by:
java.lang.reflect.InvocationTargetException<br clear="none">at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)<br
clear="none">at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)<br
clear="none">at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)<br
clear="none">at java.lang.reflect.Constructor.newInstance(Constructor.<a
shape="rect" class="external-link" href="http://java:526" >java:526</a>)<br
clear="none">at
org.apache.tapestry5.internal.plastic.ClassInstantiatorImpl.newInstance(ClassInstantiatorImpl.<a
shape="rect" class="external-link" href="http://java:109" >java:109</a>)<br
clear="none">... 99 more<br clear="none">Caused by:
org.apache.tapestry5.ioc.internal.OperationExceptio
n: Field _value of class org.apache.tapestry5.integration.app1.pages.Datum
must be instrumented, and may not be public.<br clear="none">at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.<a
shape="rect" class="external-link" href="http://java:184" >java:184</a>)<br
clear="none">at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:62)<br
clear="none">at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:60)<br
clear="none">at
org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.<a shape="rect"
class="external-link" href="http://java:1252" >java:1252</a>)<br
clear="none">at
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.transform(ComponentInstantiatorSourceImpl.<a
shape="rect" class="external-link" href="http://java:266" >java:266</a>)<br
clear="none">at
org.apache.tapestry5.internal.plastic.PlasticClassPool.loadAndTransformClass(P
lasticClassPool.<a shape="rect" class="external-link" href="http://java:368"
>java:368</a>)<br clear="none">at
org.apache.tapestry5.internal.plastic.PlasticClassLoader.loadClass(PlasticClassLoader.java:38)<br
clear="none">at java.lang.ClassLoader.loadClass(ClassLoader.<a shape="rect"
class="external-link" href="http://java:357" >java:357</a>)<br clear="none">at
org.apache.tapestry5.integration.app1.pages.DatumEditor.initializeInstance(DatumEditor.java:22)<br
clear="none">at
org.apache.tapestry5.integration.app1.pages.DatumEditor.<init>(DatumEditor.java)<br
clear="none">... 104 more<br clear="none">Caused by:
java.lang.IllegalArgumentException: Field _value of class
org.apache.tapestry5.integration.app1.pages.Datum must be instrumented, and may
not be public.<br clear="none">at
org.apache.tapestry5.internal.plastic.PlasticFieldImpl.ensureNotPublic(PlasticFieldImpl.<a
shape="rect" class="external-link" href="http://java:166" >java:166</a>)<br
clear="none">at org.apache.tapestry5
.internal.plastic.PlasticFieldImpl.replaceFieldReadAccess(PlasticFieldImpl.<a
shape="rect" class="external-link" href="http://java:423" >java:423</a>)<br
clear="none">at
org.apache.tapestry5.internal.plastic.PlasticFieldImpl.setComputedConduit(PlasticFieldImpl.<a
shape="rect" class="external-link" href="http://java:292" >java:292</a>)<br
clear="none">at
org.apache.tapestry5.internal.transform.UnclaimedFieldWorker.transformField(UnclaimedFieldWorker.java:99)<br
clear="none">at
org.apache.tapestry5.internal.transform.UnclaimedFieldWorker.transform(UnclaimedFieldWorker.java:88)<br
clear="none">at
$ComponentClassTransformWorker2_13a0346ec83c4e9a.transform(Unknown Source)<br
clear="none">at
$ComponentClassTransformWorker2_13a0346ec83c4e9c.transform(Unknown Source)<br
clear="none">at
$ComponentClassTransformWorker2_13a0346ec83c4e7f.transform(Unknown Source)<br
clear="none">at
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$3.run(ComponentInstantiatorSourceImpl.<a
sh
ape="rect" class="external-link" href="http://java:316" >java:316</a>)<br
clear="none">at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:56)<br
clear="none">... 112 more</p><p>Notice how the operation trace at the top of
the text succinctly explains how execution arrived at the point of failure and
why, information that isn't captured in a stack trace.</p><p>This operation
trace appears in the Tapestry web applications, as part of the <a shape="rect"
href="runtime-exceptions.html">default exception report page</a>.</p><p>There
are times, especially when tracking down startup failures, where it is useful
to see the operations log even without explicit
exceptions.</p><p>Enabling <strong>debug</strong> level logging for
the <strong>org.apache.tapestry5.ioc.Registry</strong> logging category
will provide huge volumes of output in the console:</p><pre></pre><p>[DEBUG]
Registry [ 1] --> Creating non-proxied instance of service ServiceConf
igurationListenerHub<br clear="none">[DEBUG] Registry [ 2] --> Creating
plan to instantiate
org.apache.tapestry5.ioc.services.ServiceConfigurationListenerHub via public
org.apache.tapestry5.ioc.services.ServiceConfigurationListenerHub(java.util.List)<br
clear="none">[DEBUG] Registry [ 3] --> Determining injection value for
parameter #1 (java.util.List)<br clear="none">[DEBUG] Registry [ 4] -->
Collecting ordered configuration for service ServiceConfigurationListenerHub<br
clear="none">[DEBUG] Registry [ 5] --> Invoking
org.apache.tapestry5.ioc.FredModule.configureServiceConfigurationListener(OrderedConfiguration,
CatchAllServiceConfigurationListener) (at FredModule.<a shape="rect"
class="external-link" href="http://java:141" >java:141</a>)<br
clear="none">[DEBUG] Registry [ 6] --> Determining injection value for
parameter #1 (org.apache.tapestry5.ioc.OrderedConfiguration)<br
clear="none">[DEBUG] Registry [ 6] <-- Determining injection value for
parameter #1 (org.ap
ache.tapestry5.ioc.OrderedConfiguration) [0.17 ms]<br clear="none">[DEBUG]
Registry [ 6] --> Determining injection value for parameter #2
(org.apache.tapestry5.ioc.CatchAllServiceConfigurationListener)<br
clear="none">[DEBUG] Registry [ 7] --> Creating proxy for service
MasterObjectProvider<br clear="none">[DEBUG] Registry [ 7] <-- Creating
proxy for service MasterObjectProvider [2.82 ms]<br clear="none">[DEBUG]
Registry [ 7] --> Realizing service MasterObjectProvider<br
clear="none">[DEBUG] Registry [ 8] --> Instantiating service
MasterObjectProvider implementation via
org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl(List,
OperationTracker) (at MasterObjectProviderImpl.java:33) via
org.apache.tapestry5.ioc.modules.TapestryIOCModule.bind(ServiceBinder) (at
TapestryIOCModule.java:50)<br clear="none">[DEBUG] Registry [ 9] -->
Creating plan to instantiate
org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl via public
org.apache.tapes
try5.ioc.internal.services.MasterObjectProviderImpl(java.util.List,org.apache.tapestry5.ioc.OperationTracker)<br
clear="none">[DEBUG] Registry [ 10] --> Determining injection value for
parameter #1 (java.util.List)<br clear="none">[DEBUG] Registry [ 11] -->
Collecting ordered configuration for service MasterObjectProvider<br
clear="none">[DEBUG] Registry [ 12] --> Invoking
org.apache.tapestry5.ioc.modules.TapestryIOCModule.setupObjectProviders(OrderedConfiguration,
ServiceOverride) (at TapestryIOCModule.<a shape="rect" class="external-link"
href="http://java:136" >java:136</a>)<br clear="none">[DEBUG] Registry [ 13]
--> Determining injection value for parameter #1
(org.apache.tapestry5.ioc.OrderedConfiguration)<br clear="none">[DEBUG]
Registry [ 13] <-- Determining injection value for parameter #1
(org.apache.tapestry5.ioc.OrderedConfiguration) [0.17 ms]<br
clear="none">[DEBUG] Registry [ 13] --> Determining injection value for
parameter #2 (org.apache.tapestry5.io
c.services.ServiceOverride)<br clear="none">[DEBUG] Registry [ 14] -->
Creating proxy for service ServiceOverride<br clear="none">[DEBUG] Registry [
14] <-- Creating proxy for service ServiceOverride [2.15 ms]<br
clear="none">[DEBUG] Registry [ 13] <-- Determining injection value for
parameter #2 (org.apache.tapestry5.ioc.services.ServiceOverride) [2.62 ms]<br
clear="none">[DEBUG] Registry [ 13] --> Creating proxy for service
UpdateListenerHub<br clear="none">[DEBUG] Registry [ 13] <-- Creating proxy
for service UpdateListenerHub [2.28 ms]</p><p>...</p><p>The output identifies
operation depth (the number in square brackets), whether the operation is
starting (–>) or finishing (<–), and even the
execution time of the operation.</p></div>
+</div><p>The <a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/OperationTracker.html">OperationTracker</a>
is a resource; it's actually a singleton, and is available for injection into
any IoC service (or Tapestry component).</p><p>Using the OperationTracker you
may run a Runnable, or invoke an Invokable (returning a typed response).
 Associated with the operation is a description string.</p><p>If there are
no exceptions, then no problem.</p><p>If there  are exceptions, then
you'll see the console output logged at the point of the
exception:</p><pre></pre><p>qtp644826761-13 [ERROR] Registry Operations
trace:<br clear="none">qtp644826761-13 [ERROR] Registry [ 1] Handling page
render request for page DatumEditor<br clear="none">qtp644826761-13 [ERROR]
Registry [ 2] Constructing instance of page class
org.apache.tapestry5.integration.app1.pages.DatumEditor<br
clear="none">qtp644826761-13 [ERROR] Registry [ 3] Assem
bling root component for page DatumEditor<br clear="none">qtp644826761-13
[ERROR] Registry [ 4] Running component class transformations on
org.apache.tapestry5.integration.app1.pages.Datum<br
clear="none">qtp644826761-13 [ERROR] RequestExceptionHandler Processing of
request failed with uncaught exception: java.lang.RuntimeException: Exception
assembling root component of page DatumEditor: Unable to instantiate instance
of transformed class org.apache.tapestry5.integration.app1.pages.DatumEditor:
java.lang.reflect.InvocationTargetException<br
clear="none">java.lang.RuntimeException: Exception assembling root component of
page DatumEditor: Unable to instantiate instance of transformed class
org.apache.tapestry5.integration.app1.pages.DatumEditor:
java.lang.reflect.InvocationTargetException<br clear="none">at
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.performAssembleRootComponent(ComponentAssemblerImpl.<a
shape="rect" class="external-link" href="http://java:129" >jav
a:129</a>)<br clear="none">at
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.access$000(ComponentAssemblerImpl.java:37)<br
clear="none">at
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$1.invoke(ComponentAssemblerImpl.java:81)<br
clear="none">at
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$1.invoke(ComponentAssemblerImpl.java:78)<br
clear="none">at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)<br
clear="none">at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)<br
clear="none">at
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.<a
shape="rect" class="external-link" href="http://java:1258" >java:1258</a>)<br
clear="none">at
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.assembleRootComponent(ComponentAssemblerImpl.java:76)<br
clear="none">at
org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageL
oaderImpl.<a shape="rect" class="external-link" href="http://java:197"
>java:197</a>)<br clear="none">at
org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.<a
shape="rect" class="external-link" href="http://java:190" >java:190</a>)<br
clear="none">at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)<br
clear="none">at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)<br
clear="none">at
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.<a
shape="rect" class="external-link" href="http://java:1258" >java:1258</a>)<br
clear="none">at
org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.<a
shape="rect" class="external-link" href="http://java:189" >java:189</a>)<br
clear="none">at $PageLoader_13a0346ec83c4e52.loadPage(Unknown Source)<br
clear="none">at
org.apache.tapestry5.internal.services.PageSourceImpl.getPage(PageSourceImpl.
<a shape="rect" class="external-link" href="http://java:104" >java:104</a>)<br
clear="none">at $PageSource_13a0346ec83c4e51.getPage(Unknown Source)<br
clear="none">at $PageSource_13a0346ec83c4e50.getPage(Unknown Source)<br
clear="none">at
org.apache.tapestry5.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:86)<br
clear="none">at $RequestPageCache_13a0346ec83c4e4f.get(Unknown Source)<br
clear="none">at $RequestPageCache_13a0346ec83c4e4e.get(Unknown Source)<br
clear="none">at
org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:56)<br
clear="none">at
org.apache.tapestry5.modules.TapestryModule$34.handle(TapestryModule.<a
shape="rect" class="external-link" href="http://java:1978" >java:1978</a>)<br
clear="none">at $PageRenderRequestHandler_13a0346ec83c4f9c.handle(Unknown
Source)<br clear="none">at
$PageRenderRequestHandler_13a0346ec83c4f97.handle(Unknown Source)<br
clear="none">at org.apache.tapestry5.internal
.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)<br
clear="none">at
org.apache.tapestry5.internal.services.DeferredResponseRenderer.handlePageRender(DeferredResponseRenderer.java:52)<br
clear="none">at
$ComponentRequestFilter_13a0346ec83c4f95.handlePageRender(Unknown Source)<br
clear="none">at
$ComponentRequestHandler_13a0346ec83c4f98.handlePageRender(Unknown Source)<br
clear="none">at
org.apache.tapestry5.services.InitializeActivePageName.handlePageRender(InitializeActivePageName.java:47)<br
clear="none">at
$ComponentRequestFilter_13a0346ec83c4f94.handlePageRender(Unknown Source)<br
clear="none">at
$ComponentRequestHandler_13a0346ec83c4f98.handlePageRender(Unknown Source)<br
clear="none">at
org.apache.tapestry5.internal.services.ProductionModeUnknownComponentFilter.handlePageRender(ProductionModeUnknownComponentFilter.java:62)<br
clear="none">at
$ComponentRequestFilter_13a0346ec83c4f93.handlePageRender(Unknown Source)<br
clear=
"none">at $ComponentRequestHandler_13a0346ec83c4f98.handlePageRender(Unknown
Source)<br clear="none">at
org.apache.tapestry5.internal.services.RequestOperationTracker$2.run(RequestOperationTracker.java:73)<br
clear="none">at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:56)<br
clear="none">at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:60)<br
clear="none">at
org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.<a shape="rect"
class="external-link" href="http://java:1252" >java:1252</a>)<br
clear="none">at
org.apache.tapestry5.internal.services.RequestOperationTracker.handlePageRender(RequestOperationTracker.java:66)<br
clear="none">at
$ComponentRequestFilter_13a0346ec83c4f92.handlePageRender(Unknown Source)<br
clear="none">at
$ComponentRequestHandler_13a0346ec83c4f98.handlePageRender(Unknown Source)<br
clear="none">at
$ComponentRequestHandler_13a0346ec83c4f81.handlePageRender(Unknown
Source)<br clear="none">at
org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:52)<br
clear="none">at $Dispatcher_13a0346ec83c4f7f.dispatch(Unknown Source)<br
clear="none">at $Dispatcher_13a0346ec83c4f80.dispatch(Unknown Source)<br
clear="none">at $Dispatcher_13a0346ec83c4f74.dispatch(Unknown Source)<br
clear="none">at
org.apache.tapestry5.modules.TapestryModule$RequestHandlerTerminator.service(TapestryModule.<a
shape="rect" class="external-link" href="http://java:304" >java:304</a>)<br
clear="none">at
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)<br
clear="none">at $RequestFilter_13a0346ec83c4f73.service(Unknown Source)<br
clear="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br
clear="none">at
org.apache.tapestry5.modules.TapestryModule$3.service(TapestryModule.<a
shape="rect" class="external-link" href="http://java:854" >java:854</a>)<br
clear="none">at $RequestHandler_1
3a0346ec83c4f75.service(Unknown Source)<br clear="none">at
org.apache.tapestry5.modules.TapestryModule$2.service(TapestryModule.<a
shape="rect" class="external-link" href="http://java:844" >java:844</a>)<br
clear="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br
clear="none">at
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:89)<br
clear="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br
clear="none">at
org.apache.tapestry5.integration.app1.services.AppModule$2.service(AppModule.<a
shape="rect" class="external-link" href="http://java:111" >java:111</a>)<br
clear="none">at $RequestFilter_13a0346ec83c4f71.service(Unknown Source)<br
clear="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br
clear="none">at $RequestHandler_13a0346ec83c4f6a.service(Unknown Source)<br
clear="none">at
org.apache.tapestry5.modules.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.<a
shape=
"rect" class="external-link" href="http://java:255" >java:255</a>)<br
clear="none">at
org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:59)<br
clear="none">at $HttpServletRequestHandler_13a0346ec83c4f6c.service(Unknown
Source)<br clear="none">at
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)<br
clear="none">at $HttpServletRequestFilter_13a0346ec83c4f6d.service(Unknown
Source)<br clear="none">at
$HttpServletRequestFilter_13a0346ec83c4f68.service(Unknown Source)<br
clear="none">at $HttpServletRequestHandler_13a0346ec83c4f6c.service(Unknown
Source)<br clear="none">at
org.apache.tapestry5.modules.TapestryModule$1.service(TapestryModule.<a
shape="rect" class="external-link" href="http://java:804" >java:804</a>)<br
clear="none">at $HttpServletRequestHandler_13a0346ec83c4f6c.service(Unknown
Source)<br clear="none">at
$HttpServletRequestHandler_13a0346ec83c4f67.service(Unknown Source)<br
clear="none">at org.apache.tapestry5.
TapestryFilter.doFilter(TapestryFilter.<a shape="rect" class="external-link"
href="http://java:166" >java:166</a>)<br clear="none">at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.<a
shape="rect" class="external-link" href="http://java:1291" >java:1291</a>)<br
clear="none">at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.<a
shape="rect" class="external-link" href="http://java:443" >java:443</a>)<br
clear="none">at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.<a
shape="rect" class="external-link" href="http://java:137" >java:137</a>)<br
clear="none">at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.<a
shape="rect" class="external-link" href="http://java:556" >java:556</a>)<br
clear="none">at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.<a
shape="rect" class="external-link" href="http://java:227" >java:227</a>)<br
clear="none">at org.eclipse.jetty.server.handler.Conte
xtHandler.doHandle(ContextHandler.<a shape="rect" class="external-link"
href="http://java:1044" >java:1044</a>)<br clear="none">at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.<a shape="rect"
class="external-link" href="http://java:372" >java:372</a>)<br clear="none">at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.<a
shape="rect" class="external-link" href="http://java:189" >java:189</a>)<br
clear="none">at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.<a
shape="rect" class="external-link" href="http://java:978" >java:978</a>)<br
clear="none">at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.<a
shape="rect" class="external-link" href="http://java:135" >java:135</a>)<br
clear="none">at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.<a
shape="rect" class="external-link" href="http://java:116" >java:116</a>)<br
clear="none">at org.eclipse.jetty.server.Server.handle(Server.<
a shape="rect" class="external-link" href="http://java:369" >java:369</a>)<br
clear="none">at
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.<a
shape="rect" class="external-link" href="http://java:486" >java:486</a>)<br
clear="none">at
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.<a
shape="rect" class="external-link" href="http://java:933" >java:933</a>)<br
clear="none">at
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.<a
shape="rect" class="external-link" href="http://java:995" >java:995</a>)<br
clear="none">at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.<a
shape="rect" class="external-link" href="http://java:644" >java:644</a>)<br
clear="none">at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.<a
shape="rect" class="external-link" href="http://java:235" >java:235</a>)<br
clear="none">at org.eclipse.jetty.server.AsyncHttpConnect
ion.handle(AsyncHttpConnection.java:82)<br clear="none">at
org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.<a
shape="rect" class="external-link" href="http://java:668" >java:668</a>)<br
clear="none">at
org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)<br
clear="none">at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.<a
shape="rect" class="external-link" href="http://java:608" >java:608</a>)<br
clear="none">at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.<a
shape="rect" class="external-link" href="http://java:543" >java:543</a>)<br
clear="none">at java.lang.Thread.run(Thread.<a shape="rect"
class="external-link" href="http://java:724" >java:724</a>)<br
clear="none">Caused by: java.lang.RuntimeException: Unable to instantiate
instance of transformed class
org.apache.tapestry5.integration.app1.pages.DatumEditor:
java.lang.reflect.InvocationTargetException<br clear="none">at or
g.apache.tapestry5.internal.plastic.ClassInstantiatorImpl.newInstance(ClassInstantiatorImpl.<a
shape="rect" class="external-link" href="http://java:113" >java:113</a>)<br
clear="none">at
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$2$1.newInstance(ComponentInstantiatorSourceImpl.<a
shape="rect" class="external-link" href="http://java:235" >java:235</a>)<br
clear="none">at
org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.<init>(InternalComponentResourcesImpl.<a
shape="rect" class="external-link" href="http://java:163" >java:163</a>)<br
clear="none">at
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.<init>(ComponentPageElementImpl.<a
shape="rect" class="external-link" href="http://java:555" >java:555</a>)<br
clear="none">at
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.<init>(ComponentPageElementImpl.<a
shape="rect" class="external-link" href="http://java:579" >java:579</a>)<br
clear=
"none">at
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.performAssembleRootComponent(ComponentAssemblerImpl.java:97)<br
clear="none">... 94 more<br clear="none">Caused by:
java.lang.reflect.InvocationTargetException<br clear="none">at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)<br
clear="none">at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)<br
clear="none">at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)<br
clear="none">at java.lang.reflect.Constructor.newInstance(Constructor.<a
shape="rect" class="external-link" href="http://java:526" >java:526</a>)<br
clear="none">at
org.apache.tapestry5.internal.plastic.ClassInstantiatorImpl.newInstance(ClassInstantiatorImpl.<a
shape="rect" class="external-link" href="http://java:109" >java:109</a>)<br
clear="none">... 99 more<br clear="none">Caused by:
org.apache.tapestry5.ioc.internal.OperationExceptio
n: Field _value of class org.apache.tapestry5.integration.app1.pages.Datum
must be instrumented, and may not be public.<br clear="none">at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.<a
shape="rect" class="external-link" href="http://java:184" >java:184</a>)<br
clear="none">at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:62)<br
clear="none">at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:60)<br
clear="none">at
org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.<a shape="rect"
class="external-link" href="http://java:1252" >java:1252</a>)<br
clear="none">at
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.transform(ComponentInstantiatorSourceImpl.<a
shape="rect" class="external-link" href="http://java:266" >java:266</a>)<br
clear="none">at
org.apache.tapestry5.internal.plastic.PlasticClassPool.loadAndTransformClass(P
lasticClassPool.<a shape="rect" class="external-link" href="http://java:368"
>java:368</a>)<br clear="none">at
org.apache.tapestry5.internal.plastic.PlasticClassLoader.loadClass(PlasticClassLoader.java:38)<br
clear="none">at java.lang.ClassLoader.loadClass(ClassLoader.<a shape="rect"
class="external-link" href="http://java:357" >java:357</a>)<br clear="none">at
org.apache.tapestry5.integration.app1.pages.DatumEditor.initializeInstance(DatumEditor.java:22)<br
clear="none">at
org.apache.tapestry5.integration.app1.pages.DatumEditor.<init>(DatumEditor.java)<br
clear="none">... 104 more<br clear="none">Caused by:
java.lang.IllegalArgumentException: Field _value of class
org.apache.tapestry5.integration.app1.pages.Datum must be instrumented, and may
not be public.<br clear="none">at
org.apache.tapestry5.internal.plastic.PlasticFieldImpl.ensureNotPublic(PlasticFieldImpl.<a
shape="rect" class="external-link" href="http://java:166" >java:166</a>)<br
clear="none">at org.apache.tapestry5
.internal.plastic.PlasticFieldImpl.replaceFieldReadAccess(PlasticFieldImpl.<a
shape="rect" class="external-link" href="http://java:423" >java:423</a>)<br
clear="none">at
org.apache.tapestry5.internal.plastic.PlasticFieldImpl.setComputedConduit(PlasticFieldImpl.<a
shape="rect" class="external-link" href="http://java:292" >java:292</a>)<br
clear="none">at
org.apache.tapestry5.internal.transform.UnclaimedFieldWorker.transformField(UnclaimedFieldWorker.java:99)<br
clear="none">at
org.apache.tapestry5.internal.transform.UnclaimedFieldWorker.transform(UnclaimedFieldWorker.java:88)<br
clear="none">at
$ComponentClassTransformWorker2_13a0346ec83c4e9a.transform(Unknown Source)<br
clear="none">at
$ComponentClassTransformWorker2_13a0346ec83c4e9c.transform(Unknown Source)<br
clear="none">at
$ComponentClassTransformWorker2_13a0346ec83c4e7f.transform(Unknown Source)<br
clear="none">at
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$3.run(ComponentInstantiatorSourceImpl.<a
sh
ape="rect" class="external-link" href="http://java:316" >java:316</a>)<br
clear="none">at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:56)<br
clear="none">... 112 more</p><p>Notice how the operation trace at the top of
the text succinctly explains how execution arrived at the point of failure and
why, information that isn't captured in a stack trace.</p><p>This operation
trace appears in the Tapestry web applications, as part of the <a shape="rect"
href="runtime-exceptions.html">default exception report page</a>.</p><p>There
are times, especially when tracking down startup failures, where it is useful
to see the operations log even without explicit
exceptions.</p><p>Enabling <strong>debug</strong> level logging for
the <strong>org.apache.tapestry5.ioc.Registry</strong> logging category
will provide huge volumes of output in the console:</p><pre></pre><p>[DEBUG]
Registry [ 1] --> Creating non-proxied instance of service ServiceConf
igurationListenerHub<br clear="none">[DEBUG] Registry [ 2] --> Creating
plan to instantiate
org.apache.tapestry5.ioc.services.ServiceConfigurationListenerHub via public
org.apache.tapestry5.ioc.services.ServiceConfigurationListenerHub(java.util.List)<br
clear="none">[DEBUG] Registry [ 3] --> Determining injection value for
parameter #1 (java.util.List)<br clear="none">[DEBUG] Registry [ 4] -->
Collecting ordered configuration for service ServiceConfigurationListenerHub<br
clear="none">[DEBUG] Registry [ 5] --> Invoking
org.apache.tapestry5.ioc.FredModule.configureServiceConfigurationListener(OrderedConfiguration,
CatchAllServiceConfigurationListener) (at FredModule.<a shape="rect"
class="external-link" href="http://java:141" >java:141</a>)<br
clear="none">[DEBUG] Registry [ 6] --> Determining injection value for
parameter #1 (org.apache.tapestry5.ioc.OrderedConfiguration)<br
clear="none">[DEBUG] Registry [ 6] <-- Determining injection value for
parameter #1 (org.ap
ache.tapestry5.ioc.OrderedConfiguration) [0.17 ms]<br clear="none">[DEBUG]
Registry [ 6] --> Determining injection value for parameter #2
(org.apache.tapestry5.ioc.CatchAllServiceConfigurationListener)<br
clear="none">[DEBUG] Registry [ 7] --> Creating proxy for service
MasterObjectProvider<br clear="none">[DEBUG] Registry [ 7] <-- Creating
proxy for service MasterObjectProvider [2.82 ms]<br clear="none">[DEBUG]
Registry [ 7] --> Realizing service MasterObjectProvider<br
clear="none">[DEBUG] Registry [ 8] --> Instantiating service
MasterObjectProvider implementation via
org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl(List,
OperationTracker) (at MasterObjectProviderImpl.java:33) via
org.apache.tapestry5.ioc.modules.TapestryIOCModule.bind(ServiceBinder) (at
TapestryIOCModule.java:50)<br clear="none">[DEBUG] Registry [ 9] -->
Creating plan to instantiate
org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl via public
org.apache.tapes
try5.ioc.internal.services.MasterObjectProviderImpl(java.util.List,org.apache.tapestry5.ioc.OperationTracker)<br
clear="none">[DEBUG] Registry [ 10] --> Determining injection value for
parameter #1 (java.util.List)<br clear="none">[DEBUG] Registry [ 11] -->
Collecting ordered configuration for service MasterObjectProvider<br
clear="none">[DEBUG] Registry [ 12] --> Invoking
org.apache.tapestry5.ioc.modules.TapestryIOCModule.setupObjectProviders(OrderedConfiguration,
ServiceOverride) (at TapestryIOCModule.<a shape="rect" class="external-link"
href="http://java:136" >java:136</a>)<br clear="none">[DEBUG] Registry [ 13]
--> Determining injection value for parameter #1
(org.apache.tapestry5.ioc.OrderedConfiguration)<br clear="none">[DEBUG]
Registry [ 13] <-- Determining injection value for parameter #1
(org.apache.tapestry5.ioc.OrderedConfiguration) [0.17 ms]<br
clear="none">[DEBUG] Registry [ 13] --> Determining injection value for
parameter #2 (org.apache.tapestry5.io
c.services.ServiceOverride)<br clear="none">[DEBUG] Registry [ 14] -->
Creating proxy for service ServiceOverride<br clear="none">[DEBUG] Registry [
14] <-- Creating proxy for service ServiceOverride [2.15 ms]<br
clear="none">[DEBUG] Registry [ 13] <-- Determining injection value for
parameter #2 (org.apache.tapestry5.ioc.services.ServiceOverride) [2.62 ms]<br
clear="none">[DEBUG] Registry [ 13] --> Creating proxy for service
UpdateListenerHub<br clear="none">[DEBUG] Registry [ 13] <-- Creating proxy
for service UpdateListenerHub [2.28 ms]</p><p>...</p><p>The output identifies
operation depth (the number in square brackets), whether the operation is
starting (–>) or finishing (<–), and even the
execution time of the operation.</p><p></p></div>
</div>
<div class="clearer"></div>
Modified: websites/production/tapestry/content/parallel-execution.html
==============================================================================
--- websites/production/tapestry/content/parallel-execution.html (original)
+++ websites/production/tapestry/content/parallel-execution.html Sat Aug 8
18:20:03 2015
@@ -31,8 +31,6 @@
<link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet'
type='text/css' />
<script src='/resources/highlighter/scripts/shCore.js'
type='text/javascript'></script>
<script src='/resources/highlighter/scripts/shBrushJava.js'
type='text/javascript'></script>
- <script src='/resources/highlighter/scripts/shBrushXml.js'
type='text/javascript'></script>
- <script src='/resources/highlighter/scripts/shBrushPlain.js'
type='text/javascript'></script>
<script type="text/javascript">
SyntaxHighlighter.defaults['toolbar'] = false;
SyntaxHighlighter.all();
@@ -76,7 +74,7 @@
</p><div class="confluence-information-macro
confluence-information-macro-information"><p class="title">Added in
5.3</p><span class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body">
</div></div>
<div style="border-right: 20px solid #D8E4F1;border-left: 20px solid #D8E4F1;">
-<p> </p></div>The size of the task queue. When there are at least the
core number of threads in the pool, tasks will be placed in the queue. If the
queue is empty, more threads may be created (up to the maximum pool size). If
the queue is full and all threads have been created, the task is rejected (and
exception is thrown).<p>Defaults to 100.</p></div>
+<p> </p></div>The size of the task queue. When there are at least the
core number of threads in the pool, tasks will be placed in the queue. If the
queue is empty, more threads may be created (up to the maximum pool size). If
the queue is full and all threads have been created, the task is rejected (and
exception is thrown).<p>Defaults to 100.</p><p> </p><p></p></div>
</div>
<div class="clearer"></div>
Modified: websites/production/tapestry/content/registry-startup.html
==============================================================================
--- websites/production/tapestry/content/registry-startup.html (original)
+++ websites/production/tapestry/content/registry-startup.html Sat Aug 8
18:20:03 2015
@@ -31,8 +31,6 @@
<link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet'
type='text/css' />
<script src='/resources/highlighter/scripts/shCore.js'
type='text/javascript'></script>
<script src='/resources/highlighter/scripts/shBrushJava.js'
type='text/javascript'></script>
- <script src='/resources/highlighter/scripts/shBrushXml.js'
type='text/javascript'></script>
- <script src='/resources/highlighter/scripts/shBrushPlain.js'
type='text/javascript'></script>
<script type="text/javascript">
SyntaxHighlighter.defaults['toolbar'] = false;
SyntaxHighlighter.all();
@@ -93,7 +91,7 @@
}
}
</pre>
-</div></div><p></p></div>
+</div></div><p> </p><p></p></div>
</div>
<div class="clearer"></div>
Modified: websites/production/tapestry/content/request-processing.html
==============================================================================
--- websites/production/tapestry/content/request-processing.html (original)
+++ websites/production/tapestry/content/request-processing.html Sat Aug 8
18:20:03 2015
@@ -27,16 +27,6 @@
</title>
<link type="text/css" rel="stylesheet" href="/resources/space.css">
- <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet'
type='text/css' />
- <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet'
type='text/css' />
- <script src='/resources/highlighter/scripts/shCore.js'
type='text/javascript'></script>
- <script src='/resources/highlighter/scripts/shBrushJava.js'
type='text/javascript'></script>
- <script src='/resources/highlighter/scripts/shBrushXml.js'
type='text/javascript'></script>
- <script src='/resources/highlighter/scripts/shBrushPlain.js'
type='text/javascript'></script>
- <script type="text/javascript">
- SyntaxHighlighter.defaults['toolbar'] = false;
- SyntaxHighlighter.all();
- </script>
<link href="/styles/style.css" rel="stylesheet" type="text/css"/>
@@ -67,8 +57,73 @@
</div>
<div id="content">
-<div id="ConfluenceContent"><h1
id="RequestProcessing-RequestProcessing">Request Processing</h1><div
class="navmenu" style="float:right; background:#eee; margin:3px; padding:3px">
-<div class="error"><span class="error">Error formatting macro: contentbylabel:
com.atlassian.confluence.api.service.exceptions.BadRequestException: Could not
parse cql : null</span> </div></div><p>Understanding the request processing
pipeline is very important, as it is one of the chief extension points for
Tapestry.</p><p>Much of the early stages of processing are in the form of
extensible <a shape="rect"
href="pipelinebuilder-service.html">pipelines</a>.</p><h2
id="RequestProcessing-TapestryFilter">Tapestry Filter</h2><p>All incoming
requests originate with the TapestryFilter, which is configured inside the
application's <a shape="rect" href="configuration.html">web.xml</a>.</p><p>The
TapestryFilter is responsible for a number of startup and initialization
functions.</p><p>When it receives a request, the TapestryFilter obtains the <a
shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/HttpServletRequestHandler.html">Htt
pServletRequestHandler</a> service, and invokes its service() method.</p><h2
id="RequestProcessing-HttpServletRequestHandlerPipeline">HttpServletRequestHandler
Pipeline</h2><p>This pipeline performs initial processing of the request. It
can be extended by contributing a <a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/HttpServletRequestFilter.html">HttpServletRequestFilter</a>
into the HttpServletRequestHandler service's configuration.</p><p>Tapestry
does not contribute any filters into this pipeline of its own.</p><p>The
terminator for the pipeline does two things:</p><ul><li>It stores the request
and response into the <a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/RequestGlobals.html">RequestGlobals</a>
service. This is a per-thread scoped service that stores
per-thread/per-request information.</li><li>It wraps the request and response
as a <a s
hape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/Request.html">Request</a>
and <a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/Response.html">Response</a>,
and passes them into the <a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/RequestHandler.html">RequestHandler</a>
pipeline.</li></ul><h2
id="RequestProcessing-RequestHandlerPipeline">RequestHandler
Pipeline</h2><p>This pipeline is where most extensions related to requests take
place. Request represents an abstraction on top of HttpServletRequest.
(Primarily, this exists to bridge from the Servlet API objects to the
corresponding Tapestry objects. This is the basis for the planned portlet
integration for Tapestry.) Where other code and services within Tapestry
require access to information in the request, such as query parameters, th
at information is obtained from the Request (or Response) objects.</p><p>The
RequestHandler pipeline includes a number of built-in
filters:</p><ul><li>CheckForUpdates is responsible for <a shape="rect"
href="class-reloading.html">class and template
reloading</a>.</li><li>Localization identifies the <a shape="rect"
href="localization.html">locale for the user</a>.</li><li>StaticFiles checks
for URLs that are for static files (files that exist inside the web context)
and aborts the request, so that the servlet container can handle the request
normally.</li><li>ErrorFilter catches uncaught exceptions from the lower levels
of Tapestry and presents the exception report page. This involves the <a
shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/RequestExceptionHandler.html">RequestExceptionHandler</a>
service, which is responsible for initializing and rendering the <a
shape="rect" class="external-link" href="http://tapestry.
apache.org/current/apidocs/org/apache/tapestry5/corelib/pages/ExceptionReport.html">core/ExceptionReport</a>
page.</li></ul><p>The terminator for this pipeline stores the Request and the
Response into RequestGlobals, then requests that the <a shape="rect"
class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/Dispatcher.html">MasterDispatcher</a>
service figure out how to handle the request (if it is, indeed, a Tapestry
request).</p><h2 id="RequestProcessing-MasterDispatcherService">Master
Dispatcher Service</h2><p>The MasterDispatcher service is a chain-of-command,
aggregating together (in a specific order), several Dispatcher objects. Each
Dispatcher is built to recognize and process a particular kind of URL.</p><h3
id="RequestProcessing-RootPathDispatcher">RootPath Dispatcher</h3><p>The
RootPath Dispatcher recognizes a request for the application root (i.e., "/")
and handles this the same as a render request for the "Start" page. Supp
ort for the Start page is kept for legacy purposes. Index pages are the
correct approach.</p><h3 id="RequestProcessing-AssetDispatcher">Asset
Dispatcher</h3><p>Requests that begin with "/assets/" are references to <a
shape="rect" href="assets.html">asset resources</a> that are stored on the
classpath, inside the Tapestry JARs (or perhaps inside the JAR for a component
library). The contents of the file will be delivered to the client browser as a
byte stream. This dispatcher also handles requests that are simply polling for
a change to the file.</p><h3
id="RequestProcessing-PageRenderDispatcher">PageRender Dispatcher</h3><p>Page
render requests are requests to render a particular page. Such requests may
include additional elements on the path, which will be treated as activation
context (see ComponentEvent Dispatcher below). Generally speaking, the
activation context is the primary key of some related entity object. This
allows the page to reconstruct the state it will need to succe
ssfully render itself.</p><p>The event handler method for the activate event
may return a value; this is treated the same as the return value from a
component action request; typically this will result in a redirect to another
page. In this way, the activate event can perform simple validation at the page
level ("can the user see this page?").</p><p>Page render URLs consist of the
logical name of the page plus additional path elements for the activation
context. The dispatcher here strips terms off of the path until it finds a
known page name. Thus, "/mypage/27" would look first for a page whose name was
"mypage/27", then look for a page name "mypage". Assuming the second search was
successful, the page would be activated with the context "27". If no logical
page name can be identified, control passes to the next dispatcher.</p><h3
id="RequestProcessing-ComponentEventDispatcher">ComponentEvent
Dispatcher</h3><p>The ComponentEvent dispatcher is used to trigger events in
components.</
p><p>The URL identifies the name of the page, then a series of component ids
(the path from the page down to the specific component), then the name of the
event to be triggered on the component. The remaining path elements are used as
the context for the <em>event</em> (not for the page activation, which does not
currently apply). For example, "/griddemo.FOO.BAR/3" would locate page
"griddemo", then component "FOO.BAR", and trigger an event named "action" (the
default event type, which is omitted from the URL), with the context
"3".</p><p>If the page in question has an activation context, it is supplied as
an additional query parameter on the link.</p><p>In cases where the event type
is not the default, "action", it will appear between the nested component id
and the event context, preceded by a colon. Example:
"/example/foo.bar:magic/99" would trigger an event of type "magic". This is not
common in the vanilla Tapestry framework, but will likely be more common as
Ajax features (whi
ch would not use the normal request logic) are implemented.</p><p>The response
from a component action request is typically, but not universally, used to send
a redirect to the client; the redirect URL is a page render URL to display the
response to the event. This is detailed under <a shape="rect"
href="page-navigation.html">Page Navigation</a>.</p><h2
id="RequestProcessing-RequestGlobalsService">RequestGlobals Service</h2><p>The
RequestGlobals service has a life cycle of per-thread; this means that a
separate instance exists for every thread, and therefore, for every request.
The terminators of the two handler pipelines store the request/response pairs
into the RequestGlobals service.</p><h2
id="RequestProcessing-RequestService">Request Service</h2><p>The Request
service is a <a shape="rect" href="shadowbuilder-service.html">shadow</a> of
the RequestGlobals services' request property. That is, any methods invoked on
this service are delegated to the request object stored inside th
e RequestGlobals.</p><h2 id="RequestProcessing-Overview">Overview</h2><p>The
following diagram provides an overview of how the different pipelines, filters
and dispatchers interact when processing an incoming request.</p><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-content-image-border"
src="request-processing.data/tapestry_request_processing_800.png"></span></p></div>
+<div id="ConfluenceContent"><div class="aui-label" style="float:right"
title="Related Articles">
+
+
+
+
+
+
+
+
+<h3>Related Articles</h3>
+
+<ul class="content-by-label"><li>
+ <div>
+ <span class="icon aui-icon aui-icon-small
aui-iconfont-page-default" title="Page">Page:</span> </div>
+
+ <div class="details">
+ <a shape="rect" href="page-navigation.html">Page
Navigation</a>
+
+
+ </div>
+ </li><li>
+ <div>
+ <span class="icon aui-icon aui-icon-small
aui-iconfont-page-default" title="Page">Page:</span> </div>
+
+ <div class="details">
+ <a shape="rect" href="page-life-cycle.html">Page Life
Cycle</a>
+
+
+ </div>
+ </li><li>
+ <div>
+ <span class="icon aui-icon aui-icon-small
aui-iconfont-page-default" title="Page">Page:</span> </div>
+
+ <div class="details">
+ <a shape="rect"
href="component-rendering.html">Component Rendering</a>
+
+
+ </div>
+ </li><li>
+ <div>
+ <span class="icon aui-icon aui-icon-small
aui-iconfont-page-default" title="Page">Page:</span> </div>
+
+ <div class="details">
+ <a shape="rect" href="component-events.html">Component
Events</a>
+
+
+ </div>
+ </li><li>
+ <div>
+ <span class="icon aui-icon aui-icon-small
aui-iconfont-page-default" title="Page">Page:</span> </div>
+
+ <div class="details">
+ <a shape="rect"
href="component-events-faq.html">Component Events FAQ</a>
+
+
+ </div>
+ </li><li>
+ <div>
+ <span class="icon aui-icon aui-icon-small
aui-iconfont-page-default" title="Page">Page:</span> </div>
+
+ <div class="details">
+ <a shape="rect" href="request-processing.html">Request
Processing</a>
+
+
+ </div>
+ </li></ul>
+</div><p><strong>Request Processing</strong> involves a sequence of steps that
Tapestry performs when every HTTP request comes in. You <em>don't need</em> to
know these steps to use Tapestry productively, but understanding the request
processing pipeline is helpful if you want to understand Tapestry
deeply.</p><p>Much of the early stages of processing are in the form of
extensible <a shape="rect"
href="pipelinebuilder-service.html">pipelines</a>.</p><h2
id="RequestProcessing-TapestryFilter">Tapestry Filter</h2><p>All incoming
requests originate with the TapestryFilter, which is a servlet filter
configured inside your application's <a shape="rect"
href="configuration.html">web.xml</a>.</p><p>The TapestryFilter is responsible
for a number of startup and initialization functions.</p><p>When it receives a
request, the TapestryFilter obtains the <a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/HttpServletRequestHandler.h
tml">HttpServletRequestHandler</a> service, and invokes its service()
method.</p><h2
id="RequestProcessing-HttpServletRequestHandlerPipeline">HttpServletRequestHandler
Pipeline</h2><p>This pipeline performs initial processing of the request. It
can be extended by contributing a <a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/HttpServletRequestFilter.html">HttpServletRequestFilter</a>
into the HttpServletRequestHandler service's configuration.</p><p>Tapestry
does not contribute any filters into this pipeline of its own.</p><p>The
terminator for the pipeline does two things:</p><ul><li>It stores the request
and response into the <a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/RequestGlobals.html">RequestGlobals</a>
service. This is a per-thread scoped service that stores
per-thread/per-request information.</li><li>It wraps the request and response a
s a <a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/Request.html">Request</a>
and <a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/Response.html">Response</a>,
and passes them into the <a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/RequestHandler.html">RequestHandler</a>
pipeline.</li></ul><h2
id="RequestProcessing-RequestHandlerPipeline">RequestHandler
Pipeline</h2><p>This pipeline is where most extensions related to requests take
place. Request represents an abstraction on top of HttpServletRequest.
(Primarily, this exists to bridge from the Servlet API objects to the
corresponding Tapestry objects. This is the basis for the planned portlet
integration for Tapestry.) Where other code and services within Tapestry
require access to information in the request, such as query parame
ters, that information is obtained from the Request (or Response)
objects.</p><p>The RequestHandler pipeline includes a number of built-in
filters:</p><ul><li>CheckForUpdates is responsible for <a shape="rect"
href="class-reloading.html">class and template
reloading</a>.</li><li>Localization identifies the <a shape="rect"
href="localization.html">locale for the user</a>.</li><li>StaticFiles checks
for URLs that are for static files (files that exist inside the web context)
and aborts the request, so that the servlet container can handle the request
normally.</li><li>ErrorFilter catches uncaught exceptions from the lower levels
of Tapestry and presents the exception report page. This involves the <a
shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/RequestExceptionHandler.html">RequestExceptionHandler</a>
service, which is responsible for initializing and rendering the <a
shape="rect" class="external-link" href="http://t
apestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/pages/ExceptionReport.html">core/ExceptionReport</a>
page.</li></ul><p>The terminator for this pipeline stores the Request and the
Response into RequestGlobals, then requests that the <a shape="rect"
class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/Dispatcher.html">MasterDispatcher</a>
service figure out how to handle the request (if it is, indeed, a Tapestry
request).</p><h2 id="RequestProcessing-MasterDispatcherService">Master
Dispatcher Service</h2><p>The MasterDispatcher service is a chain-of-command,
aggregating together (in a specific order), several Dispatcher objects. Each
Dispatcher is built to recognize and process a particular kind of URL.</p><h3
id="RequestProcessing-RootPathDispatcher">RootPath Dispatcher</h3><p>The
RootPath Dispatcher recognizes a request for the application root (i.e., "/")
and handles this the same as a render request for the "Start" pa
ge. Support for the Start page is kept for legacy purposes. Index pages are
the correct approach.</p><h3 id="RequestProcessing-AssetDispatcher">Asset
Dispatcher</h3><p>Requests that begin with "/assets/" are references to <a
shape="rect" href="assets.html">asset resources</a> that are stored on the
classpath, inside the Tapestry JARs (or perhaps inside the JAR for a component
library). The contents of the file will be delivered to the client browser as a
byte stream. This dispatcher also handles requests that are simply polling for
a change to the file.</p><h3
id="RequestProcessing-PageRenderDispatcher">PageRender Dispatcher</h3><p>Page
render requests are requests to render a particular page. Such requests may
include additional elements on the path, which will be treated as activation
context (see ComponentEvent Dispatcher below). Generally speaking, the
activation context is the primary key of some related entity object. This
allows the page to reconstruct the state it will need
to successfully render itself.</p><p>The event handler method for the activate
event may return a value; this is treated the same as the return value from a
component action request; typically this will result in a redirect to another
page. In this way, the activate event can perform simple validation at the page
level ("can the user see this page?").</p><p>Page render URLs consist of the
logical name of the page plus additional path elements for the activation
context. The dispatcher here strips terms off of the path until it finds a
known page name. Thus, "/mypage/27" would look first for a page whose name was
"mypage/27", then look for a page name "mypage". Assuming the second search was
successful, the page would be activated with the context "27". If no logical
page name can be identified, control passes to the next dispatcher.</p><h3
id="RequestProcessing-ComponentEventDispatcher">ComponentEvent
Dispatcher</h3><p>The ComponentEvent dispatcher is used to trigger events in
compo
nents.</p><p>The URL identifies the name of the page, then a series of
component ids (the path from the page down to the specific component), then the
name of the event to be triggered on the component. The remaining path elements
are used as the context for the <em>event</em> (not for the page activation,
which does not currently apply). For example, "/griddemo.FOO.BAR/3" would
locate page "griddemo", then component "FOO.BAR", and trigger an event named
"action" (the default event type, which is omitted from the URL), with the
context "3".</p><p>If the page in question has an activation context, it is
supplied as an additional query parameter on the link.</p><p>In cases where the
event type is not the default, "action", it will appear between the nested
component id and the event context, preceded by a colon. Example:
"/example/foo.bar:magic/99" would trigger an event of type "magic". This is not
common in the vanilla Tapestry framework, but will likely be more common as
Ajax featu
res (which would not use the normal request logic) are implemented.</p><p>The
response from a component action request is typically, but not universally,
used to send a redirect to the client; the redirect URL is a page render URL to
display the response to the event. This is detailed under <a shape="rect"
href="page-navigation.html">Page Navigation</a>.</p><h2
id="RequestProcessing-RequestGlobalsService">RequestGlobals Service</h2><p>The
RequestGlobals service has a life cycle of per-thread; this means that a
separate instance exists for every thread, and therefore, for every request.
The terminators of the two handler pipelines store the request/response pairs
into the RequestGlobals service.</p><h2
id="RequestProcessing-RequestService">Request Service</h2><p>The Request
service is a <a shape="rect" href="shadowbuilder-service.html">shadow</a> of
the RequestGlobals services' request property. That is, any methods invoked on
this service are delegated to the request object stored i
nside the RequestGlobals.</p><h2
id="RequestProcessing-Overview">Overview</h2><p>The following diagram provides
an overview of how the different pipelines, filters and dispatchers interact
when processing an incoming request.</p><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-content-image-border"
src="request-processing.data/tapestry_request_processing_800.png"></span></p></div>
</div>
<div class="clearer"></div>