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

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

2 голосов
/ 01 июня 2009

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

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

...