Hi Dmitry,

Thanks for sharing. I tried integrating the Spring in it but it keep
spitting out all sorts of errors when its constructing the bean from the
applicationContext.xml. Can u share how u integrate Spring in it? I noticed
that u r using the Spring 3.x instead.

I tried integrate with TapestrySpringFilter and it seems to be using Spring
2.5.6. So i decided to change your applicationContext.xml schema to 2.5
instead.

Here's my web.xml
<!-- 
    <filter>
        <filter-name>app</filter-name>
        <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
    </filter>
    -->
<filter>
        <filter-name>app</filter-name>
        
<filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class>
        </filter>
        <context-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/applicationContext.xml</param-value>
        </context-param>

Here's my maven build to include more dependencies from your given
applicationContext.xml

<dependency>
                    <groupId>org.apache.tapestry</groupId>
                    <artifactId>tapestry-spring</artifactId>
                    <version>${tapestry-release-version}</version>
                </dependency>
                <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-jdbc</artifactId>
                        <version>2.5.6</version>
                </dependency>
                <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-orm</artifactId>
                        <version>2.5.6</version>
                </dependency> 
                <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-aspects</artifactId>
                        <version>2.5.6</version>
                </dependency>
                <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-tx</artifactId>
                        <version>2.5.6</version>
                </dependency>
                <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-aop</artifactId>
                        <version>2.5.6</version>
                </dependency>

Am i missing out something here? I tried using Tapestry 5.1.0.5 and also the
5.2 built from trunk. 

Here's the error:

[INFO] ioc.RegistryBuilder Adding module definition for class
org.apache.tapestry5.ioc.services.TapestryIOCModule
[INFO] ioc.RegistryBuilder Adding module definition for class
com.kenai.tapestryjpa.JPAModule
[INFO] ioc.RegistryBuilder Adding module definition for class
com.kenai.tapestryjpa.JPACoreModule
[INFO] ioc.RegistryBuilder Adding module definition for class
org.apache.tapestry5.spring.SpringModule
[INFO] ioc.RegistryBuilder Adding module definition for class
org.apache.tapestry5.services.TapestryModule
[INFO] ioc.RegistryBuilder Adding module definition for class
org.apache.tapestry5.internal.services.InternalModule
[INFO] ioc.RegistryBuilder Adding module definition for class
com.myproject.services.AppModule
[INFO] SpringModuleDef.ApplicationContext Starting Spring (version 2.5.6)
[INFO] context.ContextLoader Root WebApplicationContext: initialization
started
[INFO] spring.TapestryApplicationContext Refreshing
org.apache.tapestry5.spring.tapestryapplicationcont...@39060b: display name
[Root WebApplicationContext]; startup date [Mon Nov 09 22:03:52 UTC 2009];
root of context hierarchy
[INFO] xml.XmlBeanDefinitionReader Loading XML bean definitions from
ServletContext resource [/WEB-INF/applicationContext.xml]
[INFO] spring.TapestryApplicationContext Bean factory for application
context [org.apache.tapestry5.spring.tapestryapplicationcont...@39060b]:
org.apache.tapestry5.internal.spring.tapestybeanfact...@d23e53
[INFO] spring.TapestyBeanFactory Pre-instantiating singletons in
org.apache.tapestry5.internal.spring.tapestybeanfact...@d23e53: defining
beans
[txAdvice,org.springframework.aop.config.internalAutoProxyCreator,daoOperations,org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0,entityManagerFactory,txManager,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,personDAO];
root of factory hierarchy
[INFO] jpa.LocalEntityManagerFactoryBean Building JPA EntityManagerFactory
for persistence unit 'transactions-optional'
[INFO] DataNucleus.Plugin Bundle "org.datanucleus.jpa" has an optional
dependency to "org.datanucleus.enhancer" but it cannot be resolved
[INFO] DataNucleus.Plugin Bundle "org.datanucleus" has an optional
dependency to "org.eclipse.equinox.registry" but it cannot be resolved
[INFO] DataNucleus.Plugin Bundle "org.datanucleus" has an optional
dependency to "org.eclipse.core.runtime" but it cannot be resolved
[WARN] DataNucleus.JPA No META-INF/persistence.xml files were found in the
CLASSPATH of the current thread!
[WARN] DataNucleus.JPA No persistence unit of name "transactions-optional"
is found in the CLASSPATH of the current thread!
[INFO] spring.TapestyBeanFactory Destroying singletons in
org.apache.tapestry5.internal.spring.tapestybeanfact...@d23e53: defining
beans
[txAdvice,org.springframework.aop.config.internalAutoProxyCreator,daoOperations,org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0,entityManagerFactory,txManager,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,personDAO];
root of factory hierarchy
[ERROR] context.ContextLoader Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'txAdvice': Cannot resolve reference to bean 'txManager' while
setting bean property 'transactionManager'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'txManager' defined in ServletContext resource
[/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean
'entityManagerFactory' while setting bean property 'entityManagerFactory';
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'entityManagerFactory' defined in
ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of
init method failed; nested exception is
javax.persistence.PersistenceException: Provider error. Provider:
org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
        at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
        at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
        at
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
        at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
        at
org.apache.tapestry5.internal.spring.SpringModuleDef$3$1.invoke(SpringModuleDef.java:176)
        at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
        at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
        at
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
        at
org.apache.tapestry5.internal.spring.SpringModuleDef$3.createObject(SpringModuleDef.java:166)
        at
org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
        at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
        at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
        at
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
        at
org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
        at
org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29)
        at
