Почему java.io.ObjectStreamException используется в генераторе заглушек WTK для перечислений?

Я использую веб-сервис, реализованный в 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 и указания на проблемы совместимости?

1 ответ

Решение

CLDC и Wireless Toolkit используют Java Micro Edition. JavaME основан на версии 2 языка Java, что означает отсутствие обобщений и перечислений.

Первым шагом в изучении веб-сервисов для вашего телефона Blackberry будет чтение спецификаций JSR-172.

Другие вопросы по тегам