Hi,
I'm trying to invoke a RMI service with Camel.
This RMI service is exported with Spring RmiServiceExporter.
But I have a type conversion problem with Camel.
It says :
Caused by: org.apache.camel.InvalidPayloadException: No body available of
type: org.springframework.remoting.support.RemoteInvocation but has value:
Hello Camel-RMI !!! of type: java.lang.String on: Message: Hello Camel-RMI
!!!. Caused by: No type converter available to convert from type:
java.lang.String to the required type:
org.springframework.remoting.support.RemoteInvocation with value Hello
Camel-RMI !!!. Exchange[Message: Hello Camel-RMI !!!]. Caused by:
[org.apache.camel.NoTypeConversionAvailableException - No type converter
available to convert from type: java.lang.String to the required type:
org.springframework.remoting.support.RemoteInvocation with value Hello
Camel-RMI !!!]
at
org.apache.camel.impl.MessageSupport.getMandatoryBody(MessageSupport.java:102)
at
org.apache.camel.builder.ExpressionBuilder$31.evaluate(ExpressionBuilder.java:798)
... 50 more
Caused by: org.apache.camel.NoTypeConversionAvailableException: No type
converter available to convert from type: java.lang.String to the required
type: org.springframework.remoting.support.RemoteInvocation with value Hello
Camel-RMI !!!
at
org.apache.camel.impl.converter.BaseTypeConverterRegistry.mandatoryConvertTo(BaseTypeConverterRegistry.java:143)
at
org.apache.camel.impl.MessageSupport.getMandatoryBody(MessageSupport.java:100)
... 51 more
Here's my Spring/Camel configuration :
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring-2.6.0.xsd">
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:start"/>
<to uri="rmi://localhost:1099/logService"/>
</route>
</camelContext>
<!-- This class outputs the String passed as argument to stdout -->
<bean id="logService" class="be.drunkcoders.camel.SimpleLogService"/>
<bean class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="serviceName" value="logService"/>
<property name="serviceInterface"
value="be.drunkcoders.camel.LogService"/>
<property name="service" ref="logService"/>
</bean>
</beans>
And here's the main class :
public class Main {
public static void main(String[] args) throws Exception {
AbstractXmlApplicationContext springCtx = new
ClassPathXmlApplicationContext("META-INF/spring/camel-context.xml");
springCtx.start();
CamelContext camelCtx = springCtx.getBean(CamelContext.class);
camelCtx.start();
ProducerTemplate template = camelCtx.createProducerTemplate();
template.sendBody("direct:start", "Hello Camel-RMI !!!");
camelCtx.stop();
springCtx.stop();
}
}
On the other side, if I use a Spring RMI client (made with
RmiProxyFactoryBean) it works well, but then I don't use camel-rmi component
at all, of course.
Am I doing something wrong ?
Regards.
PS : it seems I cannot post directly from email to the mailing-list. Each
time I try the mail seems to get stuck somewhere (maybe blocked ?) but I
don't get any errors.
Can someone please tell me if I'm not blocked, for whatever reason, on this
mailing-list ?
Thanks.
--
View this message in context:
http://camel.465427.n5.nabble.com/RMI-Component-tp3389123p3389123.html
Sent from the Camel - Users mailing list archive at Nabble.com.