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

标签 java soap enums axis

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

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

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

但是,我不知道如何在客户端注册相同的类,因为我这里没有“.wssd”文件。

如有任何帮助,我们将不胜感激。

谢谢, 拉斐尔

最佳答案

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

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);

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

关于java - 客户端 Axis 1.2 中 JDK5 Enum 的自定义序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3904970/

相关文章:

java - 在 Apache Camel 应用程序中,单元测试如何注入(inject)模拟端点来代替真实端点?

soap - Camel Caps SOAP 方法名称

java - 如何摆脱 SOAP 信封?

Android:如何将枚举放入 bundle 中?

c# - 更改枚举菜单名称格式 [C#]

ruby-on-rails - Rails 4 枚举验证

java - Android 中的 OpenNLP 在尝试初始化 posModel 时出现 FileNotFoundException

java - 列出从 java 类调用的方法?

java - 组织.eclipse.swt.SWTException : Invalid thread access

Android ksoap2 发送复杂对象