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