JAX-WS возвращает сложный объект? - PullRequest
4 голосов
/ 22 августа 2009

Я довольно новичок в Java Web Services, но нигде не могу найти хорошего объяснения.

У меня есть 2 веб-проекта на Java в NetBeans.
Один в качестве веб-службы и один в качестве клиента для этого веб-службы.
Я также создал свой собственный класс под названием «Person», который имеет то, что вы ожидаете: имя, dob и т. Д.

Мне бы хотелось иметь метод веб-службы с именем ListPeople (), который бы возвращал массив объектов «Person».

Нужно ли иметь этот класс в обоих проектах?
Должен ли я сначала сериализовать объект?
Должен ли я использовать JAXB, если да, то с чего мне начать?

Извините за вопросы n00b, но я в замешательстве.
Каков нормальный способ сделать это?

Заранее спасибо

1 Ответ

2 голосов
/ 22 августа 2009
  1. Нужно ли иметь этот класс в обоих проектах? Да.
  2. Должен ли я сначала сериализовать объект? Нет.
  3. Должен ли я использовать JAXB, если да, с чего начать? Я не стал бы. Я предпочитаю интерфейсы javax.oxm, потому что мне нет дела до JAXB, но это личное мнение.

Мое личное предпочтение - использовать Spring web service s. Если вы оказались пользователем Spring, я думаю, что это лучший путь. Если нет, возможно, документы все равно помогут уточнить.

Вы испытываете причину, по которой мне не нравится ваш подход: и сервис, и клиент, и вы зависите от класса и кода OXM. Вы должны иметь это в обоих местах, в идеальной синхронизации. Измените один, и вы должны изменить оба.

Я стараюсь минимизировать зависимости, если могу.

И в этом случае вы можете, если отправляете XML туда и обратно. Начните со схемы XSD. Пусть клиент и служба справляются с этим вместо объектов Java. Ваш сервис будет пригоден для клиентов, которые не поддерживают Java.

Если вы воспользуетесь этим подходом, вам придется беспокоиться только об ОХМ на стороне сервера. Вы берете XML-запрос и размещаете его в выбранном вами Java-объекте и передаете на уровень обслуживания (примечание: НЕ уровень веб-службы) для обработки. Превратите объект ответа в поток ответов XML, и Боб станет вашим дядей. Пусть клиент справится с этим.

...