Dear Marcus, It works. Thank you very much.
Henry Schulte Marcus wrote: > > Oh, sorry, > I think the Audit-Interceptor must be the culprit. I had the same > problem when adding a Message-Driven thingy into one of my projects. > You'll need to define a second instance of the SessionFactory, contrary > to what I told before, like this: > > <service-point id="HibernateSessionFactory" parameters-occurs="none" > > interface="org.apache.hivemind.ServiceImplementationFactory"> > <invoke-factory model="singleton"> > <construct autowire-services="false" > > class="com.javaforge.honeycomb.hivemind.hibernate.HibernateSessionFactor > y" > initialize-method="init"> > <configuration> > honeycomb.hibernate.HibernateSessionFactory > </configuration> > > <service>hivemind.ShutdownCoordinator</service> > <service-id/> > <set property="updateSchema" > value="false"/> > <set property="transactionManager" > value="false"/> > </construct> > </invoke-factory> > <interceptor service-id="hivemind.LoggingInterceptor"/> > </service-point> > > It's important to turn off autowiring otherwise HiveMind will > auto-inject the wrong AuditInterceptor Service. Of course, if you need > auditing, you can also configure a second instance of the interceptor > and wire it up explicitly. > > hth, Marcus > >> -----Original Message----- >> From: Henry Tong [mailto:[EMAIL PROTECTED] >> Sent: Wednesday, December 06, 2006 11:18 AM >> To: [email protected] >> Subject: RE: Acquiring session not in a tapestry page error >> >> >> Dear Marcus, >> >> Thank you for your prompt reply. I am using Tapestry 4.0.2 >> and Honeycomb 0.3.3. For testing purpose, I have changed the >> configuration file as follows. >> >> 1. Create another Hibernate Eager Load Session >> <service-point id='HibernateEagerLoadSession' >> interface='org.hibernate.Session'> >> <invoke-factory >> service-id='honeycomb.hibernate.HibernateSessionFactory' >> model='threaded'/> >> </service-point> >> >> 2. Create Dao Service (which extends >> AbstractPersistenceService) that use Hibernate EagerLoad Session >> <service-point id="GenericDbDao" interface="GenericDbDao"> >> <invoke-factory> >> <construct class="impl.GenericDbDaoImpl"> >> >> <service>HibernateEagerLoadSession</service> >> </construct> >> </invoke-factory> >> </service-point> >> >> 3. The web project use default honeycomb hibernate session >> and default honeycomb hibernate session factory. >> >> The same errors prompt. Any suggestions? >> >> ERROR! [Timer-0] >> org.hibernate.impl.SessionImpl.beforeTransactionCompletion(Ses >> sionImpl.java:399) >> >15> exception in interceptor beforeTransactionCompletion() >> java.lang.NullPointerException: Property 'webRequest' of >> <OuterProxy for >> tapestry.globals.RequestGlobals(org.apache.tapestry.services.R >> equestGlobals)> >> is null. >> at >> $WebRequest_10f574018b1._targetServiceProperty($WebRequest_10f >> 574018b1.java) >> at >> $WebRequest_10f574018b1.getSession($WebRequest_10f574018b1.java) >> at >> $WebRequest_10f57401872.getSession($WebRequest_10f57401872.java) >> at >> org.apache.tapestry.engine.state.SessionScopeManager.getSessio >> n(SessionScopeManager.java:48) >> at >> org.apache.tapestry.engine.state.SessionScopeManager.get(Sessi >> onScopeManager.java:64) >> at >> $StateObjectPersistenceManager_10f574018a9.get($StateObjectPer >> sistenceManager_10f574018a9.java) >> at >> org.apache.tapestry.engine.state.StateObjectManagerImpl.get(St >> ateObjectManagerImpl.java:50) >> at >> org.apache.tapestry.engine.state.ApplicationStateManagerImpl.g >> et(ApplicationStateManagerImpl.java:60) >> at >> $ApplicationStateManager_10f5740184a.get($ApplicationStateMana >> ger_10f5740184a.java) >> at >> $ApplicationStateManager_10f5740184b.get($ApplicationStateMana >> ger_10f5740184b.java) >> at >> com.javaforge.honeycomb.tapestry.ConversationManagerImpl.getCu >> rrentConversation(ConversationManagerImpl.java:59) >> at >> $ConversationManager_10f574018a0.getCurrentConversation($Conve >> rsationManager_10f574018a0.java) >> at >> $ConversationManager_10f5740189e.getCurrentConversation($Conve >> rsationManager_10f5740189e.java) >> at >> com.javaforge.honeycomb.tapestry.ConversationalClientStateStor >> age.retrieve(ConversationalClientStateStorage.java:26) >> at >> $ClientStateStorage_10f5740188f.retrieve($ClientStateStorage_1 >> 0f5740188f.java) >> at >> com.javaforge.honeycomb.hivemind.statefulservice.StatefulServi >> ceModel.getServiceFromClientStateStorage(StatefulServiceModel. >> java:241) >> at >> com.javaforge.honeycomb.hivemind.statefulservice.StatefulServi >> ceModel.obtainPooledService(StatefulServiceModel.java:229) >> at >> com.javaforge.honeycomb.hivemind.statefulservice.StatefulServi >> ceModel.getServiceImplementationForCurrentThread(StatefulServi >> ceModel.java:211) >> at $Session_10f57401891._service($Session_10f57401891.java) >> at $Session_10f57401891.getSession($Session_10f57401891.java) >> at $Session_10f57401892.getSession($Session_10f57401892.java) >> at $Session_10f57401893.getSession($Session_10f57401893.java) >> at >> com.javaforge.honeycomb.hibernate.audit.AuditInterceptor.getAu >> ditSession(AuditInterceptor.java:138) >> at >> com.javaforge.honeycomb.hibernate.audit.AuditInterceptor.befor >> eTransactionCompletion(AuditInterceptor.java:145) >> at >> $Interceptor_10f5740188c.beforeTransactionCompletion($Intercep >> tor_10f5740188c.java) >> at >> $Interceptor_10f5740188d.beforeTransactionCompletion($Intercep >> tor_10f5740188d.java) >> at >> org.hibernate.impl.SessionImpl.beforeTransactionCompletion(Ses >> sionImpl.java:396) >> at >> org.hibernate.jdbc.JDBCContext.beforeTransactionCompletion(JDB >> CContext.java:202) >> at >> org.hibernate.transaction.JDBCTransaction.commit(JDBCTransacti >> on.java:111) >> at >> com.javaforge.honeycomb.service.AbstractPersistenceService.com >> mit(AbstractPersistenceService.java:61) >> at $GenericDao_10f5740189c.commit($GenericDao_10f5740189c.java) >> at >> pihk.pacconmini.server.service.jpop.impl.RecordUploadImpl.save >> OrUpdateRecord(RecordUploadImpl.java:78) >> at >> pihk.pacconmini.server.service.jpop.impl.RecordUploadImpl.uplo >> ad(RecordUploadImpl.java:45) >> at >> $RecordUpload_10f57401896.upload($RecordUpload_10f57401896.java) >> at >> pihk.pacconmini.server.service.jpop.impl.DataUploadImpl.startT >> oRun(DataUploadImpl.java:132) >> at >> pihk.pacconmini.server.service.jpop.impl.DataUploadImpl.run(Da >> taUploadImpl.java:73) >> at $DataUpload_10f57401818.run($DataUpload_10f57401818.java) >> at >> pihk.pacconmini.server.service.jpop.impl.DataReplicateImpl.pro >> cess(DataReplicateImpl.java:129) >> at >> pihk.pacconmini.server.service.jpop.impl.DataReplicateImpl$1.r > un(DataReplicateImpl.java:82) >> at java.util.TimerThread.mainLoop(Unknown Source) >> at java.util.TimerThread.run(Unknown Source) >> >> Henry >> >> >> Schulte Marcus wrote: >> > >> > Dear Henry, >> > >> > replying inline: >> > >> >> -----Original Message----- >> >> From: Henry Tong [mailto:[EMAIL PROTECTED] >> >> Sent: Wednesday, December 06, 2006 10:19 AM >> >> To: [email protected] >> >> Subject: RE: Acquiring session not in a tapestry page error >> >> >> >> >> >> 1. Create two session service >> >> <service-point id='HibernateWebSession' >> >> interface='org.hibernate.Session'> >> >> <invoke-factory service-id='MySessionFactory' >> >> model='threaded'/> >> >> </service-point> >> >> >> > >> > You can continue to use the pre-configured >> Honeycomb-Session for the >> > Web-Requests. >> > You should only need to add the EagerLoadSession >> > >> >> >> >> <service-point id='HibernateEagerLoadSession' >> >> interface='org.hibernate.Session'> >> >> <invoke-factory service-id='MySessionFactory' >> >> model='threaded'/> >> >> </service-point> >> >> >> >> 2. Create one session factory only (we use >> >> createCoreServiceImplementation(...) to create session) >> >> <service-point id='MySessionFactory' parameters-occurs="none" >> >> >> interface='org.apache.hivemind.ServiceImplementationFactory'> >> >> <invoke-factory model='singleton'> >> >> <construct class='MySessionFactory'> >> >> <set-service property='hibernateSessionFactory' >> >> >> >> service-id='honeycomb.hibernate.HibernateSessionFactory'/> >> >> >> </construct> >> >> </invoke-factory> >> >> </service-point> >> >> >> > >> > Again, you should be fine with the pre-configured session-factory - >> > unless you want to override something anyway. It seems, >> you're using >> > your own implementation of a session-factory which delegates to the >> > Honeycomb-Session-Factory. There may be a good reason for >> that, but I >> > don't think it's necessary for the problem you described in this >> > thread. >> > >> >> 3. The Data Upload Service use the >> HiberateEagerLoadSession Service. >> >> >> >> We are using honeycomb AbstractPersistenceService to >> update data in >> >> the database in the web app project. Can we use >> >> AbstractPersistenceService in the data upload service? >> > >> > Yes, you can. Just configure a separate instance in HiveMind using >> > your EagerLoad-HIbernateService. >> > >> >> >> >> Henry >> >> >> >> >> >> Schulte Marcus wrote: >> >> > >> >> > Sorry, follow-up: >> >> > >> >> > You should get away with just defining a new hibernate >> >> session service >> >> > with a non-stateful service-model (say threaded), >> keeping the same >> >> > SessionFactory. >> >> > >> >> >> -----Original Message----- >> >> >> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] >> >> >> Sent: Wednesday, December 06, 2006 8:15 AM >> >> >> To: [email protected] >> >> >> Subject: RE: Acquiring session not in a tapestry page error >> >> >> >> >> >> Hi Henry, >> >> >> >> >> >> the Hibernate Session in Honeycomb is per default >> configure as a >> >> >> "stateful" service to support session-per-conversation. >> >> >> That means, the service-model stores the Hibernate-Session >> >> into the >> >> >> conversation-context which is, in a Tapestry context, the >> >> >> Web-Session. A web session is, of course, not available in your >> >> >> initial load. >> >> >> >> >> >> I'd suggest that you configure a different Hibernate >> >> SessionFactory >> >> >> and Session service (you can use the same >> >> SessionFactory-Config-Point >> >> >> to minimize redundancy) and use that one with your periodically >> >> >> triggered loading service. >> >> >> >> >> >> hth, >> >> >> Marcus >> >> >> >> >> >> > -----Original Message----- >> >> >> > From: Henry Tong [mailto:[EMAIL PROTECTED] >> >> >> > Sent: Wednesday, December 06, 2006 4:54 AM >> >> >> > To: [email protected] >> >> >> > Subject: Acquiring session not in a tapestry page error >> >> >> > >> >> >> > >> >> >> > Hi, >> >> >> > >> >> >> > Our team started a tapestry / honeycomb / hivemind / >> >> >> hibernate web app >> >> >> > project. A data upload service is needed to load data to >> >> >> the database >> >> >> > and therefore a hivemind eagerload service is written to >> >> run this >> >> >> > periodical task. As we want to share the same >> honeycomb session >> >> >> > factory, we inject hibernate session to the service while the >> >> >> > hibernate session is getted from the honeycomb >> session factory. >> >> >> > >> >> >> > When we tries to save data to the database, the data is >> >> >> still saved to >> >> >> > the database but the following exception occurs: >> >> >> > Property 'webRequest' of <OuterProxy for >> >> >> > tapestry.globals.RequestGlobals( >> >> >> > org.apache.tapestry.services.RequestGlobals)> is null. >> >> >> > at >> >> >> > $WebRequest_10f5595850c._targetServiceProperty($WebRequest_10f >> >> >> 5595850c.java) >> >> >> > at >> >> $WebRequest_10f5595850c.getSession($WebRequest_10f5595850c.java) >> >> >> > at >> >> $WebRequest_10f559584c5.getSession($WebRequest_10f559584c5.java) >> >> >> > at >> >> org.apache.tapestry.engine.state.SessionScopeManager.getSession( >> >> >> > SessionScopeManager.java:48) >> >> >> > at org.apache.tapestry.engine.state.SessionScopeManager.get( >> >> >> > SessionScopeManager.java:64) >> >> >> > at >> >> >> > $StateObjectPersistenceManager_10f55958599.get($StateObjectPer >> >> >> sistenceManager_10f55958599.java) >> >> >> > at >> org.apache.tapestry.engine.state.StateObjectManagerImpl.get( >> >> >> > StateObjectManagerImpl.java:50) >> >> >> > at >> >> >> > >> org.apache.tapestry.engine.state.ApplicationStateManagerImpl.get >> >> >> > ( >> >> >> > ApplicationStateManagerImpl.java:60) >> >> >> > at >> >> >> > $ApplicationStateManager_10f5595849d.get($ApplicationStateMana >> >> >> ger_10f5595849d.java) >> >> >> > at >> >> >> > $ApplicationStateManager_10f5595849e.get($ApplicationStateMana >> >> >> ger_10f5595849e.java) >> >> >> > at >> >> >> > com.javaforge.honeycomb.tapestry.ConversationManagerImpl.getCu >> >> >> > rrentConversation >> >> >> > (ConversationManagerImpl.java:59) at >> >> >> > $ConversationManager_10f55958590.getCurrentConversation($Conve >> >> >> rsationManager_10f55958590.java) >> >> >> > at >> >> >> > $ConversationManager_10f55958589.getCurrentConversation($Conve >> >> >> rsationManager_10f55958589.java) >> >> >> > at >> >> >> > com.javaforge.honeycomb.tapestry.ConversationalClientStateStor >> >> >> > age.retrieve( >> >> >> > ConversationalClientStateStorage.java:26) >> >> >> > at >> >> >> > $ClientStateStorage_10f5595858b.retrieve($ClientStateStorage_1 >> >> >> 0f5595858b.java) >> >> >> > at >> >> >> > com.javaforge.honeycomb.hivemind.statefulservice.StatefulServi >> >> >> > ceModel.getServiceFromClientStateStorage >> >> >> > (StatefulServiceModel.java:241) >> >> >> > at >> >> >> > com.javaforge.honeycomb.hivemind.statefulservice.StatefulServi >> >> >> > ceModel.obtainPooledService >> >> >> > (StatefulServiceModel.java:229) >> >> >> > at >> >> >> > com.javaforge.honeycomb.hivemind.statefulservice.StatefulServi >> >> >> > ceModel.getServiceImplementationForCurrentThread >> >> >> > (StatefulServiceModel.java:211) >> >> >> > at $Session_10f5595858d._service($Session_10f5595858d.java) >> >> >> > at $Session_10f5595858d.getSession($Session_10f5595858d.java) >> >> >> > at $Session_10f5595858e.getSession($Session_10f5595858e.java) >> >> >> > at $Session_10f5595858f.getSession($Session_10f5595858f.java) >> >> >> > at >> >> >> > com.javaforge.honeycomb.hibernate.audit.AuditInterceptor.getAu >> >> >> > ditSession( >> >> >> > AuditInterceptor.java:138) >> >> >> > at >> >> >> > com.javaforge.honeycomb.hibernate.audit.AuditInterceptor.befor >> >> >> > eTransactionCompletion >> >> >> > (AuditInterceptor.java:145) >> >> >> > at >> >> >> > $Interceptor_10f559585a6.beforeTransactionCompletion($Intercep >> >> >> > tor_10f559585a6.java) >> >> >> > at >> >> >> > $Interceptor_10f559585a7.beforeTransactionCompletion($Intercep >> >> >> > tor_10f559585a7.java) >> >> >> > at org.hibernate.impl.SessionImpl.beforeTransactionCompletion( >> >> >> > SessionImpl.java:396) >> >> >> > at org.hibernate.jdbc.JDBCContext.beforeTransactionCompletion( >> >> >> > JDBCContext.java:202) >> >> >> > at >> >> >> > >> >> >> >> >> >> org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java >> >> >> > :111) >> >> >> > at >> >> >> >> com.javaforge.honeycomb.service.AbstractPersistenceService.commit( >> >> >> > AbstractPersistenceService.java:61) >> >> >> > >> >> >> > As the data upload service is a hivemind service but not >> >> a tapestry >> >> >> > page, I do not have webRequest object. As Any suggestions? >> >> >> > >> >> >> > Henry >> >> >> > -- >> >> >> > View this message in context: >> >> >> > http://www.nabble.com/Acquiring-session-not-in-a-tapestry-page >> >> >> > -error-tf2765973.html#a7713160 >> >> >> > Sent from the Hivemind - User mailing list archive at >> Nabble.com. >> >> >> > >> >> >> > >> >> >> >> >> > >> >> > >> >> >> >> -- >> >> View this message in context: >> >> http://www.nabble.com/Acquiring-session-not-in-a-tapestry-page >> >> -error-tf2765973.html#a7715924 >> >> Sent from the Hivemind - User mailing list archive at Nabble.com. >> >> >> >> >> > >> > >> >> -- >> View this message in context: >> http://www.nabble.com/Acquiring-session-not-in-a-tapestry-page >> -error-tf2765973.html#a7716730 >> Sent from the Hivemind - User mailing list archive at Nabble.com. >> >> > > -- View this message in context: http://www.nabble.com/Acquiring-session-not-in-a-tapestry-page-error-tf2765973.html#a7717202 Sent from the Hivemind - User mailing list archive at Nabble.com.
