I have added the below code in my WebApp.java to keep the pages in session
alive. Is it correct? Any help?

setPageManagerProvider(new DefaultPageManagerProvider(this)
  {
      protected IDataStore newDataStore()
      {
      //new HttpSessionDataStore(getPageManagerContext(), new
MemorySizeEvictionStrategy (null ) );
          return  new HttpSessionDataStore(getPageManagerContext(), new
PageNumberEvictionStrategy(1000000000));
      }
  });






On Thu, Sep 8, 2016 at 9:20 AM, durairaj t <[email protected]> wrote:

> Hi Martin,
>
> I got the exact error  message while debugging in eclipse;
>
> *Error*:  " org.apache.wicket.protocol.http.PageExpiredException: Page
> with id '3' has expired."
>
>
> I tried following code snippet in the page constructor. It seems the
> following code updating the page until I'm moving out from the current
> (search modal window) page.
>
> *Solun 1:*
>
> moduleForm.add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(1)){
>  //one second
>
> private static final long serialVersionUID = 1L;
> @Override
> protected void onPostProcessTarget(AjaxRequestTarget target) {
> // TODO Auto-generated method stub
> super.onPostProcessTarget(target);
> System.out.println(" i'm alive....");
> }
> });
>
> *Solun 2:*
> moduleForm.add(new AbstractAjaxTimerBehavior(Duration.seconds(1)) {
>  //one second
> protected void onTimer(final AjaxRequestTarget target) {
> System.out.println(" i'm alive....");
> }
> });
>
>
> How to extend the page life time?
>
>
> On Wed, Aug 31, 2016 at 3:29 PM, durairaj t <[email protected]>
> wrote:
>
>> Thank you martin! Let me try this.
>>
>>
>>
>>
>> On Wed, Aug 31, 2016 at 2:27 PM, Martin Grigorov <[email protected]>
>> wrote:
>>
>>> Hi,
>>>
>>> Put a breakpoint at RequestCycle#setResponsePage(Class, PageParameters)
>>> and
>>> see who and why is calling it. This will tell you the reason.
>>> If this doesn't help then put breakpoints in
>>> RestartReponseAtInterceptPageException constructors.
>>>
>>> Martin Grigorov
>>> Wicket Training and Consulting
>>> https://twitter.com/mtgrigorov
>>>
>>> On Wed, Aug 31, 2016 at 5:06 PM, durairaj t <[email protected]>
>>> wrote:
>>>
>>> > I got the same issue in Wicket 1.5, so I migrated it to 6.23, but
>>> still it
>>> > is happening.
>>> >
>>> > Moreover, I used "*Session.get().replaceSession()**;*" just to
>>> reproduce
>>> > the issue. it will not be in the actual application code.
>>> >
>>> > and I just used "* WebSession.get().clear(); *,
>>> *Session.get().clear(); , *
>>> > *WebSession.get().**replaceSession()*" to reproduce the issue. they
>>> are
>>> > also loading login page as it is happening in the application.
>>> >
>>> > I don't know the exact code or component or reason for this issue.
>>> >
>>> >
>>> > On Wed, Aug 31, 2016 at 10:51 AM, Francois Meillet <
>>> > [email protected]> wrote:
>>> >
>>> > > Javadoc from Session # replaceSession() says : Call() upon login to
>>> > > protect against session fixation.
>>> > >
>>> > > Until Wicket version 6.21 the destroy method did not set the session
>>> id
>>> > to
>>> > > null.
>>> > > In 6.23, Session # destroy() set session#id to null, this is why
>>> Login
>>> > > Page is loaded.
>>> > >
>>> > > Hope this helps
>>> > >
>>> > > François
>>> > >
>>> > >
>>> > >
>>> > > > Le 31 août 2016 à 16:21, durairaj t <[email protected]> a
>>> écrit :
>>> > > >
>>> > > > Thank you for your quick response.
>>> > > >
>>> > > > *Session:* 30 minutes.
>>> > > >
>>> > > > *Html Header:*
>>> > > >
>>> > > > <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
>>> > > > http://www.w3.org/TR/html4/loose.dtd";>
>>> > > > <html xmlns:wicket="http://wicket.apache.org";>
>>> > > >
>>> > > > <head>
>>> > > >    <link rel="SHORTCUT ICON" href="images/favicon.ico"
>>> type="image/ico"
>>> > > />
>>> > > >
>>> > > >    <meta http-equiv="Page-Enter" content="blendTrans(Duration=0)">
>>> > > >    <meta http-equiv="Page-Exit" content="blendTrans(Duration=0)">
>>> > > >
>>> > > >    <title>
>>> > > >        <wicket:message key="appname" /> -
>>> > > >        <div wicket:id="titlelable"> </div> -
>>> > > >        <wicket:message key="pagename" />
>>> > > >    </title>
>>> > > >    <link rel="stylesheet" type="text/css" href="theme/Master.css">
>>> > > >    <link rel="stylesheet" type="text/css"
>>> > href="theme/pageBlocking.css">
>>> > > >    <link type="text/css" rel="stylesheet"
>>> > href="Calendar/css/jscal2.css"
>>> > > />
>>> > > >    <link type="text/css" rel="stylesheet"
>>> > > > href="Calendar/css/border-radius.css" />
>>> > > >    <link id="skin-steel" title="Gold" type="text/css"
>>> rel="stylesheet"
>>> > > > href="Calendar/css/steel/steel.css" />
>>> > > >    <script src="Calendar/js/jscal2.js"></script>
>>> > > >    <script src="Calendar/js/lang/en.js"></script>
>>> > > >
>>> > > >    <script type="text/javascript"
>>> > > > src="javascripts/pageBlocking.js"></script>
>>> > > >    <script type="text/javascript"
>>> > > > src="javascripts/aim-hrs-autocomplete.js"></script>
>>> > > >    <script type="text/javascript" src="javascripts/aim_util.js">
>>> > > </script>
>>> > > >    <script type="text/javascript" src="javascripts/mvl.js"></scr
>>> ipt>
>>> > > >    <script type="text/javascript" src="javascripts/masks.js"></s
>>> cript>
>>> > > >    <script type="text/javascript" src="javascripts/yetii.js"></s
>>> cript>
>>> > > >    <script language="JavaScript"
>>> > > > src="jspspellcheck/spellcheck-caller.js"></script>
>>> > > >
>>> > > >
>>> > > >
>>> > > >    <script language="javascript" type="text/javascript">
>>> > > >        //credit: http://psacake.com/web/js.asp
>>> > > >        function imposeMaxLength(Object, evt, MaxLen) {
>>> > > >            var e = window.event ? event.keyCode : evt.which
>>> > > >            if (e == 8 || e == 46 || (e >= 37 && e <= 40)) return
>>> true;
>>> > > > //bs, del, arrows
>>> > > >            return (Object.value.length <= MaxLen);
>>> > > >        }
>>> > > >    </script>
>>> > > >
>>> > > >    <!--
>>> > > > <style type="text/css">
>>> > > > input:focus,textarea:focus {
>>> > > > background-color: lightyellow;
>>> > > > }
>>> > > > </style>
>>> > > > -->
>>> > > >
>>> > > >    <style>
>>> > > >        div.wicket-aa {
>>> > > >            font-family: sans-serif;
>>> > > >            font-size: 12px;
>>> > > >            background-color: white;
>>> > > >            border-width: 2px;
>>> > > >            border-color: gray;
>>> > > >            border-style: solid;
>>> > > >            padding: 2px;
>>> > > >            margin: 1px 0 0 0;
>>> > > >            text-align: left;
>>> > > >            width: 120px;
>>> > > >        }
>>> > > >
>>> > > >        div.wicket-aa ul {
>>> > > >            list-style: none;
>>> > > >            padding: 2px;
>>> > > >            margin: 0;
>>> > > >            width: 100px;
>>> > > >        }
>>> > > >
>>> > > >        div.wicket-aa ul li.selected {
>>> > > >            background-color: #DEEFF7;
>>> > > >            padding: 2px;
>>> > > >            margin: 0;
>>> > > >            width: 100px;
>>> > > >        }
>>> > > >
>>> > > >        div.imxt-vista tr.imxt-grid-row:hover td.imxt-cell,
>>> > > >        div.imxt-vista tr.imxt-grid-row:hover td.imxt-sorted {}
>>> > > >    </style>
>>> > > >
>>> > > >
>>> > > > </head>
>>> > > >
>>> > > >
>>> > > > *Java Code:*
>>> > > >
>>> > > >
>>> > > >
>>> > > > String timeout= "1750000";
>>> > > > if(AppSession.getObjAimShell() != null &&
>>> > > > AppSession.getObjAimShell().getTimeoutLimit() !=null)
>>> > > > timeout = "" + ((AppSession.getObjAimShell().getTimeoutLimit() *
>>> > > 0.9)*1000);
>>> > > > final Model<String> sessionTimeoutInterval = new
>>> > Model<String>(timeout);
>>> > > > HiddenField sessionTimeoutIntervalField = new
>>> > > > HiddenField("sessionTimeoutInterval", sessionTimeoutInterval) ;
>>> > > > sessionTimeoutIntervalField.setOutputMarkupId(true);
>>> > > > sessionTimeoutIntervalField.setMarkupId("sessionTimeoutInterval");
>>> > > > add(sessionTimeoutIntervalField);
>>> > > >
>>> > > >
>>> > > > *Java Script:*
>>> > > > var sessionPingTime = 1750000;
>>> > > > var sessionTimerId = null;
>>> > > >
>>> > > > function resetSessionTimer() {
>>> > > > try{
>>> > > > if(document.getElementById('sessionTimeoutInterval')) {
>>> > > > sessionPingTime = document.getElementById('sessi
>>> onTimeoutInterval').
>>> > > value;
>>> > > > }
>>> > > > if(parent) {
>>> > > > parent.clearTimeout(parent.sessionTimerId);
>>> > > > parent.sessionTimerId = null;
>>> > > > parent.sessionTimerId = parent.setTimeout("windowCloseSignOff();",
>>> > > > sessionPingTime);
>>> > > > }else {
>>> > > > clearTimeout(parent.sessionTimerId);
>>> > > > sessionTimerId = null;
>>> > > > sessionTimerId = setTimeout("windowCloseSignOff();",
>>> sessionPingTime);
>>> > > > }
>>> > > > }catch(c){showScriptError(c, 'resetSessionTimer');}
>>> > > > }
>>> > > >
>>> > > >
>>> > > > On Wed, Aug 31, 2016 at 10:05 AM, Francois Meillet <
>>> > > > [email protected]> wrote:
>>> > > >
>>> > > >> Hi,
>>> > > >>
>>> > > >> What is the session-timeout ?
>>> > > >> Can you show the html page header ? and any java code that modify
>>> it.
>>> > > >>
>>> > > >> François
>>> > > >>
>>> > > >>
>>> > > >>
>>> > > >>> Le 31 août 2016 à 15:49, durairaj t <[email protected]> a
>>> > écrit :
>>> > > >>>
>>> > > >>> I'm migrating to wicket 6.23, createPage()  is working as
>>> expected in
>>> > > >> many
>>> > > >>> modules, but not in the below scenario.
>>> > > >>>
>>> > > >>>
>>> > > >>> There is a search modal window in the application, which is used
>>> to
>>> > > >> search
>>> > > >>> data and keep the entire Page in session to retrieve the data
>>> back
>>> > from
>>> > > >> the
>>> > > >>> session (for the Back button functionality).
>>> > > >>>
>>> > > >>> *Issue:*
>>> > > >>>
>>> > > >>> The search window is just working for 10 to 15 minutes as
>>> expected
>>> > and
>>> > > >> then
>>> > > >>> loading Login Page suddenly.
>>> > > >>>
>>> > > >>> In debug: (I verified the below in the eclipse debugging mode)
>>> > > >>>
>>> > > >>> 1. Returning page from session
>>> > > >>> 2. Page from session is *NOT *null.
>>> > > >>> 3. Session ID is *NOT *modified anywhere in the application.
>>> > > >>> 4. It is just happening only in the search window until I'm
>>> clearing
>>> > > the
>>> > > >>> Search Page object (SrcPage) . But application is not asking me
>>> to
>>> > > >> re-login
>>> > > >>> once it happened.
>>> > > >>>
>>> > > >>> *Code snippet:*
>>> > > >>>
>>> > > >>>             public Page createPage() {
>>> > > >>> return AppSession.getObjAppShell().getSrcPage();
>>> > > >>> });
>>> > > >>>
>>> > > >>>
>>> > > >>> *Reproducing Issue:*
>>> > > >>>
>>> > > >>> I can reproduce the issue by replacing the session in the
>>> > createPage()
>>> > > >>> block, but I'm not sure whether the problem is session or
>>> something
>>> > > else.
>>> > > >>>
>>> > > >>> Example;
>>> > > >>>
>>> > > >>> public Page createPage() {
>>> > > >>> Session.get().replaceSession();// used to reproduce the issue.
>>> > > >>>                                       return
>>> > > >>> AppSession.getObjAppShell().getSrcPage();
>>> > > >>> });
>>> > > >>>
>>> > > >>>
>>> > > >>> *Any help?*
>>> > > >>>
>>> > > >>>
>>> > > >>>
>>> > > >>>
>>> > > >>> Thank you.
>>> > > >>
>>> > > >>
>>> > > >> ------------------------------------------------------------
>>> ---------
>>> > > >> To unsubscribe, e-mail: [email protected]
>>> > > >> For additional commands, e-mail: [email protected]
>>> > > >>
>>> > > >>
>>> > >
>>> > >
>>> > > ------------------------------------------------------------
>>> ---------
>>> > > To unsubscribe, e-mail: [email protected]
>>> > > For additional commands, e-mail: [email protected]
>>> > >
>>> > >
>>> >
>>>
>>
>>
>

Reply via email to