Как добавить пользовательский параметр в компонент веб-службы Camel's Spring - PullRequest
0 голосов
/ 08 июля 2019

Мое приложение использует версии 2.19.0 camel-core и camel-spring-ws. Мне нужно отправить ответное сообщение в службу Клиента с помощью Camel SpringWebserviceComponent.

Это все довольно стандартно, кроме URL клиента, в конце он содержит параметр без значения, например https://client -service.com / путь / index.php? Протокол + web_service

Я никогда раньше не видел такой URL, но клиент заявляет, что параметр в конце (после знака вопроса и без значения) сопоставляется с контроллером в их приложении.

Когда я пытаюсь вставить это в свое приложение, я получаю исключение org.apache.camel.ResolveEndpointFailedException.

Я просмотрел исходный код SpringWebserviceComponent и строку 129 org.apache.camel.impl.DefaultComponent (который расширяет SpringWebServiceComponent) проверяет параметры URL-адреса и выдает исключение ResolveEndpointFailedException, если какой-либо из параметров не является допустимым параметром для компонента веб-службы Spring, как указано здесь: https://camel.apache.org/spring-web-services.html. Конечно, протокол + web_service не является допустимым параметром для SpringWebserviceComponent, поэтому возникает исключение.

Эта проверка выполняется только в том случае, если метод isWenientProperties () SpringWebServiceEndpoint возвращает значение false, что жестко закодировано.

Кто-нибудь может предложить какие-либо другие способы заставить SpringWebServiceComponent принимать этот URL, включая его нестандартный параметр?

1 Ответ

0 голосов
/ 08 июля 2019

Извините, это не поддерживается "из коробки", вы можете попытаться расширить компонент spring-ws и переопределить некоторые методы, которые настраивают конечную точку и еще много чего, а затем добавить свой хак для этого "недействительного" URL, который ваш клиентиспользует.

...