Почему 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.