Ok. I found the solution myself.
1. Create your own SerializerFactory (see below)
2. Hook it up to the factory using :
factory.getSerializerFactory().addFactory(new ExtServiceFactory());;
My question.
1. Isnt there some code in Hessian that already does that ?
2. How can I set the Deserializer/Serializer for any HessianProxyFactory
that is being created so that i don't have to make sure i call
getSerializerFactory().addFactory(new ExtServiceFactory()) on every
HessianProxyFactory instance i create ? How do I set below
Serializer/Deserializer mappings as a default ?
Thanks a lot
Frank
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import com.caucho.hessian.io.AbstractSerializerFactory;
import com.caucho.hessian.io.Deserializer;
import com.caucho.hessian.io.HessianProtocolException;
import com.caucho.hessian.io.Serializer;
public class ExtServiceFactory extends AbstractSerializerFactory {
private static final Map<Class<?>, Serializer> Serializers = new
HashMap<Class<?>, Serializer>();
private static final Map<Class<?>, Deserializer> Deserializers = new
HashMap<Class<?>, Deserializer>();
static {
Deserializers.put(java.io.File.class, new
com.caucho.hessian.io.FileDeserializer());
Deserializers.put(java.math.BigDecimal.class, new
com.caucho.hessian.io.BigDecimalDeserializer());
Deserializers.put(javax.management.ObjectName.class, new
com.caucho.hessian.io.ObjectNameDeserializer());
Serializers.put(com.caucho.hessian.io.HessianRemoteObject.class,
new com.caucho.hessian.io.RemoteSerializer());
Serializers.put(com.caucho.burlap.io.BurlapRemoteObject.class,
new com.caucho.hessian.io.RemoteSerializer());
Serializers.put(java.io.File.class, new
com.caucho.hessian.io.StringValueSerializer());
Serializers.put(java.math.BigDecimal.class, new
com.caucho.hessian.io.StringValueSerializer());
Serializers.put(java.util.Locale.class, new
com.caucho.hessian.io.LocaleSerializer());
Serializers.put(javax.management.ObjectName.class, new
com.caucho.hessian.io.StringValueSerializer());
}
@Override
public Serializer getSerializer(final Class a_class) throws
HessianProtocolException {
return Serializers.get(a_class);
}
@Override
public Deserializer getDeserializer(final Class a_class) throws
HessianProtocolException {
return Deserializers.get(a_class);
}
}
------ Original Message ------
From: "Frank" <fr...@frankjlangel.com>
To: hessian-interest@caucho.com
Sent: 07/05/2014 12:08:40
Subject: META-INF/hessian/Deserializer
Hi,
does anyone know how i can set the Deserializer programmatically. We
are using OSGI, and these settings are not being picked up. How would I
code these settings in my code that i find in my
META-INF/hessian/Deserializer file ?
java.io.File=com.caucho.hessian.io.FileDeserializer
java.math.BigDecimal=com.caucho.hessian.io.BigDecimalDeserializer
javax.management.ObjectName=com.caucho.hessian.io.ObjectNameDeserializer
Thanks a lot
Frank
_______________________________________________
hessian-interest mailing list
hessian-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/hessian-interest