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

Reply via email to