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
>


-- 
Vote for Wicket at the http://www.thebeststuffintheworld.com/vote_for/wicket
Wicket 1.2.3 is as easy as 1-2-3. Download Wicket now!
http://wicketframework.org

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