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-заглушки.
Если выше ответы не работают, попробуйте искать конфликты.
добавить один заглушку за раз и добавить постепенно.
надеюсь, что это поможет