org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46)
        at
org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:60)
        at
org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:52)
        at
org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60)
        at
org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
        at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
        at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
        at
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
        at
org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
        at
org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:68)
        at
org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:57)
        at
$ConfigurableWebApplicationContext_124daf973a0.delegate($ConfigurableWebApplicationContext_124daf973a0.java)
        at
$ConfigurableWebApplicationContext_124daf973a0.getBeanDefinitionCount($ConfigurableWebApplicationContext_124daf973a0.java)
        at
org.apache.tapestry5.spring.SpringModule$1.initializeApplication(SpringModule.java:53)
        at
$ApplicationInitializer_124daf973bb.initializeApplication($ApplicationInitializer_124daf973bb.java)
        at
org.apache.tapestry5.services.TapestryModule$35.initializeApplication(TapestryModule.java:2132)
        at
$ApplicationInitializer_124daf973bb.initializeApplication($ApplicationInitializer_124daf973bb.java)
        at
$ApplicationInitializer_124daf973b7.initializeApplication($ApplicationInitializer_124daf973b7.java)
        at
org.apache.tapestry5.services.TapestryModule$ServletApplicationInitializerTerminator.initializeApplication(TapestryModule.java:223)
        at
$ServletApplicationInitializer_124daf9739b.initializeApplication($ServletApplicationInitializer_124daf9739b.java)
        at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:85)
        at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:99)
        at 
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
        at
org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:589)
        at org.mortbay.jetty.servlet.Context.startContext(Context.java:139)
        at
org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1218)
        at
org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:500)
        at 
org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
        at 
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
        at
org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)
        at 
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
        at
org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)
        at org.mortbay.jetty.Server.doStart(Server.java:217)
        at 
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
        at
com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:181)
        at
com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:116)
        at
com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:217)
        at
com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:162)
        at
com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
        at
com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java:113)
        at
com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:89)
Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'txManager' defined in ServletContext resource
[/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean
'entityManagerFactory' while setting bean property 'entityManagerFactory';
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'entityManagerFactory' defined in
ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of
init method failed; nested exception is
javax.persistence.PersistenceException: Provider error. Provider:
org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
        ... 69 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'entityManagerFactory' defined in ServletContext
resource [/WEB-INF/applicationContext.xml]: Invocation of init method
failed; nested exception is javax.persistence.PersistenceException: Provider
error. Provider:
org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
        ... 82 more
Caused by: javax.persistence.PersistenceException: Provider error. Provider:
org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider
        at javax.persistence.Persistence.createFactory(Persistence.java:176)
        at
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:112)
        at
org.springframework.orm.jpa.LocalEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalEntityManagerFactoryBean.java:91)
        at
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:291)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
        ... 92 more
Caused by: java.lang.NullPointerException
        at
org.datanucleus.jpa.EntityManagerFactoryImpl.initialisePMF(EntityManagerFactoryImpl.java:452)
        at
org.datanucleus.jpa.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:355)
        at
org.datanucleus.store.appengine.jpa.DatastoreEntityManagerFactory.<init>(DatastoreEntityManagerFactory.java:63)
        at
org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider.createEntityManagerFactory(DatastorePersistenceProvider.java:35)
        at javax.persistence.Persistence.createFactory(Persistence.java:172)
        ... 97 more
