You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@hivemind.apache.org by Henry Tong <he...@gmail.com> on 2006/12/06 04:53:46 UTC

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_10f5595850c.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($StateObjectPersistenceManager_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($ApplicationStateManager_10f5595849d.java)
at
$ApplicationStateManager_10f5595849e.get($ApplicationStateManager_10f5595849e.java)
at
com.javaforge.honeycomb.tapestry.ConversationManagerImpl.getCurrentConversation
(ConversationManagerImpl.java:59)
at
$ConversationManager_10f55958590.getCurrentConversation($ConversationManager_10f55958590.java)
at
$ConversationManager_10f55958589.getCurrentConversation($ConversationManager_10f55958589.java)
at
com.javaforge.honeycomb.tapestry.ConversationalClientStateStorage.retrieve(
ConversationalClientStateStorage.java:26)
at
$ClientStateStorage_10f5595858b.retrieve($ClientStateStorage_10f5595858b.java)
at
com.javaforge.honeycomb.hivemind.statefulservice.StatefulServiceModel.getServiceFromClientStateStorage
(StatefulServiceModel.java:241)
at
com.javaforge.honeycomb.hivemind.statefulservice.StatefulServiceModel.obtainPooledService
(StatefulServiceModel.java:229)
at
com.javaforge.honeycomb.hivemind.statefulservice.StatefulServiceModel.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.getAuditSession(
AuditInterceptor.java:138)
at
com.javaforge.honeycomb.hibernate.audit.AuditInterceptor.beforeTransactionCompletion
(AuditInterceptor.java:145)
at
$Interceptor_10f559585a6.beforeTransactionCompletion($Interceptor_10f559585a6.java)
at
$Interceptor_10f559585a7.beforeTransactionCompletion($Interceptor_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.


RE: Acquiring session not in a tapestry page error

Posted by Ma...@bmw.ch.
Never mind, I'm glad to get feedback on honeycomb.
Marcus 

> -----Original Message-----
> From: Henry Tong [mailto:henrytong.pi@gmail.com] 
> Sent: Wednesday, December 06, 2006 11:58 AM
> To: user@hivemind.apache.org
> Subject: RE: Acquiring session not in a tapestry page error
> 
> 
> 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.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 [mailto:henrytong.pi@gmail.com]
> >> 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
> >> 
> >> 
> >> Schulte Marcus wrote:
> >> > 
> >> > Dear Henry,
> >> > 
> >> > replying inline:
> >> > 
> >> >> -----Original Message-----
> >> >> From: Henry Tong [mailto:henrytong.pi@gmail.com]
> >> >> Sent: Wednesday, December 06, 2006 10:19 AM
> >> >> To: user@hivemind.apache.org
> >> >> 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: Marcus.Schulte@bmw.ch [mailto:Marcus.Schulte@bmw.ch]
> >> >> >> Sent: Wednesday, December 06, 2006 8:15 AM
> >> >> >> To: user@hivemind.apache.org
> >> >> >> 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:henrytong.pi@gmail.com]
> >> >> >> > Sent: Wednesday, December 06, 2006 4:54 AM
> >> >> >> > To: user@hivemind.apache.org
> >> >> >> > 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_10
> >> >> >> > f
> >> >> >> 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($StateObjectPe
> >> >> >> > r
> >> >> >> 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($ApplicationStateMan
> >> >> >> > a
> >> >> >> ger_10f5595849d.java)
> >> >> >> > at
> >> >> >> > 
> $ApplicationStateManager_10f5595849e.get($ApplicationStateMan
> >> >> >> > a
> >> >> >> ger_10f5595849e.java)
> >> >> >> > at
> >> >> >> > 
> com.javaforge.honeycomb.tapestry.ConversationManagerImpl.getC
> >> >> >> > u
> >> >> >> > rrentConversation
> >> >> >> > (ConversationManagerImpl.java:59) at 
> >> >> >> > 
> $ConversationManager_10f55958590.getCurrentConversation($Conv
> >> >> >> > e
> >> >> >> rsationManager_10f55958590.java)
> >> >> >> > at
> >> >> >> > 
> $ConversationManager_10f55958589.getCurrentConversation($Conv
> >> >> >> > e
> >> >> >> rsationManager_10f55958589.java)
> >> >> >> > at
> >> >> >> > 
> com.javaforge.honeycomb.tapestry.ConversationalClientStateSto
> >> >> >> > r
> >> >> >> > age.retrieve(
> >> >> >> > ConversationalClientStateStorage.java:26)
> >> >> >> > at
> >> >> >> > 
> $ClientStateStorage_10f5595858b.retrieve($ClientStateStorage_
> >> >> >> > 1
> >> >> >> 0f5595858b.java)
> >> >> >> > at
> >> >> >> > 
> com.javaforge.honeycomb.hivemind.statefulservice.StatefulServ
> >> >> >> > i ceModel.getServiceFromClientStateStorage
> >> >> >> > (StatefulServiceModel.java:241) at 
> >> >> >> > 
> com.javaforge.honeycomb.hivemind.statefulservice.StatefulServ
> >> >> >> > i
> >> >> >> > ceModel.obtainPooledService
> >> >> >> > (StatefulServiceModel.java:229) at 
> >> >> >> > 
> com.javaforge.honeycomb.hivemind.statefulservice.StatefulServ
> >> >> >> > i 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.getA
> >> >> >> > u
> >> >> >> > ditSession(
> >> >> >> > AuditInterceptor.java:138)
> >> >> >> > at
> >> >> >> > 
> com.javaforge.honeycomb.hibernate.audit.AuditInterceptor.befo
> >> >> >> > r
> >> >> >> > eTransactionCompletion
> >> >> >> > (AuditInterceptor.java:145)
> >> >> >> > at
> >> >> >> > 
> $Interceptor_10f559585a6.beforeTransactionCompletion($Interce
> >> >> >> > p
> >> >> >> > tor_10f559585a6.java)
> >> >> >> > at
> >> >> >> > 
> $Interceptor_10f559585a7.beforeTransactionCompletion($Interce
> >> >> >> > p
> >> >> >> > 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-pag
> >> >> >> > e -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.
> 
> 

RE: Acquiring session not in a tapestry page error

Posted by Henry Tong <he...@gmail.com>.
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:henrytong.pi@gmail.com] 
>> 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
>> 
>> 
>> Schulte Marcus wrote:
>> > 
>> > Dear Henry,
>> > 
>> > replying inline:
>> > 
>> >> -----Original Message-----
>> >> From: Henry Tong [mailto:henrytong.pi@gmail.com]
>> >> Sent: Wednesday, December 06, 2006 10:19 AM
>> >> To: user@hivemind.apache.org
>> >> 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: Marcus.Schulte@bmw.ch [mailto:Marcus.Schulte@bmw.ch]
>> >> >> Sent: Wednesday, December 06, 2006 8:15 AM
>> >> >> To: user@hivemind.apache.org
>> >> >> 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:henrytong.pi@gmail.com]
>> >> >> > Sent: Wednesday, December 06, 2006 4:54 AM
>> >> >> > To: user@hivemind.apache.org
>> >> >> > 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.


RE: Acquiring session not in a tapestry page error

Posted by Ma...@bmw.ch.
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:henrytong.pi@gmail.com] 
> 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
> 
> 
> Schulte Marcus wrote:
> > 
> > Dear Henry,
> > 
> > replying inline:
> > 
> >> -----Original Message-----
> >> From: Henry Tong [mailto:henrytong.pi@gmail.com]
> >> Sent: Wednesday, December 06, 2006 10:19 AM
> >> To: user@hivemind.apache.org
> >> 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: Marcus.Schulte@bmw.ch [mailto:Marcus.Schulte@bmw.ch]
> >> >> Sent: Wednesday, December 06, 2006 8:15 AM
> >> >> To: user@hivemind.apache.org
> >> >> 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:henrytong.pi@gmail.com]
> >> >> > Sent: Wednesday, December 06, 2006 4:54 AM
> >> >> > To: user@hivemind.apache.org
> >> >> > 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.
> 
> 

