Hi,
I have managed to deploy a simple camel component in service mix. I am now having problems with the routing slip pattern.

Structure:

A JMS BC receives the JMS message. This is then forwarded to the camel endpoint which routs it to various JSR181 endpoints specified in the routing slip header. Now, I have no problem hitting the first endpoint. The problem starts when the output of the first endpoint is not compatible with the input needed by the second endpoint.

So  *Question#1* - How do I control the output of the first endpoint?

Also, in my search to solve question#1- I did this to my fist JSR181 endpoint:

WebService(serviceName = "ExampleJSRService123", targetNamespace = "http://example.com/exampleServiceJSR123";)
public class ExampleService {

   @WebMethod
   public void sayHello(DefaultMessage defaultMessage) {
System.out.println("ExampleJSRService123 says hello! "+ defaultMessage);
       System.out.println(defaultMessage.getBody());
// return "<sayHello><name>hai</name></sayHello>";
   }

Maven builds this just fine, but servicemix says the following when I deploy it:


<component-task-result xmlns="http://java.sun.com/xml/ns/jbi/management-message";
>
       <component-name>servicemix-jsr181</component-name>
       <component-task-result-details>
               <task-result-details>
                       <task-id>deploy</task-id>
                       <task-result>FAILED</task-result>
                       <message-type>ERROR</message-type>
                       <task-status-msg>
<msg-loc-info>
<loc-token/>
<loc-message>Unable to find suitable deployer for Service Unit 'CamelJSRSU'</loc
-message>
</msg-loc-info>
</task-status-msg>
               </task-result-details>
       </component-task-result-details>
</component-task-result>
</jbi-task-result>
</jbi-task>

I read on previous posts that the camel component needs a camel-context and not an xbean so I tried the following combinations in the SU:

  1. Only xbean
  2. Xbean and camel context
  3. only camel context initializing the endpoints like:

!-- START SNIPPET: camel -->
<beans xmlns="http://www.springframework.org/schema/beans";
   xmlns:jsr181="http://servicemix.apache.org/jsr181/1.0";
   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-2.0.xsd http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd
   ">

   <!--
       from("seda:a").to("seda:b");
   -->
   <camelContext id="camel"
       xmlns="http://activemq.apache.org/camel/schema/spring";>
       <package>org.CamelJSRSU</package>


   </camelContext>
   <jsr181:endpoint pojoClass="org.CamelJSRSU.ExampleService" />
   <jsr181:endpoint pojoClass="org.CamelJSRSU.ExampleService2" />
</beans>

My hunch is that a camel-context is not needed here, but thought I should try it out before I post it here.

*Question#2: *How do I correctly deploy this component (xbean? camel-context? anything else?)

Thanks.
Sylvester






Reply via email to