Happy Happy Joy ! It works perfectly, thanks a LOT :)

The working example follows:

HTTPClient.java:
public class HttpClient {

    public static void main(String[] args) throws Exception {
        .........
        // Post the request file.
        InputStream fis = new ByteArrayInputStream("<quote
company=\"BORL\" />".getBytes());
        ....
        }
}

servicemix.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xbean.org/schemas/spring/1.0";
        xmlns:spring="http://xbean.org/schemas/spring/1.0";
        xmlns:sm="http://servicemix.org/config/1.0";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xsi:schemaLocation="http://xbean.org/schemas/spring/1.0 spring-beans.xsd
                            http://servicemix.org/config/1.0 servicemix.xsd"
    xmlns:foo="http://servicemix.org/demo/";>

  <!-- the JBI container -->
  <sm:container spring:id="jbi"
                useMBeanServer="true"
                createMBeanServer="true"
                dumpStats="true"
                statsInterval="10">
                
        <sm:activationSpecs>
        
                <!-- Create a http server binding on port 8912  and have it 
forward
to the foo:stockQuote -->
                <sm:activationSpec componentName="httpReceiver"         
                                                   service="foo:httpBinding"
                                                   endpoint="httpReceiver"
                                                   
destinationService="foo:chain">
                  <sm:component>
                    <bean xmlns="http://xbean.org/schemas/spring/1.0";
                          class="org.servicemix.components.http.HttpConnector">
                        <property name="host" value="localhost"/>
                        <property name="port" value="8912"/>
                    </bean>
                  </sm:component>
                </sm:activationSpec>
        
                <!-- Service Chain -->
                <sm:activationSpec componentName="chain" service="foo:chain"
                        destinationService="foo:receiver">
                        <sm:component>
                                <bean 
xmlns="http://xbean.org/schemas/spring/1.0";
                                        
class="org.servicemix.components.util.ChainedComponent">
                                        <property name="services">
                                                <list>
                                                        <bean
                                                                
class="javax.xml.namespace.QName">
                                                                <constructor-arg
                                                                        
value="http://servicemix.org/demo/"; />
                                                                <constructor-arg
                                                                        
value="myServiceUsingXMLText" />
                                                        </bean>

                                                        <bean
                                                                
class="javax.xml.namespace.QName">
                                                                <constructor-arg
                                                                        
value="http://servicemix.org/demo/"; />
                                                                <constructor-arg
                                                                        
value="stockQuote" />
                                                        </bean>

                                                </list>
                                        </property>
                                </bean>
                        </sm:component>
                </sm:activationSpec>


      <!-- START SNIPPET: xmlText -->
      <sm:activationSpec
           componentName="myServiceUsingXMLText"
           service="foo:myServiceUsingXMLText">
        <sm:component>
          <bean class="org.servicemix.components.groovy.GroovyComponent">
            <property name="scriptText">
              <value>
                <![CDATA[
outMessage.bodyText = """
<ns1:getQuote xmlns:ns1="urn:xmethods-delayed-quotes"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance";
xmlns:se="http://schemas.xmlsoap.org/soap/envelope/";
se:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";>
  <symbol xsi:type="xsd:string">
    ${inMessage.content.node.firstChild.getAttribute('company')}
  </symbol>
</ns1:getQuote>
""" ]]>


                            </value>
            </property>
          </bean>
        </sm:component>
      </sm:activationSpec>
      <!-- END SNIPPET: xmlText -->


                <!-- This just invokes another service -->
                <sm:activationSpec componentName="stockQuote"   
                                                   service="foo:stockQuote"
                                                   endpoint="stockQuote">
                  <sm:component>
                    <bean xmlns="http://xbean.org/schemas/spring/1.0";
                          class="org.servicemix.components.saaj.SaajBinding">
                        <property name="soapEndpoint">
                                <bean class="javax.xml.messaging.URLEndpoint">
                                        <constructor-arg 
value="http://64.124.140.30/soap"/>
                                </bean>
                        </property>
                    </bean>
                  </sm:component>
                </sm:activationSpec>
                
        </sm:activationSpecs>
  </sm:container>

</beans>



