Chuck's using extended sessions, so using that filter for the Wicket
side wouldn't be an option. But I also don't think that wrapping a
Wicket RequestCycle around a servlet request is a good idea (if it's
even possible).

Instead, I would use a filter for the legacy stuff only. You can still
tie such a filter to DataStaticService if you want. The session factory
would be in there (initted by your Wicket app), you just need to tell it
to open and bind the session to your thread.

In fact, such a filter for legacy requests is something I'd like to have
in Databinder, if you make it. Then we could use it for XML-RPC or other
Web services. As it is, we open the Hibernate session inline:
http://databinder.net/wsvn/Databinder/message/r1.0/src/main/java/example/BottleService.java?op=file

(Though that particular service also handles Cajo requests so it
wouldn't work with an HTTP filter.)

Nathan

Martijn Dashorst wrote:
> You could instead use a OpenSessionInViewFilter (which you can
> blatently copy from Spring) that opens a hibernate session for you and
> you can use that in both your wicket app and legacy app.
> 
> Martijn
> 
> On 12/22/06, ChuckDeal <[EMAIL PROTECTED]> wrote:
>> I have a legacy app that I am replacing with Wicket.  It has to be done over
>> time, so I can't do a wholesale rewrite of the app.  I have Wicket as the
>> "main" framework and my legacy, homemade framework will be the secondary.
>> The few Wicket/Databinder pages that I have work pretty well.  My legacy
>> pages are data-oriented as well and I was planning on a partial rewrite of
>> the legacy data tier to use Hibernate instead of pure JDBC.
>>
>> My problem comes in when I try and access the Hibernate Session from my
>> legacy data-tier.  I call DataStaticService.getHibernateSession();, but I
>> get this exception:
>>
>> [code]
>> org.hibernate.HibernateException: No session currently bound to execution
>> context
>>         at
>> org.hibernate.context.ManagedSessionContext.currentSession(ManagedSessionContext.java:50)
>>         at
>> org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:542)
>>         at
>> net.databinder.DataStaticService.getHibernateSession(DataStaticService.java:45)
>> [/code]
>>
>> I know on the surface this looks like a Datbinder question, but I think it
>> may be deeper than that.  I believe I am getting this because the
>> WicketFilter (and therefore the RequestCycle processing) isn't happening for
>> my legacy pages.  So I thought that I could write my own filter that would
>> attempt to do the RequestCycle stuff, but I'm afraid it is currently a
>> little overwhelming.  Before I really dig in, does that seem to be a good
>> approach?  I am thinking that if I can use Wicket to somehow process the
>> requests of my legacy app I can get the benefits of Wicket without having to
>> rewrite everything upfront.
>>
>> When I made my first attempt at my own filter, it literally was a capture of
>> the WicketFilter doGet method (with some minor mods.
>>
>> public void doFilter(ServletRequest servletRequest, ServletResponse
>> servletResponse,
>>         FilterChain chain) throws IOException, ServletException {
>>     HttpServletRequest httpServletRequest = (HttpServletRequest)
>> servletRequest;
>>     HttpServletResponse httpServletResponse = (HttpServletResponse)
>> servletResponse;
>>
>>     String url = httpServletRequest.getRequestURI();
>>     if (url.contains(".jsp")) {
>>         log.info("AIMSFilter.doFilter(): " + url);
>>
>>         final WebApplication webApplication = (WebApplication)
>> Application.get("aimsWicket");
>>
>>         // Create a new webrequest
>>         final WebRequest request =
>> webApplication.newWebRequest(httpServletRequest);
>>
>>         // First, set the webapplication for this thread
>>         Application.set(webApplication);
>>
>>         // Get session for request
>>         final WebSession session = webApplication.getSession(request);
>>
>>         RequestCycle cycle = RequestCycle.get();
>>         if (cycle == null) {
>>             // Create a response object and set the output encoding
>> according to
>>             // wicket's application setttings.
>>             final WebResponse response =
>> webApplication.newWebResponse(httpServletResponse);
>>             response.setAjax(request.isAjax());
>>
>> response.setCharacterEncoding(webApplication.getRequestCycleSettings().getResponseRequestEncoding());
>>
>>             try {
>>                 cycle = session.newRequestCycle(request, response);
>>                 try {
>>                     // Process request
>>                     cycle.request();
>>                 }
>>                 catch (AbortException e) {
>>                     // noop
>>                 }
>>             }
>>             finally {
>>                 // Close response
>>                 response.close();
>>
>>                 // Clean up thread local session
>>                 Session.unset();
>>
>>                 // Clean up thread local application
>>                 Application.unset();
>>             }
>>         }
>>     }
>>
>>     chain.doFilter(servletRequest, servletResponse);
>> }
>>
>> What ended up happening was the MainPage/getHomePage() class was included in
>> the response.  I'm not comepletely sure that that description is accurate
>> because I don't have a lot of scenarios to test for proof, but that is what
>> I see on the screen and that was the pageClass that I saw in
>> DefaultResponseStrategy.respond on the requestCycle.getRequestTarget().
>>
>> Ultimately, I want to be able to do similar processing that takes place for
>> Wicket Pages when I request one of my legacy pages.  Where should I even
>> start?
>>
>> Thanks!
>> Chuck
>> --
>> View this message in context: 
>> http://www.nabble.com/Legacy-apps-tf2871064.html#a8024672
>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>
>>
>> -------------------------------------------------------------------------
>> Take Surveys. Earn Cash. Influence the Future of IT
>> Join SourceForge.net's Techsay panel and you'll get the chance to share your
>> opinions on IT & business topics through brief surveys - and earn cash
>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>> _______________________________________________
>> Wicket-user mailing list
>> Wicket-user@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/wicket-user
>>
> 
> 


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to