JAXB, CXF: Нет ObjectFactory с элементом @XmlElementDecl для элемента... с

Я создаю первый веб-сервис 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 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 и смотрю на поле назначенноеDevice, я вижу это

@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 ошибок похожи. Что я могу сделать во время моего кода или времени выполнения, чтобы получить работу?

Ответ 1

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

  • Используйте JAXB impl 2.1. * (вместо 2.2) с областью provided, чтобы соответствовать версии JAXB, включенной в Java 6.
  • Используйте JAX-WS 2.1 (вместо 2.2) для соответствия Java 6 и JAXB 2.1.x.
  • Добавьте параметр frontEnd к плагину Maven cxf-codegen-plugin и установите его в jaxws21 (или, используя wsdl2java в командной строке, используйте опцию <-fe jaxws21).

Ответ 2

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

Ответ 3

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

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

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

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