RE: Acquiring session not in a tapestry page error

Posted by Henry Tong <he...@gmail.com>.
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(SessionImpl.java:399)
>15> exception in interceptor beforeTransactionCompletion()
java.lang.NullPointerException: Property 'webRequest' of <OuterProxy for
tapestry.globals.RequestGlobals(org.apache.tapestry.services.RequestGlobals)>
is null.
	at
$WebRequest_10f574018b1._targetServiceProperty($WebRequest_10f574018b1.java)
	at $WebRequest_10f574018b1.getSession($WebRequest_10f574018b1.java)
	at $WebRequest_10f57401872.getSession($WebRequest_10f57401872.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_10f574018a9.get($StateObjectPersistenceManager_10f574018a9.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_10f5740184a.get($ApplicationStateManager_10f5740184a.java)
	at
$ApplicationStateManager_10f5740184b.get($ApplicationStateManager_10f5740184b.java)
	at
com.javaforge.honeycomb.tapestry.ConversationManagerImpl.getCurrentConversation(ConversationManagerImpl.java:59)
	at
$ConversationManager_10f574018a0.getCurrentConversation($ConversationManager_10f574018a0.java)
	at
$ConversationManager_10f5740189e.getCurrentConversation($ConversationManager_10f5740189e.java)
	at
com.javaforge.honeycomb.tapestry.ConversationalClientStateStorage.retrieve(ConversationalClientStateStorage.java:26)
	at
$ClientStateStorage_10f5740188f.retrieve($ClientStateStorage_10f5740188f.java)
	at
com.javaforge.honeycomb.hivemind.statefulservice.StatefulServiceModel.getServiceFromClientStateStorage(StatefulServiceModel.java:241)
	at
com.javaforge.honeycomb.hivemind.statefulservice.StatefulServiceModel.obtainPooledService(StatefulServiceModel.java:229)
	at
com.javaforge.honeycomb.hivemind.statefulservice.StatefulServiceModel.getServiceImplementationForCurrentThread(StatefulServiceModel.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.getAuditSession(AuditInterceptor.java:138)
	at
com.javaforge.honeycomb.hibernate.audit.AuditInterceptor.beforeTransactionCompletion(AuditInterceptor.java:145)
	at
$Interceptor_10f5740188c.beforeTransactionCompletion($Interceptor_10f5740188c.java)
	at
$Interceptor_10f5740188d.beforeTransactionCompletion($Interceptor_10f5740188d.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)
	at $GenericDao_10f5740189c.commit($GenericDao_10f5740189c.java)
	at
pihk.pacconmini.server.service.jpop.impl.RecordUploadImpl.saveOrUpdateRecord(RecordUploadImpl.java:78)
	at
pihk.pacconmini.server.service.jpop.impl.RecordUploadImpl.upload(RecordUploadImpl.java:45)
	at $RecordUpload_10f57401896.upload($RecordUpload_10f57401896.java)
	at
pihk.pacconmini.server.service.jpop.impl.DataUploadImpl.startToRun(DataUploadImpl.java:132)
	at
pihk.pacconmini.server.service.jpop.impl.DataUploadImpl.run(DataUploadImpl.java:73)
	at $DataUpload_10f57401818.run($DataUpload_10f57401818.java)
	at
pihk.pacconmini.server.service.jpop.impl.DataReplicateImpl.process(DataReplicateImpl.java:129)
	at
pihk.pacconmini.server.service.jpop.impl.DataReplicateImpl$1.run(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:henrytong.pi@gmail.com] 
>> Sent: Wednesday, December 06, 2006 10:19 AM
>> To: user@hivemind.apache.org
>> 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: Marcus.Schulte@bmw.ch [mailto:Marcus.Schulte@bmw.ch]
>> >> Sent: Wednesday, December 06, 2006 8:15 AM
>> >> To: user@hivemind.apache.org
>> >> 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:henrytong.pi@gmail.com]
>> >> > Sent: Wednesday, December 06, 2006 4:54 AM
>> >> > To: user@hivemind.apache.org
>> >> > 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.


RE: Acquiring session not in a tapestry page error

Posted by Ma...@bmw.ch.
Dear Henry, 

replying inline:

> -----Original Message-----
> From: Henry Tong [mailto:henrytong.pi@gmail.com] 
> Sent: Wednesday, December 06, 2006 10:19 AM
> To: user@hivemind.apache.org
> 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: Marcus.Schulte@bmw.ch [mailto:Marcus.Schulte@bmw.ch]
> >> Sent: Wednesday, December 06, 2006 8:15 AM
> >> To: user@hivemind.apache.org
> >> 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:henrytong.pi@gmail.com]
> >> > Sent: Wednesday, December 06, 2006 4:54 AM
> >> > To: user@hivemind.apache.org
> >> > 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.
> 
> 

RE: Acquiring session not in a tapestry page error

Posted by Henry Tong <he...@gmail.com>.
Dear Marcus,

Thanks for your assistance. May I clarify you suggestions?
1. Create two session service
    <service-point id='HibernateWebSession'
interface='org.hibernate.Session'>
        <invoke-factory service-id='MySessionFactory' model='threaded'/>
    </service-point>

    <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>

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?

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: Marcus.Schulte@bmw.ch [mailto:Marcus.Schulte@bmw.ch] 
>> Sent: Wednesday, December 06, 2006 8:15 AM
>> To: user@hivemind.apache.org
>> 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:henrytong.pi@gmail.com]
>> > Sent: Wednesday, December 06, 2006 4:54 AM
>> > To: user@hivemind.apache.org
>> > 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.


RE: Acquiring session not in a tapestry page error

Posted by Ma...@bmw.ch.
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: Marcus.Schulte@bmw.ch [mailto:Marcus.Schulte@bmw.ch] 
> Sent: Wednesday, December 06, 2006 8:15 AM
> To: user@hivemind.apache.org
> 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:henrytong.pi@gmail.com]
> > Sent: Wednesday, December 06, 2006 4:54 AM
> > To: user@hivemind.apache.org
> > 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.
> > 
> > 
> 

RE: Acquiring session not in a tapestry page error

Posted by Ma...@bmw.ch.
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:henrytong.pi@gmail.com] 
> Sent: Wednesday, December 06, 2006 4:54 AM
> To: user@hivemind.apache.org
> 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.
> 
>