2017-02-11 22 views
2

В моем приложении я должен проверить авторизацию входящего сообщения, вызвав webservice.e.g, если пользователь принадлежит к авторизованной группе, а затем обрабатывает сообщение только. Для этого мне нужно создать authorizationRequest из одного из свойств входящего сообщения, скажем userId (не всего входящего сообщения) и отправить в webservice.
Я новичок в верблюде. Чтобы достичь этого в приложении, отличном от верблюда, я бы создал клиент webservice, совершил вызов с userId (param) и обработал ответ. Main Camel маршрут:Вызов springWs для проверки сообщения от Camel

from(<URI>).routeId("UpdateRoute") 
       .process("AuthorizationProcessor") 
       .process("ValidateProcessor") 
       .choice() 
       .when(matches(cond1)).to("cond1Processor") 
       .when(matches(cond2)).to("cond2UpdateProcessor") 
       .otherwise().to("invalidconditionProcessor"); 

    } 

С верблюдом, я звоню пользовательский процессор AuthorizationProcessor и сделать WebService вызов, как я могу сделать в не верблюд применения. Я не правильно использую верблюд.
Каким должен быть способ вызова веб-службы.

Я пробовал создать маршрут AuthorizationRoute и я могу использовать компонент весны ws для вызова. Но не знаю, как этот маршрут будет вызываться, и где я должен построить запрос.

+0

Какой тип веб-сервиса вы пытаетесь развернуть REST или SOAP вы используете верблюд, как автономно, так и в контейнере, как Apache-karaf – noMad17

+0

Я хочу, чтобы построить и отправить SOAP-сообщение?? к webservice.Я бегу Camel в Undertow. имеют свойство, установленное в Exchange, говорят userId. Теперь мне нужно вызвать webservice для операции validateUserId, ожидая UserId в запросе мыла. –

ответ

0

Camel имеет пару компонентов, способных совершать вызовы веб-службы (REST или SOAP). Одним из наиболее популярных из них является camel-cxf, который (как вы уже догадались, использует Apache CXF, чтобы сделать WS вызовы

Существует множество вариантов, доступных, но это сводится к тому, в том числе:.

<dependency> 
    <groupId>org.apache.camel</groupId> 
    <artifactId>camel-cxf</artifactId> 
    <version>x.x.x</version> 
    <!-- use the same version as your Camel core version --> 
</dependency> 

И то в вашем маршруте:

from(<URI>).routeId("UpdateRoute") 
    .to("cxf:http://address/service?serviceClass=com.MyClass") 
    .process("ValidateProcessor") // process the resoponse here 
    .choice() 
    .when(matches(cond1)).to("cond1Processor") 
    .when(matches(cond2)).to("cond2UpdateProcessor") 
    .otherwise().to("invalidconditionProcessor"); 
+0

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

Смежные вопросы