You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Luciana Moreira Signed by - PrivaSphere AG <si...@privasphere.com> on 2010/11/08 14:22:23 UTC

Re:[axis2] in scope="soapsession" how to set ConfigContextTimeoutInterval OR LastTouchedTime to 0 programmatically

Hello everyone,

In our project we have the exact same problem as the one described by 
Josef in the e-mail below. I did not find any replies to his message. 
Has this topic been addressed somewhere else? Is there a solution to 
enforce soap session termination?

Thx

=====================================================

Subject: 	[axis2] in scope="soapsession" how to set 
ConfigContextTimeoutInterval OR LastTouchedTime to 0 programmatically 
<http://markmail.org/message/4jyj7hcpomfcnoux> 	permalink 
<http://markmail.org/message/4jyj7hcpomfcnoux>
From: 	Stadelmann Josef (jose...@axa-winterthur.ch)
Date: 	Oct 7, 2010 12:37:23 am
List: 	org.apache.ws.axis-user


In scope="soapsession" the liefe-time of the service-object ( a real 
instance for long lasting sessions ) is only controlled in axis2.xml by 
a timeout value

<!-- This will give out the timout of the configuration contexts, in 
milliseconds --> <parameter 
name="ConfigContextTimeoutInterval">30000</parameter>

We use this value as beeing 28'800'000 acounting for 8 hours. The user 
logs in and keeps his statefull server session open for the rest of his 
8 working hours, also some heavy calculation task/calls run very long, 
and our 25 year old LEGACY servers are not made for any form of 
asynchronous communication and callbacks.

The question/problem I have is: how can we make that our service-objects 
go away when the session gets closed or is no longer used in case of a 
fatal error in the server?

We would need to be able to

a) resetting <parameter 
name="ConfigContextTimeoutInterval">0</parameter> b) or call somehow

public void setLastTouchedTime(long t) { lastTouchedTime = t; }

and set LastTouchedTime to 0 to achive the effect that when 
Sessionmanager.cleanupServiceGroupContexts() is called next times, it 
triggers the timeout

if ((currentTime - sessionContext.getLastTouchedTime()) > 
sessionContext.sessionContextTimeoutInterval)

and then as a followup cleanly does it.remove(); and the rest of the 
required cleanup cycles, what ever they are right now.

As we keep a reference to the sessionContext as passed by init() we 
could easy call the proper code and cleanup the timeout and tochtime 
values for our own object.

This would force that our service-objects destroy() routine would be 
called and that we have a means of cleaning up resources keep under 
axis2 control and lock when a long lasting session shall terminate as 
abort() or as close().

I could sniff in the code into axis2 kernel and have the issue to 
backintegrate the change, but maybe someone has a better idea.

Josef



----------
This message has been signed by the PrivaSphere Mail Signature Service.