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:[EMAIL PROTECTED]
>> Sent: Wednesday, December 06, 2006 10:19 AM
>> To: [email protected]
>> Subject: RE: Acquiring session not in a tapestry page error
>>
>>
>> 1. Create two session service
>> <service-point id='HibernateWebSession'
>> interface='org.hibernate.Session'>
>> <invoke-factory service-id='MySessionFactory'
>> model='threaded'/>
>> </service-point>
>>
>
> You can continue to use the pre-configured Honeycomb-Session for the
> Web-Requests.
> You should only need to add the EagerLoadSession
>
>>
>> <service-point id='HibernateEagerLoadSession'
>> interface='org.hibernate.Session'>
>> <invoke-factory service-id='MySessionFactory'
>> model='threaded'/>
>> </service-point>
>>
>> 2. Create one session factory only (we use
>> createCoreServiceImplementation(...) to create session)
>> <service-point id='MySessionFactory' parameters-occurs="none"
>> interface='org.apache.hivemind.ServiceImplementationFactory'>
>> <invoke-factory model='singleton'>
>> <construct class='MySessionFactory'>
>> <set-service property='hibernateSessionFactory'
>>
>> service-id='honeycomb.hibernate.HibernateSessionFactory'/>
>> </construct>
>> </invoke-factory>
>> </service-point>
>>
>
> Again, you should be fine with the pre-configured session-factory -
> unless you want to override something anyway. It seems, you're using
> your own implementation of a
> session-factory which delegates to the Honeycomb-Session-Factory. There
> may be a good reason for that, but I don't think it's necessary for the
> problem you described in this thread.
>
>> 3. The Data Upload Service use the HiberateEagerLoadSession Service.
>>
>> We are using honeycomb AbstractPersistenceService to update
>> data in the database in the web app project. Can we use
>> AbstractPersistenceService in the data upload service?
>
> Yes, you can. Just configure a separate instance in HiveMind using your
> EagerLoad-HIbernateService.
>
>>
>> Henry
>>
>>
>> Schulte Marcus wrote:
>> >
>> > Sorry, follow-up:
>> >
>> > You should get away with just defining a new hibernate
>> session service
>> > with a non-stateful service-model (say threaded), keeping the same
>> > SessionFactory.
>> >
>> >> -----Original Message-----
>> >> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
>> >> Sent: Wednesday, December 06, 2006 8:15 AM
>> >> To: [email protected]
>> >> Subject: RE: Acquiring session not in a tapestry page error
>> >>
>> >> Hi Henry,
>> >>
>> >> the Hibernate Session in Honeycomb is per default configure as a
>> >> "stateful" service to support session-per-conversation.
>> >> That means, the service-model stores the Hibernate-Session
>> into the
>> >> conversation-context which is, in a Tapestry context, the
>> >> Web-Session. A web session is, of course, not available in your
>> >> initial load.
>> >>
>> >> I'd suggest that you configure a different Hibernate
>> SessionFactory
>> >> and Session service (you can use the same
>> SessionFactory-Config-Point
>> >> to minimize redundancy) and use that one with your periodically
>> >> triggered loading service.
>> >>
>> >> hth,
>> >> Marcus
>> >>
>> >> > -----Original Message-----
>> >> > From: Henry Tong [mailto:[EMAIL PROTECTED]
>> >> > Sent: Wednesday, December 06, 2006 4:54 AM
>> >> > To: [email protected]
>> >> > Subject: Acquiring session not in a tapestry page error
>> >> >
>> >> >
>> >> > Hi,
>> >> >
>> >> > Our team started a tapestry / honeycomb / hivemind /
>> >> hibernate web app
>> >> > project. A data upload service is needed to load data to
>> >> the database
>> >> > and therefore a hivemind eagerload service is written to
>> run this
>> >> > periodical task. As we want to share the same honeycomb session
>> >> > factory, we inject hibernate session to the service while the
>> >> > hibernate session is getted from the honeycomb session factory.
>> >> >
>> >> > When we tries to save data to the database, the data is
>> >> still saved to
>> >> > the database but the following exception occurs:
>> >> > Property 'webRequest' of <OuterProxy for
>> >> > tapestry.globals.RequestGlobals(
>> >> > org.apache.tapestry.services.RequestGlobals)> is null.
>> >> > at
>> >> > $WebRequest_10f5595850c._targetServiceProperty($WebRequest_10f
>> >> 5595850c.java)
>> >> > at
>> $WebRequest_10f5595850c.getSession($WebRequest_10f5595850c.java)
>> >> > at
>> $WebRequest_10f559584c5.getSession($WebRequest_10f559584c5.java)
>> >> > at
>> org.apache.tapestry.engine.state.SessionScopeManager.getSession(
>> >> > SessionScopeManager.java:48)
>> >> > at org.apache.tapestry.engine.state.SessionScopeManager.get(
>> >> > SessionScopeManager.java:64)
>> >> > at
>> >> > $StateObjectPersistenceManager_10f55958599.get($StateObjectPer
>> >> sistenceManager_10f55958599.java)
>> >> > at org.apache.tapestry.engine.state.StateObjectManagerImpl.get(
>> >> > StateObjectManagerImpl.java:50)
>> >> > at
>> >> > org.apache.tapestry.engine.state.ApplicationStateManagerImpl.get(
>> >> > ApplicationStateManagerImpl.java:60)
>> >> > at
>> >> > $ApplicationStateManager_10f5595849d.get($ApplicationStateMana
>> >> ger_10f5595849d.java)
>> >> > at
>> >> > $ApplicationStateManager_10f5595849e.get($ApplicationStateMana
>> >> ger_10f5595849e.java)
>> >> > at
>> >> > com.javaforge.honeycomb.tapestry.ConversationManagerImpl.getCu
>> >> > rrentConversation
>> >> > (ConversationManagerImpl.java:59)
>> >> > at
>> >> > $ConversationManager_10f55958590.getCurrentConversation($Conve
>> >> rsationManager_10f55958590.java)
>> >> > at
>> >> > $ConversationManager_10f55958589.getCurrentConversation($Conve
>> >> rsationManager_10f55958589.java)
>> >> > at
>> >> > com.javaforge.honeycomb.tapestry.ConversationalClientStateStor
>> >> > age.retrieve(
>> >> > ConversationalClientStateStorage.java:26)
>> >> > at
>> >> > $ClientStateStorage_10f5595858b.retrieve($ClientStateStorage_1
>> >> 0f5595858b.java)
>> >> > at
>> >> > com.javaforge.honeycomb.hivemind.statefulservice.StatefulServi
>> >> > ceModel.getServiceFromClientStateStorage
>> >> > (StatefulServiceModel.java:241)
>> >> > at
>> >> > com.javaforge.honeycomb.hivemind.statefulservice.StatefulServi
>> >> > ceModel.obtainPooledService
>> >> > (StatefulServiceModel.java:229)
>> >> > at
>> >> > com.javaforge.honeycomb.hivemind.statefulservice.StatefulServi
>> >> > ceModel.getServiceImplementationForCurrentThread
>> >> > (StatefulServiceModel.java:211)
>> >> > at $Session_10f5595858d._service($Session_10f5595858d.java)
>> >> > at $Session_10f5595858d.getSession($Session_10f5595858d.java)
>> >> > at $Session_10f5595858e.getSession($Session_10f5595858e.java)
>> >> > at $Session_10f5595858f.getSession($Session_10f5595858f.java)
>> >> > at
>> >> > com.javaforge.honeycomb.hibernate.audit.AuditInterceptor.getAu
>> >> > ditSession(
>> >> > AuditInterceptor.java:138)
>> >> > at
>> >> > com.javaforge.honeycomb.hibernate.audit.AuditInterceptor.befor
>> >> > eTransactionCompletion
>> >> > (AuditInterceptor.java:145)
>> >> > at
>> >> > $Interceptor_10f559585a6.beforeTransactionCompletion($Intercep
>> >> > tor_10f559585a6.java)
>> >> > at
>> >> > $Interceptor_10f559585a7.beforeTransactionCompletion($Intercep
>> >> > tor_10f559585a7.java)
>> >> > at org.hibernate.impl.SessionImpl.beforeTransactionCompletion(
>> >> > SessionImpl.java:396)
>> >> > at org.hibernate.jdbc.JDBCContext.beforeTransactionCompletion(
>> >> > JDBCContext.java:202)
>> >> > at
>> >> >
>> >>
>> org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java
>> >> > :111)
>> >> > at
>> >> com.javaforge.honeycomb.service.AbstractPersistenceService.commit(
>> >> > AbstractPersistenceService.java:61)
>> >> >
>> >> > As the data upload service is a hivemind service but not
>> a tapestry
>> >> > page, I do not have webRequest object. As Any suggestions?
>> >> >
>> >> > Henry
>> >> > --
>> >> > View this message in context:
>> >> > http://www.nabble.com/Acquiring-session-not-in-a-tapestry-page
>> >> > -error-tf2765973.html#a7713160
>> >> > Sent from the Hivemind - User mailing list archive at Nabble.com.
>> >> >
>> >> >
>> >>
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Acquiring-session-not-in-a-tapestry-page
>> -error-tf2765973.html#a7715924
>> Sent from the Hivemind - User mailing list archive at Nabble.com.
>>
>>
>
>
--
View this message in context:
http://www.nabble.com/Acquiring-session-not-in-a-tapestry-page-error-tf2765973.html#a7716730
Sent from the Hivemind - User mailing list archive at Nabble.com.