http://braziloutsource.com/wss2.html
Search for 'SWA Session State' . The explanation and javadoc are in
portuguese - if google translate isn't clear enough feel free to ask here.
UUIDCache in that code is managed by ehcache - here's the config:
ehcache
diskStore path=java.io.tmpdir/
cache name=UUID_CACHE
maxElementsInMemory=100
eternal=false
timeToIdleSeconds=1800
timeToLiveSeconds=1800
overflowToDisk=true
diskPersistent=true
memoryStoreEvictionPolicy=LFU
/
/ehcache
I use spring to set up ehcache as:
bean id=uuidCache class=
org.springframework.cache.ehcache.EhCacheFactoryBean
property name=cacheManager
ref local=cacheManager/
/property
property name=cacheName
valuecom.siemens.swa.webservices.security.UUIDCache/value
/property
/bean
UUIDCache is:
package com.siemens.swa.webservices.security;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/** Manage UUID's and its variables via a Singleton. **/
public class UUIDCache {
/** Singleton instance. */
private static UUIDCache _instance;
/** Used to hold references to web vars resources for re-use. */
private Map String, Long timeCache;
/**
Constructor.
intializes the static server properties
*/
private UUIDCache() {
try {
timeCache = Collections.synchronizedMap(
new HashMap String, Long ());
} catch (Exception ex) {
throw new IllegalStateException(Cache constructor exception:
+ ex.toString());
}
}
//Instatiate singleton with a static initializer
static {
try {
_instance = new UUIDCache();
System.out.println(Simple cache started successfully);
} catch (Exception e) {
throw new ExceptionInInitializerError(e);
}
}
/**
returns the instance of the UUIDCache.
p
@return UUIDCache - the singleton.
*/
public static UUIDCache getInstance() {
return _instance;
}
/**
Verify user has logged in.
@param who The Session key
@return Integer webId
*/
public boolean hasSOAPSession(String who) {
return timeCache.containsKey(who);
}
/**
Gets timestamp var as Long.
@param who The Session key
@return timestamp timeout var
*/
public Long getTimeStamp(String who) {
Long timestamp = null;
try {
if (timeCache.containsKey(who)) {
timestamp = timeCache.get(who);
} else {
throw new IllegalStateException(
Corrupted cache detected -
+ getTimeStamp() can't find key:
+ who);
}
} catch (Exception ex) {
throw new IllegalStateException(
Cache getWebID exception: + ex.toString());
}
return timestamp;
}
/**
Put webId into cache.
@param who The Session key
@param timestamp timeout var
*/
public void putTimeStamp(String who, Long timestamp) {
if (timeCache.containsKey(who)) {
// remove old lease
timeCache.remove(who);
}
timeCache.put(who, timestamp);
}
}
Its pretty simple code really.
HTH,
Robert
On 5/3/07, Vickram Jain [EMAIL PROTECTED] wrote:
Robert,
Do you have any code samples on how you setup and used ehcache w/ axis2?
Would appreciate anything you could send my way.
Thanks,
Vickram
- Original Message -
*From:* robert lazarski [EMAIL PROTECTED]
*To:* axis-user@ws.apache.org
*Sent:* Wednesday, May 02, 2007 2:13 PM
*Subject:* Re: [Axis2] Other ways of doing sessions w/o addressing
You can manage the sessions yourself by generating your own token via a
return value and mandate the passing of it back in a future calls, but then
you have to manage the token yourself. That does have the advantage of after
a few days work its stable and flexible. I've done that with both ehcache /
UUID and alternatively ejb stateful session beans.
HTH,
Robert
On 5/2/07, Glen Mazza [EMAIL PROTECTED] wrote:
Can't answer your second question, but the first one may be no. The
bottom of page 1 of the below article states Managing a SOAP session
requires you to engage addressing modules on both the server side and
client side:
http://www.developer.com/java/web/article.php/3620661
Hopefully a more advanced user can think of another option for you.
Glen
Am Mittwoch, den 02.05.2007, 12:37 -0400 schrieb Vickram Jain:
Is there a way to generate sessions without using the WS-Addressing
module?
The consumer for my application has trouble dealing with XML as it is,
and so keeping our message pared down is important. I'd hate to have
to fatten up my messages at this point.
If this is not possible, then one other question: is addressing module
only set to respond with a session token only if the caller