[ERROR] ioc.Registry Error creating bean with name 'txAdvice': Cannot
resolve reference to bean 'txManager' while setting bean property
'transactionManager'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'txManager' defined in ServletContext resource
[/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean
'entityManagerFactory' while setting bean property 'entityManagerFactory';
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'entityManagerFactory' defined in
ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of
init method failed; nested exception is
javax.persistence.PersistenceException: Provider error. Provider:
org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider
[ERROR] ioc.Registry Operations trace:
[ERROR] ioc.Registry [ 1] Realizing service ApplicationContext
[ERROR] ioc.Registry [ 2] Invoking ObjectCreator for Spring
ApplicationContext
[ERROR] ioc.Registry [ 3] Creating Spring ApplicationContext via
ContextLoader
[ERROR] SpringModuleDef.ApplicationContext Construction of service
ApplicationContext failed: Error creating bean with name 'txAdvice': Cannot
resolve reference to bean 'txManager' while setting bean property
'transactionManager'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'txManager' defined in ServletContext resource
[/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean
'entityManagerFactory' while setting bean property 'entityManagerFactory';
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'entityManagerFactory' defined in
ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of
init method failed; nested exception is
javax.persistence.PersistenceException: Provider error. Provider:
org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider
org.apache.tapestry5.ioc.internal.OperationException: Error creating bean
with name 'txAdvice': Cannot resolve reference to bean 'txManager' while
setting bean property 'transactionManager'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'txManager' defined in ServletContext resource
[/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean
'entityManagerFactory' while setting bean property 'entityManagerFactory';
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'entityManagerFactory' defined in
ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of
init method failed; nested exception is
javax.persistence.PersistenceException: Provider error. Provider:
org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider
        at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:90)
        at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
        at
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
        at
org.apache.tapestry5.internal.spring.SpringModuleDef$3.createObject(SpringModuleDef.java:166)
        at
org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
        at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
        at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
        at
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
        at
org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
        at
org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29)
        at
org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46)
        at
org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:60)
        at
org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:52)
        at
org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60)
        at
org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
        at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
        at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
        at
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
        at
org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
        at
org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:68)
        at
org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:57)
        at
$ConfigurableWebApplicationContext_124daf973a0.delegate($ConfigurableWebApplicationContext_124daf973a0.java)
        at
$ConfigurableWebApplicationContext_124daf973a0.getBeanDefinitionCount($ConfigurableWebApplicationContext_124daf973a0.java)
        at
org.apache.tapestry5.spring.SpringModule$1.initializeApplication(SpringModule.java:53)
        at
$ApplicationInitializer_124daf973bb.initializeApplication($ApplicationInitializer_124daf973bb.java)
        at
org.apache.tapestry5.services.TapestryModule$35.initializeApplication(TapestryModule.java:2132)
        at
$ApplicationInitializer_124daf973bb.initializeApplication($ApplicationInitializer_124daf973bb.java)
        at
$ApplicationInitializer_124daf973b7.initializeApplication($ApplicationInitializer_124daf973b7.java)
        at
org.apache.tapestry5.services.TapestryModule$ServletApplicationInitializerTerminator.initializeApplication(TapestryModule.java:223)
        at
$ServletApplicationInitializer_124daf9739b.initializeApplication($ServletApplicationInitializer_124daf9739b.java)
        at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:85)
        at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:99)
        at 
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
        at
org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:589)
        at org.mortbay.jetty.servlet.Context.startContext(Context.java:139)
        at
org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1218)
        at
org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:500)
        at 
org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
        at 
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
        at
org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)
        at 
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
        at
org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)
        at org.mortbay.jetty.Server.doStart(Server.java:217)
        at 
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
        at
com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:181)
        at
com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:116)
        at
com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:217)
        at
com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:162)
        at
com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
        at
com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java:113)
        at
com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:89)
Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'txAdvice': Cannot resolve reference to bean
'txManager' while setting bean property 'transactionManager'; nested
exception is org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'txManager' defined in ServletContext resource
[/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean
'entityManagerFactory' while setting bean property 'entityManagerFactory';
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'entityManagerFactory' defined in
ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of
init method failed; nested exception is
javax.persistence.PersistenceException: Provider error. Provider:
org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
        at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
        at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
        at
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
        at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
        at
org.apache.tapestry5.internal.spring.SpringModuleDef$3$1.invoke(SpringModuleDef.java:176)
        at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
        ... 50 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'txManager' defined in ServletContext resource
[/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean
'entityManagerFactory' while setting bean property 'entityManagerFactory';
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'entityManagerFactory' defined in
ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of
init method failed; nested exception is
javax.persistence.PersistenceException: Provider error. Provider:
org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
        ... 69 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'entityManagerFactory' defined in ServletContext
resource [/WEB-INF/applicationContext.xml]: Invocation of init method
failed; nested exception is javax.persistence.PersistenceException: Provider
error. Provider:
org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
        ... 82 more
Caused by: javax.persistence.PersistenceException: Provider error. Provider:
org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider
        at javax.persistence.Persistence.createFactory(Persistence.java:176)
        at
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:112)
        at
org.springframework.orm.jpa.LocalEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalEntityManagerFactoryBean.java:91)
        at
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:291)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
        ... 92 more
