Добавление внешних классов xsd в интерфейс конечной точки службы, сгенерированный Apache cxf - PullRequest
0 голосов
/ 03 октября 2018

У меня есть SEI «MessageSubmitServicePortType», сгенерированный CXF из WSDL для вызова службы SOAP.

Он принимает экземпляр класса запроса, то есть «MessageSubmitRequestType», при вызове метода операции WSDL.Итак, вызов выглядит следующим образом:

endPointObject.submitMessage(requestTypeObject);

Внутри класса запроса поле с Anytype в WSDL генерируется как атрибут объекта в Java.

Я устанавливаю экземпляркласса, сгенерированного из внешнего xsd в указанном выше атрибуте типа объекта.

Итак, вкратце,

requestTypeObject.setAnytype(JAXBElelment<ExternalXSD.someclass>)

Этот JAXBElement создан с использованием класса ObjectFatory, сгенерированного из внешнего XSD.

Однако при выполнении я получаю javax.xml.bind.JAXBException externalxsd.someclass is not known in this context ошибка.

Я знаю, что это можно исправить, добавив @XMLSeeAlso к классу конечной точки, но я не хочу этого делать, так как эти классы создаются во время выполнения.

Я также попытался добавить аннотацию с помощью файла binding.xjb, но, похоже, он не добавляет указанный класс в существующую аннотацию.Я мог бы положить сюда свои файлы pom.xml и .xjb, если бы это помогло.

Есть идеи, как этого достичь?

1 Ответ

0 голосов
/ 08 октября 2018

Единственным решением было загрузить и изменить файл wsdl для моего использования.Я просто импортировал внешний xsd с помощью тега, и это решило проблему.

...