OSB Dynamic Routing Downstream Error Handling.

Hi
I've written several services which implement dynamic routing proxys which route to other proxys who then talk to business services.
My problem is that when the downstream service encounters an error the router seems to throw away that error message and replace it with BEA-380000.
I've read several posts here and there about this and was wondering if there's a best practice way of dealing with this.
Thanks,
Nick

Hi
I've written several services which implement dynamic routing proxys which route to other proxys who then talk to business services.
My problem is that when the downstream service encounters an error the router seems to throw away that error message and replace it with BEA-380000.
I've read several posts here and there about this and was wondering if there's a best practice way of dealing with this.
Thanks,
Nick

Similar Messages

  • OSB Dynamic Routing and Transaction Rollback

    Hi,
    I have implemented dynamic routing to different jms business services.
    That's the flow:
    1. I have a proxy service which is invoked via a message delivered to a jms queue(XA connection factory), this queue is configured with
    Error Destination, expiration policy redirect, redelivery limit 5 and redelivery delay override 100
    2. I use a dynamic routing action
    <ctx:route isProxy="false">
    <ctx:service>
    $businessServiceXXX
    </ctx:service>
    </ctx:route>
    where $businessServiceXXX is a variable to hold my target jms business service, its value depends on some incoming inbound headers.
    3. if the endpoint is not correct(business service endpoint is dynamic) I catch the error in a Error handler, I raise an Error but :
    THE MESSAGE IS NOT REDIRECTED TO THE ERROR QUEUE.
    I know I could solve the issue with another approach like an external table to capture(fix) the endpoints, but it won't be so flexible in terms of deployment capability.
    Any Ideas ?
    Thanks,
    T.

    Hi Tony,
    Tested this in ALSB 2.5 . Transaction rollbacks fine when error in dynamic routing. I am attaching the test JMS proxy we have used for this.
    We had XA enabled CF for JMS proxy service and target JMS BS. The dynamic route was configured in route node with no route error handler or service error handler. The test case was to pause the target JMS queue for production. We could see messages rolling back to the source queue and getting redelivered.
    Attaching the Sbconfig for this proxy. Proxy Name: Dynamic Routing
    <?xml version="1.0" encoding="UTF-8"?>
    <xml-fragment name="DynamicRouting">
    <ser:coreEntry isEnabled="true" isProxy="true" name="DynamicRouting" isAutoPublish="false" xmlns:ser="http://www.bea.com/wli/sb/services">
    <ser:description/>
    <ser:binding type="abstract XML"/>
    </ser:coreEntry>
    <ser:endpointConfig xmlns:ser="http://www.bea.com/wli/sb/services">
    <tran:provider-id xmlns:tran="http://www.bea.com/wli/sb/transports">jms</tran:provider-id>
    <tran:inbound xmlns:tran="http://www.bea.com/wli/sb/transports">true</tran:inbound>
    <tran:URI xmlns:tran="http://www.bea.com/wli/sb/transports">
    <env:value xmlns:env="http://www.bea.com/wli/config/env">jms://localhost:7001/XACF/InputQueue</env:value>
    </tran:URI>
    <tran:inbound-properties xmlns:tran="http://www.bea.com/wli/sb/transports"/>
    <tran:all-headers xmlns:tran="http://www.bea.com/wli/sb/transports">false</tran:all-headers>
    <tran:provider-specific xsi:type="jms:JmsEndPointConfiguration" xmlns:jms="http://www.bea.com/wli/sb/transports/jms" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <jms:is-queue>true</jms:is-queue>
    <jms:is-secure>false</jms:is-secure>
    <jms:inbound-properties>
    <jms:response-required>false</jms:response-required>
    </jms:inbound-properties>
    <jms:request-encoding>UTF-8</jms:request-encoding>
    </tran:provider-specific>
    </ser:endpointConfig>
    <ser:router xmlns:ser="http://www.bea.com/wli/sb/services">
    <con:pipeline name="PipelinePairNode1_request" type="request" xmlns:con="http://www.bea.com/wli/sb/pipeline/config">
    <con:stage name="Configuration">
    <con:comment/>
    <con:context/>
    <con:actions>
    <con1:assign varName="input" xmlns:con1="http://www.bea.com/wli/sb/stages/transform/config">
    <con1:expr>
    <con:xqueryText xmlns:con="http://www.bea.com/wli/sb/stages/config"><![CDATA[<root>
    <type value="jms">
              <service>DynamicRouting/BusinessService/JMS</service>
         </type>
         <type value="http">
         <service>DynamicRouting/BusinessService/HTTP</service>
         <operation>Test</operation>
         </type>
    </root>]]></con:xqueryText>
    </con1:expr>
    </con1:assign>
    </con:actions>
    </con:stage>
    </con:pipeline>
    <con:pipeline name="PipelinePairNode1_response" type="response" xmlns:con="http://www.bea.com/wli/sb/pipeline/config"/>
    <con:flow xmlns:con="http://www.bea.com/wli/sb/pipeline/config">
    <con:pipeline-node name="PipelinePairNode1">
    <con:request>PipelinePairNode1_request</con:request>
    <con:response>PipelinePairNode1_response</con:response>
    </con:pipeline-node>
    <con:route-node name="DynamicRoute">
    <con:comment/>
    <con:context/>
    <con:actions>
    <con1:dynamic-route xmlns:con1="http://www.bea.com/wli/sb/stages/routing/config">
    <con1:service>
    <con:xqueryText xmlns:con="http://www.bea.com/wli/sb/stages/config">&lt;ctx:route>
         &lt;ctx:service isProxy="false">{data($input/*:type[@value=$body/*:body/*:type/text()]/*:service)}&lt;/ctx:service>
              if($input/*:type[@value=$body/*:body/*:type/text()]/*:operation) then
                   &lt;ctx:operation>{data($input/*:type[@value=$body/*:body/*:type/text()]/*:operation)}&lt;/ctx:operation>
    else()
    &lt;/ctx:route></con:xqueryText>
    </con1:service>
    <con1:outboundTransform>
    <con2:routing-options xmlns:con2="http://www.bea.com/wli/sb/stages/transform/config">
    <con2:uriExpr>
    <con:xqueryText xmlns:con="http://www.bea.com/wli/sb/stages/config">$body/*:body/*:url/text()</con:xqueryText>
    </con2:uriExpr>
    </con2:routing-options>
    </con1:outboundTransform>
    <con1:responseTransform/>
    </con1:dynamic-route>
    </con:actions>
    </con:route-node>
    </con:flow>
    </ser:router>
    </xml-fragment>
    Regards,
    Atheek
    Edited by: atheek1 on 27-Apr-2010 19:48

  • Error in dynamic Routing in OSB

    I am doing dynamic routing in the proxy service by setting the URL in the Routing Options component in OSB. It's throwing Null Pointer Exception when I am using a URL like this:
    http://hqcsas095:8080/ShowImage/servlet/DisplayImage?dlNumber=1114
    The desination machine is even not getting a request.
    If I remove ?dlNumber=1114 from the URL, then destination machine is getting request. Looks like something is wrong with ? character in the URL but I cannot avoid that. I have to pass paramters.
    Thanks for your help.

    As Hisaak mentioned, try routing option if you want to set URI dynamically. To use the dynamic route action, you need the fully qualified name of the service in Oracle Service Bus as described in http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/modelingmessageflow.html#wp1081507
    Thanks
    Manoj

  • OSB 10gR3 Error handling and reporting action approach

    My use case:
    Simple Proxy service routes to an external web service created as Business service in OSB
    Whenever there is transport error/soap fault from the external web service, that error needs to be reported along with the original request received by the proxy service.
    What I have tried so far?
    Created a error handler/stage in the route node of my proxy service. Within that stage, added a report action to report $body which contains the error received from the external service. I created a report index key/value to report for this request, I used a specific element in the body of the original request sent to the proxy service.
    Within the route error handling stage, I realized that $body which had my original request to the proxy service lost its content and replaced by the fault from external WS. So I made a copy of $body in my request pipeline and tried to use an element from that copy to index my failed request. But the copied variable always seem to be empty within the error handling stage.
    So, my questions to the experts,
    1)What variables are visible within the error handling stage/scope?
    2)What is the best way(less overhead) to preserve my original request as $body context variable is already changed with fault by the time error handler is invoked? Remember I wanted to report the original request only incase of error, for success cases I don't care/I don't want to un-necessarily add an overhead of copying to a vairbale.
    3)Is there another proper way to simply report the original request received by proxy and fault received from external service for a given key in the request, say orderId
    Sample proxy request:
    <MyData>
    <OrderId>123</OrderId>
    </MyData>

    1)What variables are visible within the error handling stage/scope? $fault - http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/context.html#wp1051816
    $body - http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/context.html#wp1103311
    2)What is the best way(less overhead) to preserve my original request as $body context variable is already changed with fault by the time error handler is invoked? Remember I wanted to report the original request only incase of error, for success cases I don't care/I don't want to un-necessarily add an overhead of copying to a variable.Can you print $body and $fault variables in your error handler?. Are they different ? What I'm suspecting is the back-end webservice is faulting (returning soap-fault and http response =5xx). There is no other way I can think of than copying the contents of $body to a separate variable.
    Thanks
    Manoj

  • OSB Dynamic service call or dynamic route and transactions

    Hello,
    I've got the following problem in my OSB architecture for asynchronous incomming services.
    OSB version is 10.3.1
    ConnectionFactory is XA
    Problem domain:
    Dynamic service call or dynamic route within transaction boundary
    Elements within transaction:
    1.     JMS Queue ->
    2.     Upper Proxy Service (De-queue) ->
    3.     Lower Proxy Service (Canonical Service) ->
    4.     Business Service (Data Service) ->
    5.     Database Adapter->
    6.     Database
    Dynamic element
    Upper Proxy Service (De-Queue) must be able to determine which Lower Proxy Service (Canonical Service) has to be called on the basis of the message taken from the JMS Queue without losing the transaction (this doesn’t work yet).
    Already tried possible solutions:
    •     Make a service call dynamic by setting the $inbound name attribute. This results in a this property is read-only error.
    •     Use a Dynamic route instead of a service-call. This results in a loss of transaction. The message is deleted from the Queue without taking failure or success into account.
    •     Use a Dynamic route with a quality of service set to exactly once in the header. This seems to be ignored, results in a loss of transaction.
    •     Use a Dynamic route with an explicit reply with failure for errors. Results in a loss of transaction.
    •     Use a Dynamic Publish. This doesn’t fit the required flow because it has no response.
    I hope someone can shed some light on this because I'm at a total loss. I found some references in the forum to what seems to be the same problem but without definite answers. A work-around is also a viable answer.
    Regards,
    Bas Mul

    Hi,
    I'll try to clarify.
    Upper proxy dequeues a message.
    Depending on a value of a specific tag within the message a canonical proxy service (out of 5 at the moment but this numer could increase) has to be called (and be dynamic transform transformed to the format of the specific canonical).
    The canonical service must then pass the message to a database adaper's business service which is responsible for the database insert/update/read.
    If something in the chain from dequeue to database action goes wrong the message may not dissapear from the queue.
    Somehow a dynamic route in the message flow between dequeue proxy and canonical proxy breaks the transaction.
    Bas

  • Dynamic Routing in OSB 10gR3

    Hello All,
    I am trying to do a POC of our use-case and wanted to use the Dynamic Routing feature of OSB 10gR3 -
    - Create a Proxy which will accept service_id, version, operation and generic input request
    - Proxy should do lookup in the Routing Table (XQuery Resource) and based on the service_id as key will provide the service endpoint as -
    <ctx:route>
    <ctx:service isProxy="true"> {$routingtable/row[logical/text()=$body/ServiceRequest/ServiceId/text()]/physical/text()}</ctx:service>
    <ctx:operation>{$body/ServiceRequest/OperationName/text()}</ctx:operation>
    </ctx:route>
    - Proxy should also carry out the transformation from generic input request to specific as per the operation.
    - Proxy should then be able to call the other proxy services (as per endpoint in the routing table) and the specified operation.
    Questions -
    Is this possible in OSB 10gR3? What service type (WSDL, AnySOAP, AnyXML, messaging) should the generic proxy be? Any alternative to this approach.
    So far, I have used ALSB/OSB for simple use-cases and this is more complex so I am seeking information and feedback on this use-case and how to move forward with this use-case.
    Thanks,

    Thanks mneelapu.
    I started this use-case on baby-steps and I tried use the dynamic routing to call the operation on a proxy services
    Generic Proxy (using dynamic routing) -----> Proxy ---> Business <----WSDL (Target Service)
    Here are the steps in my code -
    (1) Created the Proxy ---> Business <----WSDL (Target Service) and tested using the test console.. all works fine.
    (2) Created Generic proxy (Messaging Type with xml as input) and I am passing the xml as
    <ServiceRequest>
    <ServiceId>TestWS</ServiceId>
    <OperationName>getStatus</OperationName>
    </ServiceRequest>
    (3) Created the pipeline pair and in the request pipeline added the stage and -
    - assign the Routing Table (as XQuery Resource) to the $routingtable varible
    (Routing Table XML looks like - <routing><row><logical>TestWS</logical><physical>/TestSB/TestPS_1</physical></row></routing>)
    - assign the XQuery expression
    <ctx:route>
    <ctx:service isProxy="true"> {$routingtable/row[logical/text()=$body/ServiceRequest/ServiceId]/physical/text()}</ctx:service>
    <ctx:operation>{$body/ServiceRequest/OperationName}</ctx:operation>
    </ctx:route>
    to $routeresult variable
    (4) Added the Route Node with dyanmic routing action added the $routeresult in the expression.
    I am getting BEA-382612 (Error preparing message for dispatch). I followed the steps as mentioned on e-docs, what am I missing here?
    -J
    Thanks,

  • OSB 11g Dynamic Routing issue

    Hi,
    I am going to insane for not being able to get DynamicRouting to work. I am using DynamicRouting option in RouteNode and in the *service variable panel of this action I have the following:
    <ctx:route>
         <ctx:service isProxy='false'>/MyProject/Services/BusinessServices/MyBizService.biz</ctx:service>
         <ctx:operation>{$operation}</ctx:operation>
    </ctx:route>
    The business service is there and the path is correct. $Operation is verified to have the correct value.
    The setup is I have a proxy service based on a WSDL and in the route node I am trying to dynamically route to a business service.
    I get the following error:
    The invocation resulted in an error:
    <soapenv:Envelope      xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
         <soapenv:Body>
              <soapenv:Fault>
                   <faultcode>soapenv:Server</faultcode>
                   <faultstring>BEA-382612: Error preparing message for dispatch</faultstring>
                   <detail>
                        <con:fault      xmlns:con="http://www.bea.com/wli/sb/context">
                        <con:errorCode>BEA-382612</con:errorCode>
                        <con:reason>Error preparing message for dispatch</con:reason>
                             <con:location>
                                  <con:node>RoutingToDataServices</con:node>
                                  <con:path>request-pipeline</con:path>
                             </con:location>
                        </con:fault>
                   </detail>
              </soapenv:Fault>
         </soapenv:Body>
    </soapenv:Envelope>
    If just use Routing Table or Route action, there is no error and flow works fine.
    Has anyone else encountered issues with Dynamic Routing in this nature?
    Thanks in advance,
    Mani

    I use the web console for my OSB development and when I click on the business service The path appears like "CommonServices/BusinessService/CreditRatingTemplate" (based on the sample downloaded from the link given by me)
    I guess you are using the Eclipse/Workshop for development and hence you are getting the below:
    */* NGWS/Services/BusinessServices/NGWS_http.*biz*
    Can you replace it without the front / in the beginning of the URL and see if it works.
    Thanks,
    Patrick

  • Dynamic Routing error

    Has anyone had any success with Dynamic Routing on SoaSuite 11.1.1.6. Either through a mediator or through a BPEL Phase activity?
    This has been posted previously but I haven't seen a solution yet
    The error I get is
    Non Recoverable Business Fault :
    Fact not found in the rule engine working memory, rule session execution failed. The rule session 210165 failed because an instance of the fact oracle.tip.mediator.rules.model.DynamicRouting could not be found in the working memory of the rule session. This is most likely a rule modeling error. The decision service interaction expects the fact instance to exist in the working memory of the rule session. Check the rule actions in rule designer and make sure that a fact of the expected type is being asserted. If the error persists, contact Oracle Support Services. 210165
    The FMW Guide http://docs.oracle.com/cd/E15523_01/integration.1111/e10224/bp_two_layer_bpm.htm#CDEDBJBJ references a sample called BPELPhaseActivity but I can't find this sample
    Cheers
    Owen

    As Hisaak mentioned, try routing option if you want to set URI dynamically. To use the dynamic route action, you need the fully qualified name of the service in Oracle Service Bus as described in http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/modelingmessageflow.html#wp1081507
    Thanks
    Manoj

  • How to use Request header in the OSB error handler

    Hi
    I have a scenario where OSB proxy service accptes the payload and routes to the target service
    and before routing, I'm generating UUId and inserting in to the request header and publishing the request payload along with UUID to another service.
    when the target service is thrown some business fault,i need to publish the fault along with the header(which has UUID).since my target service sends only fault body,header is getting emptied in the error hanlder section.
    How can I use the requestheader in the error handler section. Any help is highly appreciated.
    Thanks,
    N
    Edited by: user13154768 on Sep 23, 2010 3:25 AM
    Edited by: user13154768 on Sep 23, 2010 3:26 AM

    Just assign your request header ($header) to your variable (e.g. $myRequestHeader) and than use this variable in your error handler. Fault response will override your $header but can't override $myRequestHeader.

  • Error Propogation after Dynamic Routing

    Hi All,
    I'm having difficulty propagating SOAP Faults generated as the result of a dynamic routing call to another Proxy Service. In my Service Error Handler, I can Log the $fault variable. I've even attempted to replace the contents of $body with $fault. If I do this and Reply with Success then the client can see the SOAP Fault that was thrown. The problem is that the HTTP Status returned is 200, and it should be 500 as I understand it.
    If I use a Reply With Failure, then the client gets
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
    <soapenv:Fault>
    <faultcode>soapenv:Server</faultcode>
    <faultstring>BEA-380000</faultstring>
    <detail>
    <con:fault xmlns:con="http://www.bea.com/wli/sb/context">
    <con:errorCode>BEA-380000</con:errorCode>
    <con:location>
    <con:node>Route To Destination</con:node>
    <con:path>response-pipeline</con:path>
    </con:location>
    </con:fault>
    </detail>
    </soapenv:Fault>
    </soapenv:Body>
    </soapenv:Envelope>
    This is of no use to any reasonable client application.
    Can someone please help?
    Thanks,
    -Mark

    This may not work with your architecture, but the way it's handled in our proxies is that only the endpoint proxy does a Reply with Failure. The others do Reply with Success, replacing the body with the error information.
    In the response pipeline for the endpoint, $body is checked to see if there is error information--if there is, the endpoint performs a Raise Error action. In the proxy's error handling stage, $body containing fault information is still available and then a Reply with Failure can be done based on that information (your Raise Error code will be found in the $fault structure, which enables you to choose whether to use the info from $body or from $fault in constructing a soap-env:Fault).
    Hope that helps.
    Meghan

  • OSB Error handling

    Hi,
    Could you point me to some OSB error handling examples? I am trying to understand how to handle errors at OSB. We are planning to build a number of message flows into OSB and trying to figure out the best way to handle errors.
    Thank you

    Hi
    From the main entry point of a proxy service you can create an error handler (as well as stages, routing nodes etc).
    In the Error Handlers you get the BEA error code which is sometimes helpful and sometimes not.
    For example, if I have a validate node in my main flow that cause an XML validation error, that is easy recognisable so an 'if then' node will be able to route to the appropriate error handling logic. If the proxy service calls another service which throws a SOAP fault back, things get a little trickier as all you get back from the container is a BEA-380001 error code - basically an 'Internal Server Error'. So to sort this out you need an 'if then' node to trap this error code and then include a nested 'if then' node to look for the real error. The nest if statement condition would look something like "$body/soap-env:Fault/detail/mf:MyFault/mf:MyFaultcode = ERROR_CODE". Notice here, the way to get the actual fault it to use XPath to traverse the actual message returned and not use the $fault variable provided by the container.
    I also suggest you create your own Fault type in an xsd so that the OSB always returns a consistent fault format.
    In each of the 'if then' condition branches in the error handler I have an assign which creates the SOAP fault using the user defined fault type, a sanitised example of which is shown below.
    <soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:gn="http://www.mycompany.com/wsdl/path/notification/1.0">
         <soapenv:Fault>
              <faultcode>gn:MyException</faultcode>
              <faultstring/>
              <detail>
              <fault:Fault xmlns:fault="http://www.mycompany.com/schema/fault/1.0">
                   <fault:code>10000</fault:code>
                   <fault:message>System Returned Error:
                        Details are:
                        Error Code - {fn:string($body/soap-env:Fault/detail/ser:ServiceException/ser:faultCode)}
                        Error Message - {fn:string($body/soap-env:Fault/detail/ser:ServiceException/ser:message)}
                   </fault:message>
                   <fault:processId>{fn:string($body/ns1:Type/ns2:id)}</fault:processId>
                   <fault:shortMessage>system Returned Error</fault:shortMessage>
                   <fault:time>{fn:current-dateTime()}</fault:time>               
              </fault:Fault>
              </detail>
         </soapenv:Fault>
    </soapenv:Body>
    Notice how my fault type is populated in the detail stanza of the overall SOAP fault message.
    This XML just gets assigned to body.
    the very last thing in the error handler is to add a reply node "with failure" if you wish to return a soap fault or "with success" if you have handled the error and don't need tot return a fault.
    Hope this at least points you in the right direction.
    Cheers
    MAtt

  • How to take control back from service error handler in osb

    I am using osb to send data to multiple services at the same time.since x query is a procedural language if any single operation fails the flow goes to service error handler which calls a BPEL webservice and logs the error in a database but the control doesnt comes back to my code I have tried everything including RESUME,REPLY operations but all in vain similarly i cannot use service callout call to my business service because its not allowing to select my BPEL wsdl operation

    If your statement "the control doesnt comes back to my code" means you expect that your xquery will continue in processing than your expectations are just too high. :-)
    Resume action is supposed to resume the next action in the message flow. It means the action that follows the action which caused an error.

  • Issue in Dynamic routing (OSB)

    Hi,
    I implemented dynamic routing in OSB,using xQuery:-
    +<tradingPartnerList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C:\bea910\user_projects\eclipse\TradingPartners.xsd">+
    +     <tp>+
    +          <Name>Platinum</Name>+
    +          <URL>DynamicDispatch/p1</URL>+
    +     </tp>+
    +<tp>+
    +          <Name>Gold</Name>+
    +          <URL>DynamicDispatch/p2</URL>+
    +     </tp>+
    +</tradingPartnerList>+
    I am routing it on to another proxy using following xml:-
    <ctx:route>
    <ctx:service isProxy='true'>{$endpoint}</ctx:service>
    <ctx:operation>null</ctx:operation>
    </ctx:route>
    Where the Endpoint is from the above xQuery..
    All work fine but i have a one Issue:-
    In <ctx:service isProxy='true'>{$endpoint}</ctx:service> we specify the folder structure of the proxyservice. but what if i move my proxy in future,if i move some of my proxy to other folder the xquery need to be changed which i feel is vv poor design.
    Is there any way where is can specify URL or URI of the proxy service????

    Is there any way where is can specify URL or URI of the proxy service????First of all, you would not like to move your resources here and there frequently in production. Secondly, if you move the resources, definitely you have to change X-Query/Message flow. There is no alternative.
    If you want this feature to be enhanced, please raise a ER with Oracle Support and if they find it valid, will provide a patch for the same.
    Regards,
    Anuj

  • Dynamic routing in OSB

    Environment: OSB 10.3.1
    To avoid manual configuring all published services one-by-one (eg. alter logging), I'd like to implement a generic proxy pattern in OSB. Assume that I have business services at /bs1, /bs2, etc, proxy services at /ps1, /ps2, etc.
    What I'd like to achieve is to publish proxy services which routes to the generic proxy first and then reroute to the original proxy service. For this I published eg. /pps1, /pps2, etc all with an Insert action which saves $inbound/ctx:transport/ctx:uri to . in $header and then route to the genericproxy proxy service.
    Generic proxy starts by executing common logic in the pipeline (log, etc), then should fetch the original routing information from the header and use dynamic routing to direct the message to the right proxy service (/ps1, /ps2, etc).
    Now the questions:
    1. is this the right approach to solve the problem of generic configuration of multiple published services in OSB?
    2. appearently the uri itself is not enough for dynamic routing - what else do I need to save from the original message?
    3. can I construct a <ctx:route><ctx:service..><ctx:operation..> construct with only Insert actions? I'd need a concrete example here accomplishing this.
    Thanks.

    Well you have to add Route Node to your proxy pipeline and inside it add a Dynamic Routing action.
    If you select the Dynamic Routing action you'll see in the Properties view something like:
    Service: <Expression>
    Here is where you have to define the <ctx:route> element. You can basically paste the text here.
    You could also create an XQuery transformation (so you can reuse it later) and invoke it here (with the XQuery Resources tab). But if you're not very familiar with XQuery I'd advise to start with the first option just to see it working.
    At first you could also omit the {$proxy} variable and statically specify the service you want to route to. Or you could use an Assign action to define the $proxy (or any name you want to give it) variable. And then once that's working see if you can get the service path from the headers.
    Hope that helps

  • Error Handling in Mediation for sequential Invocation in Routing rules

    Hi all,
    I have a situation File Adapter->Mediator->BPEL Process 1->BPEL Process 2.When an error occurs in BPEL Process 1 a soap fault is returned to the mediator service.
    Now since the mediator service invokes BPEL process 1 synchronously hence the fault policy is by-passed and the error is returned to the file adapter(the caller).
    I have configured rejection handling in the fault-policy file as below -
    _+<faultName xmlns:rjm="http://schemas.oracle.com/sca/rejectedmessages" name="rjm:pollFlatFiles">+_
    _+<condition>+_
    _+<action ref="ora-ws"/>+_
    _+</condition>+_
    _+</faultName>+_
    _+<service faultPolicy="RejectionMessageHandlerPolicy">+_
    _+<name>pollFlatFiles</name>+_
    _+</service>+_
    The following scenario occurs when trying to test the error handling -
    1.First when the error occurs in BPEL processes 'oracle.fabric.common.BusinessFaultException' is thrown at the composite level and no message is rejected by the file adapter.
    2.Immediately when the errors occurs for a second time the messages gets rejected and my rejection handler is called since the following exception is thrown from the file adapter -
    The adapter has exceeded maximum configured retries. The adapter was unable to process "{0}" after having retried for {1} times, now the adapter will reject the message. This exception usually comes due to errors in downstream systems. Please increase the value for "jca.retry.maxRetries" in composite.xml for the inbound service and redeploy.
    I have tried increasing the retry count also in composite.xml but the same sequence occurs i.e-
    First time business exception.
    Next time message rejection.
    Any idea how the error can be properly handled in synchronous invocation to avoid this situation so that the messages always get rejected?
    I am using SOA Suite 11.1.1.2.0 version.
    Thanks and Regards,
    Mandrita.

    Hi samay,
    In the transfer rules, if returncode is not 0, the upload stop,so..
    Actually I delete the "wrong" data in the start routine of the transfer rules

Maybe you are looking for

  • APP - Clubbing of Items for Payment

    Hi, I am using APP for making Payment to the vendors. For APP, I have set the rule for the Minimum Payment Amount of INR 7500 for Payment Method u201CCu201D in FBZP. The u201CSingle Payment for marked itemu201D is not ticked. Now I have one vendor wh

  • Classes not found

    Something strange happened. Suddenly I couldn't compile my servlets any more. The whole package javax.servlet disappeared. javac says so however. All other java 2 packages like javax.sound still works without problem. Any ideas /J Lindroos

  • Can't import vertical photos, they appear black

    Hi, I'm using Iphoto 9.2.1 with lion 10.7.2. I can't import any vertical photos on iphoto. Instead, I have a black icon and all the files weight 329 ko. They appear perfectly normal on my desktop, and if I rotate to have them horizontal on my desktop

  • Sharing a Help Project in RH10

    Hi All, Two of us at our office are doing documentation in RH.  We are currently using RH9, and - since I have had HORRIBLE experiences with RH and networks in the past - she is literally working off of a completely separate project, and I then impor

  • Download tones for iPhone

    I can't download Tones for my iPhone. I can't find the option Store > Create Tone when I select a song. Can anyone help me?