Apache Camel и CXF: несколько тегов cxf:rsServer ... возможно ли это?

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

У меня есть несколько классов, представленных как службы отдыха и сопоставленные с разными путями. Сначала в моей конфигурации был только cxf, и я мог одновременно выставлять все классы как сервисы. Теперь, когда я также использую верблюда, у меня есть такие теги:

    <camelcxf:rsServer id="rsServer1" address="/"
            serviceClass="com.something.PoiSearchImpl">
        </camelcxf:rsServer>
 <camelcxf:rsServer id="rsServer2" address="/"
            serviceClass="com.something.FooBarImpl">
        </camelcxf:rsServer>

После этого у меня есть два маршрута, которые начинаются с моих конечных точек cxf (описанных выше) и выполняют некоторую обработку. Проблема в том, что работает только одна служба, а другая просто не вызывается. выдает ошибку 404 не найдено. это нормально или я что-то упустил в настройках?


person Sikorski    schedule 04.05.2012    source источник


Ответы (1)


Hi Sikorski,
Camel supports multiple cxf:rsServer. The problem with your approach is that both are mapped to an address '/'. This means that one of the servers is invoked. 

Решение: вам нужно иметь уникальный адрес для каждого rsServer, как показано ниже,

<camelcxf:rsServer id="rsServer1" address="/Bar" serviceClass="com.something.PoiSearchImpl">
</camelcxf:rsServer>
<camelcxf:rsServer id="rsServer2" address="/Foo" serviceClass="com.something.FooBarImpl">
</camelcxf:rsServer>
person Rohit Sitani    schedule 26.09.2013
comment
ну поздно мне об этом говорить, и я в конце концов понял это. Теперь я делаю это по-другому, и это уже в производстве. Что касается вашей проблемы с линией с вашим подходом, я бы скорее сказал, что проблема была в моем подходе в целом: D - person Sikorski; 26.09.2013