On 12/8/05, Guillaume Nodet <[EMAIL PROTECTED]> wrote:
> Take a look at
> http://svn.servicemix.codehaus.org/trunk/servicemix-core/src/test/resources/org/servicemix/components/util/chained-router.xml?rev=1042&view=auto
>
> The org.servicemix.components.util.ChainedComponent does the same job as the
> groovy script, but in a much simplier way.
>
> Guillaume
>
>
> Julio Faerman wrote:
>
> >Thanks Angel,
> >
> >The proposed solution is to script routing using groovy, as shown in
> >
> >http://svn.servicemix.codehaus.org/trunk/components/base/src/test/resources/org/servicemix/components/groovy/groovy-chain.xml?rev=693&view=auto
> >
> >Thou i think it is a bit complex way to do simple services chaining.
> >I am having a hard time understanding routing.
> >
> >- Is there any source of information on routing more complete than the
> >wiki and more understandable than the source code ?
> >
> >- What the destinationService attribute means, if not service chaining ?
> >
> >- Is there a simpler way to do service chaining ?
> >
> >Best regards,
> >Julio
> >
> >On 12/8/05, Angel Gomez <[EMAIL PROTECTED]> wrote:
> >
> >
> >> Well, as JB pointed out in another thread ( userlist, mail archives,
> >>200510, XSQL Component ), The HTTPComponent is an inout binding, and invokes
> >>and returns the next service in the chain. Since you are wanting to go one
> >>component past this chain, it will never reach it.
> >>
> >> Regards.
> >>
> >>
> >>On 12/7/05, Julio Faerman <[EMAIL PROTECTED]> wrote:
> >>
> >>
> >>>Hello,
> >>>
> >>>I have a question about ServiceMix Routing.
> >>>
> >>>I am trying to alter the http binding exampe so that instead of doing:
> >>>
> >>>  HTTPClient -> httpReceiver -> stockQuote
> >>>
> >>>I want it to do:
> >>>
> >>>  HTTPClient -> myServiceUsingXMLText -> httpReceiver -> stockQuote
> >>>
> >>>where "myServiceUsingXMLText" builds the request instead of reading
> >>>the request.xml file.
> >>>
> >>>My attempt was:
> >>>
> >>>Change routing using destinationService attributes on tags.
> >>>
> >>>The problem is:
> >>>
> >>>the client receives the answer from myServiceUsingXMLText (which is the
> >>>
> >>>
> >>request)
> >>
> >>
> >>>instead of getting the stock quote.
> >>>
> >>>
> >>>What was my mistake ?
> >>>
> >>>
> >>>Thanks a lot,
> >>>Julio Faerman
> >>>
> >>>relevant source code ( ... means equals to original http binding example)
> >>>------------------
> >>>HTTPClient :
> >>>main(){
> >>>..
> >>>InputStream fis = new
> >>>
> >>>
> >>ByteArrayInputStream("".getBytes()); //sends empty request
> >>
> >>
> >>>..
> >>>}
> >>>:
> >>>
> >>>servicemix.xml
> >>><?xml version="1.0" encoding="UTF-8"?>
> >>><beans...>
> >>>  <!-- the JBI container -->
> >>>  <sm:container spring:id="jbi" ...>
> >>>    <sm:activationSpecs>
> >>>      <!-- Create a http server binding on port 8912  and have it
> >>>forward to the foo:stockQuote -->
> >>>      <sm:activationSpec componentName="httpReceiver" ...
> >>>destinationService="foo:myServiceUsingXMLText">
> >>>        ...
> >>>      </sm:activationSpec>
> >>>
> >>>      <!-- START SNIPPET: xmlText -->
> >>>      <sm:activationSpec
> >>>
> >>>
> >>componentName="myServiceUsingXMLText"
> >>
> >>
> >>service="foo:myServiceUsingXMLText"
> >>
> >>
> >>destinationService="foo:stockQuote">
> >>
> >>
> >>>        <sm:component>
> >>>          <bean
> >>>
> >>>
> >>class="org.servicemix.components.groovy.GroovyComponent">
> >>
> >>
> >>>            <property name="scriptText">
> >>>              <value>
> >>>                <![CDATA[
> >>>outMessage.bodyText = """
> >>><ns1:getQuote xmlns:ns1="urn:xmethods-delayed-quotes"
> >>>xmlns:xsi=" http://www.w3.org/1999/XMLSchema-instance";
> >>>xmlns:se="http://schemas.xmlsoap.org/soap/envelope/";
> >>>se:encodingStyle="
> >>>
> >>>
> >>http://schemas.xmlsoap.org/soap/encoding/";>
> >>
> >>
> >>>  <symbol xsi:type="xsd:string">SUNW</symbol>
> >>>
> >>></ns1:getQuote>
> >>>""" ]]>
> >>>                            </value>
> >>>            </property>
> >>>          </bean>
> >>>        </sm:component>
> >>>      </sm:activationSpec>
> >>>      <!-- END SNIPPET: xmlText -->
> >>>
> >>>      <!-- This just invokes another service -->
> >>>      <sm:activationSpec componentName="stockQuote"
> >>>          service="foo:stockQuote"
> >>>          endpoint="stockQuote">
> >>>        <sm:component>
> >>>          <bean xmlns="
> >>>
> >>>
> >>http://xbean.org/schemas/spring/1.0";
> >>
> >>
> >>class="org.servicemix.components.saaj.SaajBinding">
> >>
> >>
> >>>            <property name="soapEndpoint">
> >>>              <bean class="javax.xml.messaging.URLEndpoint">
> >>>                <constructor-arg
> >>>
> >>>
> >>value="http://64.124.140.30/soap"/>
> >>
> >>
> >>>              </bean>
> >>>            </property>
> >>>          </bean>
> >>>        </sm:component>
> >>>      </sm:activationSpec>
> >>>    </sm:activationSpecs>
> >>>  </sm:container>
> >>></beans>
> >>>
> >>>
> >>>
> >>
> >>
> >
> >
> >
> >
>
>

Reply via email to