13
Apex T. G. India Pvt. Ltd ExecuteAndWait Interceptor Struts Framework Introduction

ExecuteAndWait Interceptor

Embed Size (px)

Citation preview

Apex T. G. India Pvt. Ltd

ExecuteAndWait Interceptor

Struts Framework

Introduction

1

execAndWait

The ExecuteAndWaitInterceptor is used for running long-

lived actions in the background while showing the user a

progress meter(loader image using JavaScript) .

This also prevents the HTTP request from timing out when

the action takes more than 5 or 10 minutes.

1

execAndWait

Using this interceptor is pretty straight forward.

Assuming that you are including struts-default.xml, and this

interceptor is already configured but is not part of any of the

default stacks then it wont work.

Because of the nature of this interceptor, it must be

the last interceptor in the stack.

1

execAndWait This interceptor works on a per-session basis.

It means, same action name ( DemoAction.class ) cannot be

run more than once at a time in a given session. On the

initial request or any subsequent requests (before the action

has completed), the wait result will be returned. 

The wait result is responsible for issuing a subsequent

request back to the action, giving the effect of a self-updating

progress meter.

1

execAndWait If no "wait" result is found, Struts will automatically

generate a wait result on the fly.

But this result is written in FreeMarker and cannot run

unless FreeMarker is installed.

If you don't want to use it with FreeMarker then must

provide a wait page as a result.

1

execAndWait Whenever the wait result is returned, the action that is

currently running in the background will be placed on top of

the stack.

This allows you to display progress data, such as a count, in

the wait page. By making the wait page automatically reload

the request to the action (which will be short-circuited by

the interceptor), can give the appearance of an automatic

progress meter.

1

execAndWait Whenever the wait result is returned, the action that is

currently running in the background will be placed on top of

the stack.

This allows you to display progress data, such as a count, in

the wait page. By making the wait page automatically reload

the request to the action (which will be short-circuited by

the interceptor), can give the appearance of an automatic

progress meter.

1

execAndWait This interceptor also supports using an initial wait delay. An

initial delay is a time in milliseconds let the server wait

before the wait page is shown to the user.

During the wait this interceptor will wake every 100 milii

second to check if the background process is done

premature, thus if the job for some reason doesn't take to

long the wait page is not shown to the user. 

1

execAndWait This is useful for e.g. search actions that have a wide span of

execution time. Using a delay time of 2000 millis we ensure

the user is presented fast search results immediately and for

the slow results a wait page is used.

Important: Because the action will be running in a separate

thread, We can't use ActionContext because it is a

ThreadLocal.

1

execAndWait

The thread kicked off by this interceptor will be named in

the form actionNameBackgroundProcess.

This means if we need to access session data, we need to

implement SessionAware rather than calling

ActionContext.getSession().

1

execAndWait Parameters:threadPriority (optional) - the priority to

assign the thread. Default is Thread.NORM_PRIORITY.

delay (optional) - an initial delay in millis to wait before the

wait page is shown (returning wait as result code). Default is

no initial delay.

delaySleepInterval (optional) - only used with delay. Used

for waking up at certain intervals to check if the background

process is already done. Default is 100 millis.

1

execAndWait

<action name=“abc" class="com.abc.DemoAction

<interceptor-ref name="execAndWait"/>

<result name="wait">wait.jsp</result>

<result name="success">success.jsp</result>

</action>

Thanks

facebook.com/apex.tgi

twitter.com/ApextgiNoida

pinterest.com/apextgi

Stay Connected with us for more chapters on JAVA