Мы пытаемся с помощью ServiceA вызвать ServiceB, как только пакет загружается во время запуска SericeMix. Service2, имеющий конечные точки activemq, нам нужно вызвать метод этой конкретной службы. Я попытался с помощью весеннего атрибута init-method в теге bean, который помогает автоматически вызывать метод в ServiceA в том методе, который я вызываю методом serviceB. Я получаю Исключение, как Нет Потребителя, доступного для конечной точки. Я предполагаю, что, как только Service1 запущен, он не получает экземпляр service2, который должен быть инициализирован с использованием конечной точки аннотации @Produce activemq. Те же сервисы работают нормально в других нормальных сценариях.
Исключение:
Вызвано: org.apache.camel.CamelExchangeException: нет потребителей, доступных на конечной точке: конечная точка [direct: // ServiceB]. Exchange [сообщение: общедоступный BeanInvocation java.lang.String java.lang.Object.toString () со значением NULL]]
в org.apache.camel.component.direct.DirectProducer.process (DirectProducer.java:46)
в org.apache.camel.component.bean.CamelInvocationHandler.invoke (CamelInvocationHandler.java:64)
... еще 35
Я копирую кодовый блок для вашей справки.
public class ServiceA{
@Produce(uri = "direct:ServiceB") //Active MQ endpoint
private ServiceB serviceB;
public void start()
{
Object obj = serviceB.getData(); }
. . .
.....
}
}
bundle-context.xml
//Changes for method to auto trigger during spring bean load
<bean id="serviceA" class="com.test.serviceA" init-method="start">
</bean>
bundle-context-camel.xml
<osgi:camelContext id="ServiceA"
xmlns="http://camel.apache.org/schema/spring">
<template id="producerTemplate" />
<!-- These routes are outbound to other services -->
<route>
<from uri="ServiceB" />
<bean ref="enrichOutboundExchangeRef" />
<to uri="activemq:ServiceB?transferException=true" />
</route>
..............
</osgi:camelContext>
Или это какой-то другой способ, если мне нужно выполнить это требование? где я могу загрузить службу (использует другие службы) автоматически во время загрузки servicemix.
Спасибо
Ravi