Actually the filter on the out mediator filters the requests as well as the
responses, I just need to filter the responses, I have tried with something
like this:

    <out>
        <log level="full"/>
        <filter source="get-property('Direction')" regex=".*request.*">
            <send/>
        </filter>
        <filter source="get-property('service-port')" regex=".*9000.*">
            <send/>
        </filter>
    </out>

But it still doesn't send the request for the 8080 service port through.
How do I get it to send all the requests through but only the 9000 response
?

Thank you,
Florin

2009/9/24 Ruwan Linton <[email protected]>

> Hi Florin,
>
> So, if I understand the requirement correctly you need to filter out the
> response from a specified service, right? If the requirement is to filter
> out any response, that is only look for the first response without waiting
> for the second, you could have done that with the aggregate mediator, with
> the maximum message count to complete the aggregation set to 1.
>
> If that is the former, then you need to have a content based router at the
> out path of the flow and drop the messages from the server that you want to
> filter out. See the following config assuming that you want to drop the
> response from the service running at port 8080; If it is the other way
> around you just need to change the regex in the out path filter to
> ".*8080.*"
>
>
> <in>
>       <filter source="get-property('To')" regex=".*/Event.*">
>           <clone continueParent="true">
>               <target>
>                    <sequence>
>                      <property action="set" name="service-port"
> value="8080"/>
>                   </sequence>
>                    <endpoint>
>                       <address uri="
> http://192.168.239.1:8080/EventService/services/Event"/>
>                   </endpoint>
>               </target>
>           </clone>
>            <property action="set" name="service-port" value="9000"/>
>            <send>
>               <endpoint>
>                   <address uri="http://192.168.239.128:9000/services/Event
> "/>
>               </endpoint>
>           </send>
>           <drop/>
>       </filter>
>   </in>
>   <out>
>        <filter source="get-property('service-port')" regex=".*9000.*">
>         <send/>
>       </filter>
>   </out>
>
> Hope this helps...
>
> Thanks,
> Ruwan
>
> On Wed, Sep 23, 2009 at 7:18 PM, Florin Bejinaru
> <[email protected]>wrote:
>
> > At the moment I am using the following synapse.xml configuration file to
> > send a WS request to 2 different service implementations (that is a
> > requirement so it can't be changed):
> >
> >    <in>
> >        <filter source="get-property('To')" regex=".*/Event.*">
> >            <clone continueParent="true">
> >                <target>
> >                    <endpoint>
> >                        <address uri="
> > http://192.168.239.1:8080/EventService/services/Event"/>
> >                    </endpoint>
> >                </target>
> >            </clone>
> >            <send>
> >                <endpoint>
> >                    <address uri="
> > http://192.168.239.128:9000/services/Event
> > "/>
> >                </endpoint>
> >            </send>
> >            <drop/>
> >        </filter>
> >    </in>
> >    <out>
> >        <send/>
> >    </out>
> >
> >
> > The problem is that both of those return a response and I was wondering
> if
> > I
> > could use synapse to filter out the response from a particular response
> > source, or do I need to rewrite one of those services to not return a
> > response (which I'm guessing is a bit tricky since Axis2 might be
> inclined
> > to use a InOutMessageReceiver based on the service's WSDL.)
> >
> > Which would be a decent and simple solution to my problem ?
> >
> > Thank you,
> > Florin
> >
>
>
>
> --
> Ruwan Linton
> Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb
> WSO2 <http://wso2.org/esb%0AWSO2> Inc.; http://wso2.org
> email: [email protected]; cell: +94 77 341 3097
> blog: http://ruwansblog.blogspot.com
>

Reply via email to