在客户端的Axis 1.2中自定义JDK5 Enum的序列化

时间:2010-10-11 09:25:57

标签: java soap enums axis

我正在将SOAP Web服务迁移到JDK1.5。 我在新代码中利用了本机java枚举。 由于某些原因,我坚持使用Axis 1.2并且它本身不支持JDK5“enums”。

我找到了一个关于如何为java enums实现自定义序列化/反序列化的教程: http://www.developpez.net/forums/d236564/java/developpement-web-java/web-services/utiliser-type-enum-jdk5-axis/(法文)。

我已经能够通过在“.wsdd”文件中使用“typeMapping”元素在服务器端成功注册那些自定义序列化处理程序。

但是,我无法弄清楚如何在客户端注册相同的类,因为我这里没有“.wssd”文件。

任何帮助都将不胜感激。

谢谢, 圣拉斐尔

1 个答案:

答案 0 :(得分:2)

我终于找到了如何手动注册自定义类型映射。 我在创建服务的实例时执行此操作:

service = new Service(); 

// Get default type mapping
TypeMapping tmap = DefaultTypeMappingImpl.getSingletonDelegate();

// Register our custom serializer / deserializer 
tmap.register(
        MyCustomClass.class, 
        MyCustomClassQName, 
        new MyCustomSerizalizerFactory(), 
        new MyCustomDeserizalizerFactory());

// Add it back to the service
service.getTypeMappingRegistry().register(
        "http://schemas.xmlsoap.org/soap/encoding/", // Default encoding
        tmap);

我不知道这是否是正确的方法,但它有效!