OK.  I've got it working again.  The HibernateSession was set up in a hibernate 
Servlet filter.  I found the minimum necessary lines to get the system working 
using my session factory configured in Spring.  For the interested parties, 
here they are:


                
                SessionFactory factory = (SessionFactory) 
getSpringContext().getBean("sessionFactory");
                Session session = SessionFactoryUtils.getSession(factory, true);
                session.setFlushMode(FlushMode.AUTO);
                TransactionSynchronizationManager.bindResource(factory, new 
SessionHolder(session));


I have them set up just after I configured the Spring container.

Thank you for pointing me in the right direction.


-----Original Message-----
From: Eelco Hillenius [mailto:eelco.hillen...@gmail.com] 
Sent: Tuesday, November 17, 2009 7:06 PM
To: users@wicket.apache.org
Subject: Re: Spring/Wicket/Hibernate testing driving me banana nuts

So in typical web applications, people would install a session filter
(like https://www.hibernate.org/43.html), which would open a session
at the start of a request, and close it afterwards. You probably need
to find an alternative for that filter in your test code.

Eelco

On Tue, Nov 17, 2009 at 4:26 PM, Loritsch, Berin C.
<berin.lorit...@gd-ais.com> wrote:
> Hmm, OK attachments are stripped here.  Having gone back up through the stack 
> trace, WicketTester extends BaseWicketTester which then extends 
> MockWebApplication.  Essentially MockWebApplication has the base 
> implementations for setting up the WebRequestCycle.
>
> The @SpringBean is having an effect, because my exception is a 
> HibernateException and not a NullPointerException.  I think it has something 
> to do with how the     <tx:annotation-driven transaction-manager="txManager" 
> /> interacts with the WicketTester that is unclear to me.  The thing that has 
> changed is that while I had that declaration, I introduced using the 
> @Transactional attributes on some of my Hibernate objects.  Spring is giving 
> me a proxied class that is supposed to take care of the hibernate sessions 
> and transactions for me.  It's having a hard time in the JUnit environment.  
> I'm using the following TransactionManager:
>
>    <bean id="txManager"
>        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
>        <property name="sessionFactory" ref="sessionFactory" />
>    </bean>
>
>
> -----Original Message-----
> From: Loritsch, Berin C. [mailto:berin.lorit...@gd-ais.com]
> Sent: Tuesday, November 17, 2009 4:15 PM
> To: users@wicket.apache.org
> Subject: RE: Spring/Wicket/Hibernate testing driving me banana nuts
>
> I've got the part that injects a Spring WebApplicationContext into the 
> WicketTester already (Source attached).  I should be using the application 
> class, if I'm not then something has changed unbeknownst to me.  Is there any 
> place it would swap out what I told it to use for what it decided on its own 
> to use?
>
> -----Original Message-----
> From: Igor Vaynberg [mailto:igor.vaynb...@gmail.com]
> Sent: Tuesday, November 17, 2009 4:05 PM
> To: users@wicket.apache.org
> Subject: Re: Spring/Wicket/Hibernate testing driving me banana nuts
>
> i see you are using MockWebApplication in your tests. this application does 
> not install the SpringComponentInjector and so @SpringBean has no effect.
>
> you should either give wickettester an instance of your actual application 
> class, or create a mock one that installs springcomponentinjector.
>
> -igor
>
> On Tue, Nov 17, 2009 at 1:00 PM, Loritsch, Berin C.
> <berin.lorit...@gd-ais.com> wrote:
>>  <<application.xml>> I initially had a setup that worked with both a
>> Web context and a JUnit context.  The problem was the amount of hand
>> coding and adjusting of the Spring context the approach needed.  I
>> finally got the Spring's transaction interceptor working with the
>> auto-wiring (the key is using an interface).  So now my problem is
>> that while I've saved myself the headache of making changes to a bunch
>> of files every time I add a new service, my unit tests are now failing.
>>
>> I've traced the failure to a specific class that is decorated with the
>> InjectorHolder--although I believe that is merely because it is the
>> first component that does any Hibernate requests.  I'll include the
>> stacktrace at the bottom of the message.
>>
>> I had to remove the line that specified that sessions would be thread
>> bound in Hibernate to take advantage of the Spring managed
>> transactions, and adding that configuration item back in makes no
>> difference for the tests.  I'm hoping I'm just missing something
>> simple, but all my Googling is turning up dead ends.  Any help out there?
>>
>>
>>
>>
>>
>>
>>
>>
>> org.apache.wicket.WicketRuntimeException: Error attaching this
>> container for rendering: [MarkupContainer [Component id = content]]
>>        at
>> org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContain
>> er
>> .java:1739)
>>        at
>> org.apache.wicket.Component.onBeforeRender(Component.java:3854)
>>        at
>> org.apache.wicket.Component.internalBeforeRender(Component.java:1061)
>>        at
>> org.apache.wicket.Component.beforeRender(Component.java:1095)
>>        at
>> org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContain
>> er
>> .java:1727)
>>        at
>> org.apache.wicket.Component.onBeforeRender(Component.java:3854)
>>        at org.apache.wicket.Page.onBeforeRender(Page.java:1501)
>>        at
>> com.gdais.incidents.view.SiteTemplate.onBeforeRender(SiteTemplate.java
>> :3
>> 3)
>>        at
>> org.apache.wicket.Component.internalBeforeRender(Component.java:1061)
>>        at
>> org.apache.wicket.Component.beforeRender(Component.java:1095)
>>        at
>> org.apache.wicket.Component.prepareForRender(Component.java:2223)
>>        at
>> org.apache.wicket.Component.prepareForRender(Component.java:2260)
>>        at org.apache.wicket.Page.renderPage(Page.java:893)
>>        at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarg
>> et
>> .respond(BookmarkablePageRequestTarget.java:262)
>>        at
>> org.apache.wicket.request.AbstractRequestCycleProcessor.respond(Abstra
>> ct
>> RequestCycleProcessor.java:105)
>>        at
>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.ja
>> va
>> :1258)
>>        at org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
>>        at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
>>        at
>> org.apache.wicket.RequestCycle.request(RequestCycle.java:594)
>>        at
>> org.apache.wicket.protocol.http.MockWebApplication.processRequestCycle
>> (M
>> ockWebApplication.java:478)
>>        at
>> org.apache.wicket.protocol.http.MockWebApplication.processRequestCycle
>> (M
>> ockWebApplication.java:390)
>>        at
>> org.apache.wicket.util.tester.BaseWicketTester.startPage(BaseWicketTes
>> te
>> r.java:301)
>>        at
>> com.gdais.incidents.view.TestTriagePanel.assertTriageNotAvailableFor(T
>> es
>> tTriagePanel.java:33)
>>        at
>> com.gdais.incidents.view.TestTriagePanel.testTriagePanelNotForAdminist
>> ra
>> tor(TestTriagePanel.java:27)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
>> av
>> a:39)
>>        at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
>> or
>> Impl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>        at junit.framework.TestCase.runTest(TestCase.java:164)
>>        at junit.framework.TestCase.runBare(TestCase.java:130)
>>        at junit.framework.TestResult$1.protect(TestResult.java:106)
>>        at junit.framework.TestResult.runProtected(TestResult.java:124)
>>        at junit.framework.TestResult.run(TestResult.java:109)
>>        at junit.framework.TestCase.run(TestCase.java:120)
>>        at junit.framework.TestSuite.runTest(TestSuite.java:230)
>>        at junit.framework.TestSuite.run(TestSuite.java:225)
>>        at
>> org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(J
>> Un
>> it3TestReference.java:130)
>>        at
>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.
>> ja
>> va:38)
>>        at
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(Remote
>> Te
>> stRunner.java:460)
>>        at
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(Remote
>> Te
>> stRunner.java:673)
>>        at
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestR
>> un
>> ner.java:386)
>>        at
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTest
>> Ru
>> nner.java:196)
>> Caused by: org.hibernate.HibernateException: No Hibernate Session
>> bound to thread, and configuration does not allow creation of
>> non-transactional one here
>>        at
>> org.springframework.orm.hibernate3.SpringSessionContext.currentSession
>> (S
>> pringSessionContext.java:63)
>>        at
>> org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactory
>> Im
>> pl.java:622)
>>        at
>> com.gdais.incidents.util.SessionFactoryAware.getCurrentSession(Session
>> Fa
>> ctoryAware.java:31)
>>        at
>> com.gdais.incidents.util.SessionFactoryAware.findAll(SessionFactoryAwa
>> re
>> .java:61)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
>> av
>> a:39)
>>        at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
>> or
>> Impl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>        at
>> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflectio
>> n(
>> AopUtils.java:307)
>>        at
>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamic
>> Ao
>> pProxy.java:198)
>>        at $Proxy15.findAll(Unknown Source)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
>> av
>> a:39)
>>        at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
>> or
>> Impl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>        at
>> org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyIni
>> tP
>> roxyFactory.java:416)
>>        at org.apache.wicket.proxy.$Proxy19.findAll(Unknown Source)
>>        at
>> com.gdais.incidents.view.model.TriageListModel.load(TriageListModel.ja
>> va
>> :26)
>>        at
>> com.gdais.incidents.view.model.TriageListModel.load(TriageListModel.ja
>> va
>> :1)
>>        at
>> org.apache.wicket.model.LoadableDetachableModel.getObject(LoadableDeta
>> ch
>> ableModel.java:122)
>>        at
>> org.apache.wicket.Component.getDefaultModelObject(Component.java:1655)
>>        at
>> org.apache.wicket.markup.html.list.ListView.getViewSize(ListView.java:
>> 22
>> 1)
>>        at
>> org.apache.wicket.markup.html.list.ListView.onPopulate(ListView.java:5
>> 25
>> )
>>        at
>> org.apache.wicket.markup.repeater.AbstractRepeater.onBeforeRender(Abst
>> ra
>> ctRepeater.java:131)
>>        at
>> org.apache.wicket.Component.internalBeforeRender(Component.java:1061)
>>        at
>> org.apache.wicket.Component.beforeRender(Component.java:1095)
>>        at
>> org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContain
>> er
>> .java:1727)
>>        ... 41 more
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> For additional commands, e-mail: users-h...@wicket.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

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


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

Reply via email to