Пользовательская сериализация JDK5 Enum в Axis 1.2 на стороне клиента - PullRequest
0 голосов
/ 11 октября 2010

Я мигрирую веб-сервис SOAP в JDK1.5. Я воспользовался преимуществами родных java-перечислений в новом коде. По некоторым причинам я застрял с Axis 1.2, и он не поддерживает JUMK5 «enums».

Я нашел учебное пособие о том, как реализовать пользовательские сериализации / десериализации для перечислений java: http://www.developpez.net/forums/d236564/java/developpement-web-java/web-services/utiliser-type-enum-jdk5-axis/ (по-французски).

Мне удалось успешно зарегистрировать эти пользовательские обработчики сериализации на стороне сервера с помощью элементов "typeMapping" в файле ".wsdd".

Однако я не могу понять, как зарегистрировать те же классы на стороне клиента, поскольку у меня нет файла ".wssd".

Любая помощь будет оценена.

Спасибо, Рафаэль

1 Ответ

2 голосов
/ 04 ноября 2010

Я наконец нашел, как вручную зарегистрировать пользовательское сопоставление типов. Я делаю это при создании экземпляра Сервиса :

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

Я не знаю, правильно ли это делать, но это работает!

...