2009-08-22 2 views
4

Im довольно новый для веб-служб Java, но я не могу найти хорошее объяснение в любом месте.JAX-WS возвращает сложный объект?

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

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

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

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

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

ответ

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

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

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

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

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

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

+0

Итак, я добавил свой класс к обоим проектам, но получаю несовместимые ошибки типа. Попытка назначить service.Person (из порта WS) клиенту. Не могли бы вы рассказать о шагах, которые я должен предпринять, учитывая, что у меня только веб-сервис, веб-клиент и класс, которые я хотел бы передать объектам между сервером и клиентом. Извините, но я до сих пор не понимаю. – occhiso

+0

См. Выше. JAXB - это всего лишь один способ маршалировать и развязать объекты XML и обратно. – duffymo

+0

Хм, что ты говоришь, имеет смысл. Сохранение класса Java в 2-х местах не очень приятно. Я буду читать этот материал Spring, но я думаю, что у меня может быть требование использовать JAX-WS. Спасибо за информацию. – occhiso

Смежные вопросы