Я относительно новичок в Apache Camel в целом, но понимаю его концепции и смог найти свой путь.Я внедряю веб-сервис для использования внешней системой, и мне был предоставлен формат запроса / ответа для работы.Проблема, с которой я сейчас сталкиваюсь, заключается в том, что корневой элемент ответа SOAP соответствует спецификации, с которой я работаю, потому что Camel добавляет дополнительный текст к имени корневого элемента.
Ожидается, что я верну тело ответаэто выглядит как:
<ActionResponse>
<ValueOne>000001100913103301000000000001</ValueOne>
<ValueTwo>000002</ValueTwo>
</ActionResponse>
из тела запроса, которое выглядит как:
<ActionRequest>
<ValueOne>000001100913103301000000000001</ValueOne>
<ValueTwo>000002</ValueTwo>
</ActionRequest>
, но в настоящее время я могу вернуть тело ответа, которое выглядит как:
<ActionRequestResponse>
<ValueOne>000001100913103301000000000001</ValueOne>
<ValueTwo>000002</ValueTwo>
</ActionRequestResponse>
Я пробовал разные предложения на StackOverflow, Github и других сайтах в Интернете без положительного разрешения.Наиболее многообещающее решение - установить для аннотации SOAPBinding пустое значение:
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
в определении интерфейса, а также добавить javax.jsw
к зависимостям pom.xml
.
Выполнение этого успешно добавляет зависимость maven, которую я вижу в списке установленных зависимостей, но выдает [ERROR] Bundle com.kudimoney:kudimoney.inbound-nip-service:bundle:1.0.0 : Unresolved references to [javax.jws.soap] by class(es) on the Bundle-Classpath[Jar:dot]: [com/kudimoney/soap/NIPInterface.class]
ошибку времени компиляции.Со вчерашнего дня я пытался решить эту проблему безуспешно.
Если я добавлю javax.jms.soap
к <Import-Package>
, проект будет успешно собран, но не сможет запуститься в Apache Karaf с исключением Error executing command: Error installing bundles:
Unable to start bundle file:path/name/version.jar: org.osgi.framework.BundleException: Unable to resolve app.company.name [373](R 373.0): missing requirement [app.company.name [373](R 373.0)] osgi.wiring.package; (&(osgi.wiring.package=javax.jws.soap)(version>=2.0.0)(!(version>=3.0.0))) Unresolved requirements: [[app.company.name [373](R 373.0)] osgi.wiring.package; (&(osgi.wiring.package=javax.jws.soap)(version>=2.0.0)(!(version>=3.0.0)))]
.
Есть идеи, почему это происходит?