JAXB, CXF: не существует ObjectFactory с @XmlElementDecl для элемента ... с - PullRequest
10 голосов
/ 09 мая 2011

Я создаю первый веб-сервис WSDL с JAXB и CXF.У меня нет WSDL, поэтому я не могу внести в него изменения.Я использую ftp: //ftp.ihe.net/TF_Implementation_Material/ITI/wsdl/PIXManager.wsdl в качестве моего WSDL.Я использовал CXF 2.3.0 для генерации классов Java.

Генерация классов Java прошла нормально, но когда я пытаюсь запустить это в веб-приложении, я получаю сообщение об ошибке

com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 17 counts of IllegalAnnotationExceptions

17 отсчетов имеют формат

There's no ObjectFactory with an @XmlElementDecl for the element {urn:hl7-org:v3}assignedDevice.
        this problem is related to the following location:
            at protected javax.xml.bind.JAXBElement org.hl7.v3.QUQIMT021001UV01AuthorOrPerformer.assignedDevice

Когда я иду в упомянутый класс, то есть QUQIMT021001UV01AuthorOrPerformer и смотрю на поле assignDevice, я вижу это

@XmlElementRef(name = "assignedDevice", namespace = "urn:hl7-org:v3", type = JAXBElement.class)
protected JAXBElement<COCTMT090300UV01AssignedDevice> assignedDevice;

Когда я смотрю наObjectFactory пакета, я вижу это

private final static QName _COCTMT090303UV01AssignedDeviceAssignedDevice_QNAME = new QName("urn:hl7-org:v3", "assignedDevice");

Все мои 17 ошибок похожи.Что я могу сделать во время моего codegen или выполнения, чтобы заставить мой сервис работать?

Ответы [ 3 ]

3 голосов
/ 01 июня 2011

Какую версию Java вы используете во время выполнения?У меня была похожая проблема со схемой OTA при работе с Java 6. Я устранил проблему, внеся следующие изменения в конфигурацию Maven:

  1. Использование JAXB impl 2.1. * (Вместо 2.2) с *Область действия 1004 *, чтобы соответствовать версии JAXB, включенной в Java 6.
  2. Использование JAX-WS 2.1 (вместо 2.2) для соответствия Java 6 и JAXB 2.1.x.
  3. Добавьте параметр frontEnd в подключаемый модуль Maven cxf-codegen-plugin и установите для него значение jaxws21 (или, если в командной строке используется wsdl2java, используйте параметр "-fe jaxws21").
1 голос
/ 02 ноября 2011

Когда вы генерируете классы, вы также генерируете файл с именем jaxb.properties.Убедитесь, что этот файл доступен приложению во время выполнения.У меня была та же проблема, и это было связано с упаковкой maven: maven не будет включать в файлы ресурсов пакета (например, jaxb.properties), которые находятся ниже дерева src / main / java, если специально не указано иное.Я сделал это, используя org.codehaus.mojo: build-helper-maven-plugin с целью add-resource.Надеюсь, это поможет

0 голосов
/ 19 октября 2015

Я столкнулся с подобной ошибкой, и причина была в конфликтах между сгенерированными веб-сервисами классами-заглушками Java.

Если приведенные выше ответы не работают, попробуйте поискать конфликты.

добавляйте одну заглушку за раз и добавляйте постепенно.

надеюсь, это поможет

...