JBossCache doesn't natively allow you to put and get objects across classloaders, so we need to marshal and unmarshal the objects with org.jboss.invocation.MarshalledValue.
private TreeCacheMBean cache;
void put(String path, Object key, Object value) throws Exception {
cache.put(path, key, getMarshalledValue(value));
Object get(String path, Object key) throws Exception {
return getUnMarshalledValue(cache.get(path, key));
}
private Object getUnMarshalledValue(Object value) throws IOException, ClassNotFoundException {
return ((MarshalledValue) value).get();
}
private Object getMarshalledValue(Object value) throws IOException {
return new MarshalledValue(value);
}