Author: hlship
Date: Mon Nov 10 15:10:24 2008
New Revision: 712865
URL: http://svn.apache.org/viewvc?rev=712865&view=rev
Log:
TAP5-337: Rapidly refreshing a page, even the same page, can cause a deadlock
related to class loading
Modified:
tapestry/tapestry5/trunk/src/site/fml/faq/general.fml
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassFactoryClassPool.java
Modified: tapestry/tapestry5/trunk/src/site/fml/faq/general.fml
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/src/site/fml/faq/general.fml?rev=712865&r1=712864&r2=712865&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/src/site/fml/faq/general.fml (original)
+++ tapestry/tapestry5/trunk/src/site/fml/faq/general.fml Mon Nov 10 15:10:24
2008
@@ -312,5 +312,34 @@
</answer>
</faq>
+ <faq id="hibernate-startup">
+ <question>
+ How do I get Hibernate to startup up when the application
starts up, rather than lazily
+ with the first request for the application?
+ </question>
+ <answer>
+ <p>This really can bother people with very large Hibernate
schemas, as Hibernate can take
+ considerable time to start up. It would be better if
Tapestry and Hibernate initialized
+ early, before accepting any requests.
+ </p>
+ <p>
+ The trick is to force the Tapestry services that wrap
around Hibernate to initialize at
+ startup. The following can be added to your AppModule:
+ </p>
+ <pre>
+ public void
contributeRegistryStartup(OrderedConfiguration<Runnable> configuration,
final
+ HibernateSessionSource sessionSource)
+ {
+ configuration.add("HibernateStartup", new Runnable()
+ {
+ public void run()
+ {
+ sessionSource.getConfiguration();
+ }
+ });
+ }
+ </pre>
+ </answer>
+ </faq>
</part>
</faqs>
\ No newline at end of file
Modified:
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassFactoryClassPool.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassFactoryClassPool.java?rev=712865&r1=712864&r2=712865&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassFactoryClassPool.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassFactoryClassPool.java
Mon Nov 10 15:10:24 2008
@@ -172,11 +172,11 @@
boolean hasDomain = domain != null;
- Method method = hasDomain ? defineClass :
defineClassWithProtectionDomain;
+ Method method = hasDomain ? defineClassWithProtectionDomain :
defineClass;
Object[] args = hasDomain
- ? new Object[] {ct.getName(), b, 0, b.length}
- : new Object[] {ct.getName(), b, 0, b.length,
domain};
+ ? new Object[] {ct.getName(), b, 0, b.length,
domain}
+ : new Object[] {ct.getName(), b, 0, b.length};
return (Class) method.invoke(loader, args);
}