Caused by: java.lang.NullPointerException
        at
org.datanucleus.jpa.EntityManagerFactoryImpl.initialisePMF(EntityManagerFactoryImpl.java:452)
        at
org.datanucleus.jpa.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:355)
        at
org.datanucleus.store.appengine.jpa.DatastoreEntityManagerFactory.<init>(DatastoreEntityManagerFactory.java:63)
        at
org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider.createEntityManagerFactory(DatastorePersistenceProvider.java:35)
        at javax.persistence.Persistence.createFactory(Persistence.java:172)
        ... 97 more
The server is running at http://localhost:8080/


Dmitry Gusev wrote:
> 
> Here's some examples:
> 
> *ping-service\src\META-INF\persistence.xml:*
> <?xml version="1.0" encoding="UTF-8" ?>
> <persistence xmlns="http://java.sun.com/xml/ns/persistence";
>     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
>         http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd";
> version="1.0">
> 
>     <persistence-unit name="transactions-optional">
> 
> <provider>org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider</provider>
>         <properties>
>             <property name="datanucleus.NontransactionalRead"
> value="true"/>
>             <property name="datanucleus.NontransactionalWrite"
> value="true"/>
>             <property name="datanucleus.ConnectionURL" value="appengine"/>
>         </properties>
>     </persistence-unit>
> 
> </persistence>
> 
> *ping-service\war\WEB-INF\applicationContext.xml:*
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans";
>        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>        xmlns:aop="http://www.springframework.org/schema/aop";
>        xmlns:tx="http://www.springframework.org/schema/tx";
>        xmlns:context="http://www.springframework.org/schema/context";
>        xsi:schemaLocation="
>        http://www.springframework.org/schema/beans
>        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
>        http://www.springframework.org/schema/tx
>        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
>        http://www.springframework.org/schema/aop
>        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
>        http://www.springframework.org/schema/context
>       
> http://www.springframework.org/schema/context/spring-context-3.0.xsd
> ">
> 
>     <tx:advice id="txAdvice" transaction-manager="txManager">
>         <tx:attributes>
>             <tx:method name="*" propagation="REQUIRES_NEW" />
>         </tx:attributes>
>     </tx:advice>
> 
>     <aop:config>
>         <aop:pointcut id="daoOperations"
>             expression="execution(*
> dmitrygusev.ping.services.dao.*.*(..))"
> />
>         <aop:advisor advice-ref="txAdvice" pointcut-ref="daoOperations" />
>     </aop:config>
> 
>     <bean id="entityManagerFactory"
>         class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"
>         lazy-init="true">
>         <property name="persistenceUnitName" value="transactions-optional"
> />
>     </bean>
> 
>     <bean name="txManager"
> class="org.springframework.orm.jpa.JpaTransactionManager">
>         <property name="entityManagerFactory" ref="entityManagerFactory"
> />
>     </bean>
> 
>     <context:annotation-config/>
> 
>     <bean name="jobsDAO"
> class="dmitrygusev.ping.services.dao.impl.JobDAOImpl"/>
>     <bean name="refDAO"
> class="dmitrygusev.ping.services.dao.impl.RefDAOImpl"/>
>     <bean name="accountDAO"
> class="dmitrygusev.ping.services.dao.impl.AccountDAOImpl"/>
>     <bean name="scheduleDAO"
> class="dmitrygusev.ping.services.dao.impl.ScheduleDAOImpl"/>
>     <bean name="jobResultDAO"
> class="dmitrygusev.ping.services.dao.impl.JobResultDAOImpl"/>
> 
> </beans>
> 
> *ping-service\src\dmitrygusev\ping\services\dao\ScheduleDAO.java :*
> package dmitrygusev.ping.services.dao;
> 
> import com.google.appengine.api.datastore.Key;
> 
> import dmitrygusev.ping.entities.Schedule;
> 
> public interface ScheduleDAO {
> 
>     public abstract void update(Schedule schedule);
> 
>     public abstract void delete(Long id);
> 
>     public abstract Schedule createSchedule(String name);
> 
>     public abstract Schedule find(Key scheduleKey);
> 
> }
> 
> *ping-service\src\dmitrygusev\ping\services\dao\impl\ScheduleDAOImpl.java
> :*
> package dmitrygusev.ping.services.dao.impl;
> 
> import static com.google.appengine.api.datastore.KeyFactory.createKey;
> 
> import javax.persistence.EntityManager;
> import javax.persistence.PersistenceContext;
> 
> import com.google.appengine.api.datastore.Key;
> 
> import dmitrygusev.ping.entities.Schedule;
> import dmitrygusev.ping.services.dao.ScheduleDAO;
> 
> public class ScheduleDAOImpl implements ScheduleDAO {
> 
>     @PersistenceContext
>     private EntityManager em;
> 
>     public Schedule createSchedule(String name) {
>         Schedule schedule = new Schedule();
>         schedule.setName(name);
> 
>         em.persist(schedule);
> 
>         return schedule;
>     }
> 
>     @Override
>     public void update(Schedule schedule) {
>         em.merge(schedule);
>     }
> 
>     @Override
>     public void delete(Long id) {
>         Schedule schedule = find(createKey(Schedule.class.getSimpleName(),
> id));
>         em.remove(schedule);
>     }
> 
>     @Override
>     public Schedule find(Key scheduleKey) {
>         return em.find(Schedule.class, scheduleKey);
>     }
> }
> 
> 
> *Then inject ScheduleDAO in your page class using T5's @Inject annotation
> and use it.*
> 
> 
> 
> On Sun, Nov 8, 2009 at 17:46, Dmitry Gusev <dmitry.gu...@gmail.com> wrote:
> 
>> Tapestry 5.1 should run on GAE 1.2.6(7) as is.
>>
>> I used T5.1 w/ Spring/JPA on GAE and didn't get any troubles at the cloud
>> except some issues on development machine:
>>
>>
>> http://dmitrygusev.blogspot.com/2009/10/develope-java-applications-with-gae-sdk.html
>>
>> http://dmitrygusev.blogspot.com/2009/08/turn-java-security-manager-off-in.html
>>
>>
>>
>> On Sun, Nov 8, 2009 at 16:51, sodium <sodiu...@yahoo.com> wrote:
>>
>>>
>>> Hi,
>>>
>>> I have been using Tapestry5 for few of my projects and loving it, but i
>>> am
>>> thinking of integrating it in Google App Engine.
>>> As for Tapestry 5.0.18, i have managed to run it without jpa support by
>>> following an example of
>>>
>>> http://old.nabble.com/SUCCESSFULL-deploy-Tapestry5-on-google-appengine-ts23018048.html
>>>
>>> http://old.nabble.com/SUCCESSFULL-deploy-Tapestry5-on-google-appengine-ts23018048.html
>>>
>>> For Tapestry5.1, i still very confused about
>>>
>>> http://old.nabble.com/Tapestry-5.1-running-in-Google-App-Engine-%28GAE%29-tp24923950p24927028.html
>>>
>>> http://old.nabble.com/Tapestry-5.1-running-in-Google-App-Engine-%28GAE%29-tp24923950p24927028.html
>>>
>>> Actually my biggest concern is using jpa in GAE with Tapestry5, can
>>> anyone
>>> provide some clues on how to go about integrating Tap5 with jpa for GAE
>>> ?
>>> If
>>> someone can provide a sample project for GAE(1.2.6) Tapestry5(hopefully
>>> 5.1)
>>> integration with jpa support, i will definitely bow down to u like a
>>> slave.
>>> Been scratching my head so hard that my hair is starting to fall...
>>>
>>> I tried integration Tapestry 5.0.18 with guice2 for jpa support from
>>>
>>> http://old.nabble.com/Integration-of-T5-with-the-domain-model-ts9953748s302.html
>>>
>>> http://old.nabble.com/Integration-of-T5-with-the-domain-model-ts9953748s302.html
>>> but the EntityManager keep returning null. Sigh..
>>>
>>> Any pointers and advice is very much appreciated.
>>>
>>> --
>>> View this message in context:
>>> http://old.nabble.com/GAE-and-Tapestry5-integration-tp26253952p26253952.html
>>> Sent from the Tapestry - User mailing list archive at Nabble.com.
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>>
>>>
>>
>>
>> --
>> Dmitry Gusev
>>
>> AnjLab Team
>> http://anjlab.com
>>
> 
> 
> 
> -- 
> Dmitry Gusev
> 
> AnjLab Team
> http://anjlab.com
> 
> 

-- 
View this message in context: 
http://old.nabble.com/GAE-and-Tapestry5-integration-tp26253952p26274666.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to