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">
<value>com.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:* [email protected]
*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 uses the
> > addressing headers?
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>