Я получаю это исключение, когда пытаюсь вызвать веб-сервис .NET:
javax.xml.bind.JAXBException: class com.pixelware.mdv.tramites.TramiteXML nor any of its super class is known to this context.
Клиент - это библиотека Java, созданная с использованием внешнего интерфейса CFX JAX-WS (классы, предварительно созданные с помощью WSDL)
Метод, который я пытаюсь вызвать, принимает (вложенный в другой объект) объект (anyType в WSDL)
Похоже, движок JAXB внутри CXF не может маршалировать (сериализовать в XML) мой класс,Это потому, что JAXB не может сериализовать класс, если он не зарегистрирован в своем контексте, а передаваемый класс является частью основной программы, а не клиентской библиотеки.
Документация CXF показывает множество параметров конфигурации,и, похоже, это можно сделать, добавив свойство AdditionalContextClasses к свойствам службы.Я не могу добавить это свойство по конфигурации, потому что мой клиент - это отдельная библиотека с классами, сгенерированными CFX.
Я попытался добавить свойство программно с помощью этого кода:
Map<String, Object> ctx = (BindingProvider)ws.getWSSoap()).getRequestContext();
ctx.put("jaxb.additionalContextClasses", new Class[] {TramiteXML.class});
Но этоне работаетПохоже, что эта конфигурация должна быть сделана до создания клиента.
Я также нашел эту запись , с той же (или очень похожей) проблемой, и предлагаемые решения далекоот простого.
Разве это не должно быть намного проще?Может быть, я что-то упустил.Есть предложения?