2011-02-09 3 views
1

Я столкнулся с проблемой с JAXB 2 при маршалинге моих объектов. У меня есть XmlJavaTypeAdapter, который отлично работает в модульных тестах, но когда я пытаюсь маршалировать один и тот же граф объектов из веб-службы (используя JAX-WS), XmlJavaTypeAdapter игнорируется полностью. Какой самый простой способ отладить эту проблему?Отладка JAXB проблем

У меня есть простой автономный проект, проверенный в моем хранилище svn, который демонстрирует эту проблему. Может кто-нибудь, пожалуйста, посмотрите, не делаю ли я что-то явно неправильно? URL-адрес проекта: http://archfirst.googlecode.com/svn/trunk/java/examples/jaxb-jaxws-sample. В корневой папке есть файл readme.txt, в котором подробно описывается проблема.

Спасибо.

+0

Как вы создаете свой JAXBContext? –

+0

В моем модульном тесте я просто делаю JAXBContext jaxbContext = JAXBContext.newInstance (Order.class); В реальном приложении я не знаю, потому что веб-сервис JAX-WS выполняет сериализацию для меня. Весь объектный граф проходит, только пропущенные адаптеры. – Naresh

+0

Теперь я проверил проблему, используя небольшой отдельный образец. Проблема в том, что веб-служба не может найти адаптер. Точно такой же объект сериализуется правильно, используя JAXB напрямую. Также проблема не имеет ничего общего с несколькими банками. Мой выбор теперь в одном проекте. Он проверен в моем проекте с открытым исходным кодом здесь: http://archfirst.googlecode.com/svn/trunk/java/examples/jaxb-jaxws-sample. Не могли бы вы взглянуть на то, что я делаю что-то явно неправильно. Благодарю. – Naresh

ответ

2

Хорошо, я, наконец, нашел проблему. Мой модульный тест собирал реализацию JAXB в среде выполнения Java, тогда как мой веб-сервис собирал реализацию JAXB от GlassFish. По-видимому, реализация, связанная с GlassFish (2.2.1.1), не может справиться с моим вариантом использования. Я доказал это, вынудив мой модульный тест использовать jaxb-impl-2.2.1.1.jar. Также кажется, что ошибка была исправлена ​​в последней реализации JAXB (2.2.3-1), но я изо всех сил пытаюсь понять, как заменить реализацию GlassFish этой новой версией (см. Мой пост here).

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