Я пытаюсь настроить многоадресный маршрут, который получает HTTP POST и отправляет его нескольким экземплярам службы.
Из чтения документации и игры с camel-example-servlet-tomcat,похоже, все должно быть просто, но я застрял.Этот вопрос был полезен, но я все еще застрял.
Вот мой web.xml для настройки верблюжьего сервлета:
<web-app...>
<!-- location of spring xml files -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<!-- Camel servlet -->
<servlet>
<servlet-name>MulticastServlet</servlet-name>
<servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Camel servlet mapping -->
<servlet-mapping>
<servlet-name>MulticastServlet</servlet-name>
<url-pattern>/send/*</url-pattern>
</servlet-mapping>
<!-- the listener that kick-starts Spring -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>WEB-INF/index.xhtml</welcome-file>
</welcome-file-list>
</web-app>
Вот мой верблюжий контекст и маршрут:
<camelContext trace="true" id="multicastCtx"
xmlns="http://camel.apache.org/schema/spring">
<route id="multicastRoute">
<from uri="servlet:///license"/>
<multicast stopOnException="false">
<to uri="http://192.168.22.95:8135/transform-service/send/license"/>
<to uri="http://10.50.1.58:9080/send/license"/>
</multicast>
</route>
</camelContext>
Служба ожидает данные в параметрах запроса.я могу опубликовать напрямую в оба URI конечной точки с помощью инструмента http (плагин «Плакат» для Firefox).
Однако, когда я публикую в этом веб-приложении (запущенном в Jetty), на URI "http://localhost:8080/send/license" я получаю ошибку 404. В журнале отладки Jetty я вижу «DEBUG [CamelHttpTransportServlet.service]: нет запроса от потребителя на обслуживание [POST / send / license]»
Я попытался упростить маршрут для поисканапример:
Чтобы упростить маршрут, я отбросил компонент многоадресной рассылки, поэтому он выглядит так:
<route id="myRoute" streamCache="true">
<from uri="servlet:///license"/>
<to uri="http://192.168.22.95:8135/transform-service/send/license"/>
</route>
, но я получаю ту же ошибку. Используя <from uri="servlet:///0.0.0.0:8080/send/license"/>
, я получаюта же ошибка.
Я что-то упускаю при настройке URI для сервлета Camel?