Я использую веб-сервис, реализованный в WCF, для которого определены перечисления в интерфейсе. Я пытаюсь вызвать это из клиента Java BlackBerry. Я использую Eclipse для разработки Java-приложения для BlackBerry. Я использую Sun Java Wireless Toolkit (WTK) 2.5.2 для создания кода заглушки, поскольку веб-служба довольно велика (уже используется клиентом Windows Mobile).
Когда я пытаюсь сгенерировать код заглушки с помощью WTK, в Eclipse появляются ошибки, касающиеся перечислений. В следующей функции он жалуется, что исключение java.io.ObjectStreamException не может быть разрешено для типа.
private Object readResolve()
throws java.io.ObjectStreamException {
return fromValue(getValue());
}
При запуске генератора заглушки есть переключатель для CLDC 1.0 или CLDC 1.1. Генерация с обоими опциями приводит к одной и той же проблеме.
Я нашел сообщение на форуме об этом в Sun без ответа. Человек в этом посте заявляет, что «теперь java.io.ObjectStreamException не находится в CLDC, но вместо этого находится в CDC. Есть ли хороший инструмент для создания заглушек для веб-служб для J2ME, в частности CLDC 1.0 / 1.1?» Я проверил, что он не существует в CLDC 1.1, просмотрев [документация 3 ).
В Eclipse доступны два быстрых исправления, чтобы исправить эту ситуацию: 1) Создайте класс 'ObjectStreamException' в пакете 'java.io' или 2) Исправьте настройку проекта (которая требует, чтобы я добавил ссылку).
Обновление:
Вот что говорит спецификация JSR-172 ...
5.2.5 Перечисление
Подмножество JAX-RPC не обеспечивает поддержку перечислений XML.
5.2.6 Простые типы, полученные путем ограничения
Подмножество JAX-RPC не обеспечивает поддержку получения простых типов по ограничению.
WSDL для перечисления WCF генерирует <xs:simpleType>
с <xs:restriction>
, содержащим <xs:enumeration>
. Так я просто скажу, что это поле вместо int и определит константы?
Это просто ошибка в WTK? Если это так, я отправил отчет об ошибке в Sun и посмотрю, ответят ли они. Почему инструментарий не помечает это как ошибку?
Так что теперь мне нужно изменить интерфейс, чтобы он соответствовал JSR-172. Существуют ли инструменты для чтения WSDL и указания на проблемы совместимости?