Honeycomb currently stores conversation state, especially the Hibernate session, in a Tapestry ASO rather than directly in the session. Therefore it's inaccessible outside Tapestry.
You have basically two options: - replace you Servlet Filter with a custom Tapestry-Service - override the ConversationManager, so that it directly relies on the Http-Session. You'd need some kind of Filter wiring the ConversationManager to the Session then. > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Sent: Monday, June 18, 2007 7:34 PM > To: user@hivemind.apache.org > Subject: RE: Acquiring session not in a tapestry page error > > Hi! > I have a similar problem and I can't find the answer to my > problem for now. I want to update an existing > Tapestry/Hivemind/Hibernate application to use Honeycomb. > In my case the problem appear when I need to access the > database service inside a javax.servlet.Filter. > > I get the same error message: > > java.lang.NullPointerException: Property 'webRequest' of > <OuterProxy for > tapestry.globals.RequestGlobals(org.apache.tapestry.services.R > equestGlobals)> > is null. > > $WebRequest_1133f89bdc4._targetServiceProperty($WebRequest_113 3f89bdc4.java) > $WebRequest_1133f89bdc4.getSession($WebRequest_1133f89bdc4.java) > $WebRequest_1133f89bd5a.getSession($WebRequest_1133f89bd5a.java) > > org.apache.tapestry.engine.state.SessionScopeManager.getSessio > n(SessionScopeManager.java:48) > > org.apache.tapestry.engine.state.SessionScopeManager.get(Sessi > onScopeManager.java:64) > > $StateObjectPersistenceManager_1133f89be90.get($StateObjectPer sistenceManager_1133f89be90.java) > > org.apache.tapestry.engine.state.StateObjectManagerImpl.get(St > ateObjectManagerImpl.java:50) > > org.apache.tapestry.engine.state.ApplicationStateManagerImpl.g > et(ApplicationStateManagerImpl.java:60) > > $ApplicationStateManager_1133f89bd76.get($ApplicationStateMana ger_1133f89bd76.java) > > $ApplicationStateManager_1133f89bd77.get($ApplicationStateMana ger_1133f89bd77.java) > > com.javaforge.honeycomb.tapestry.ConversationManagerImpl.getCu > rrentConversation(ConversationManagerImpl.java:59) > > $ConversationManager_1133f89be87.getCurrentConversation($Conve rsationManager_1133f89be87.java) > > $ConversationManager_1133f89be32.getCurrentConversation($Conve rsationManager_1133f89be32.java) > > com.javaforge.honeycomb.tapestry.ConversationalClientStateStor > age.retrieve(ConversationalClientStateStorage.java:26) > > $ClientStateStorage_1133f89be82.retrieve($ClientStateStorage_1 133f89be82.java) > > com.javaforge.honeycomb.hivemind.statefulservice.StatefulServi > ceModel.getServiceFromClientStateStorage(StatefulServiceModel. > java:240) > > com.javaforge.honeycomb.hivemind.statefulservice.StatefulServi > ceModel.obtainPooledService(StatefulServiceModel.java:229) > > com.javaforge.honeycomb.hivemind.statefulservice.StatefulServi > ceModel.getServiceImplementationForCurrentThread(StatefulServi > ceModel.java:211) > $Session_1133f89be84._service($Session_1133f89be84.java) > $Session_1133f89be84.get($Session_1133f89be84.java) > $Session_1133f89be85.get($Session_1133f89be85.java) > $Session_1133f89be86.get($Session_1133f89be86.java) > com.imagenode.bl.dao.FileDao.getDownload(FileDao.java:23) > $IFileDao_1133f89bea6.getDownload($IFileDao_1133f89bea6.java) > $IFileDao_1133f89bea4.getDownload($IFileDao_1133f89bea4.java) > > com.imagenode.bl.service.DownloadsService.loadDownload(Downloa > dsService.java:37) > > $IDownloadsService_1133f89be30.loadDownload($IDownloadsService > _1133f89be30.java) > > com.imagenode.web.servlets.FileDownloadFilter.serveFileDownloa > d(FileDownloadFilter.java:237) > > com.imagenode.web.servlets.FileDownloadFilter.doFilter(FileDow > nloadFilter.java:87) > > > The configuration file is looking like this: > > <service-point id="FileDao" interface="IFileDao"> > <invoke-factory> > <construct class="FileDao" /> > </invoke-factory> > > <interceptor service-id="hivemind.LoggingInterceptor" /> > </service-point> > > <contribution > configuration-id="honeycomb.hibernate.HibernateSessionFactory"> > <entity > clazz="com.javaforge.honeycomb.hibernate.audit.AuditEvent" /> > <entity clazz="com.imagenode.bl.entity.Download" /> > > <property name="dialect" > value="org.hibernate.dialect.MySQLDialect" /> > <property name="connection.datasource" > value="java:comp/env/jdbc/imagenode" /> > <property name="show_sql" value="true" /> > </contribution> > > > Any suggestions about this? > > Thanks so much! > > -- Ovidiu > > > > > 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.HibernateSessionFact > > or > > 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 [EMAIL PROTECTED] > > > Sent: Wednesday, December 06, 2006 11:18 AM > > > To: user@hivemind.apache.org > > > 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 > > > > > > > > > >