Compare Routing action versus Service Callout action versus Publish action?

hi all,
Apologies if this is a stupid question, but i throw my hands up and admit my ignorance (I'm mainly a core Java developer; OSB/ALSB is kind of a sideline for me). That said...
I've used OSB (actually ALSB) on a couple SOA projects within the last 3 years. on my previous projects, we mainly only ever used Routing actions. I'm now working on a 3rd project that also uses OSB. But on this new project, they mainly only ever use Service Callout actions and Publish actions.
My question is: what are the criteria for choosing between one or the other (Routing action or Service Callout action or Publish action)?
What does one do that the others can't? I've RTFM. But it still isn't obvious to me. Please, can you fill in the gaps in my knowledge?
Thanks in advance for your time.

My question is: what are the criteria for choosing between one or the other (Routing action or Service Callout action or Publish action)?Routing Action - Routing action can be created inside a Route Node only and Route Node is the last node in a request processing. A Route Node indicates that Request Processing will end here and Response Processing will begin. You can not have any node after Route Node in the message flow.
Service Callout - Service Callout is used in real time request-response scenarios (for sync response). If you have a use case where you need to call one or multiple real time request-response services (like sync web-services) then you may use Service Callout action in the message flow. Being a synchronus call, the thread gets blocked until a response is returned from target service.
Publish Action - Publish action is used for Request only scenarios where you don't expect a response back. The nature of Publish action (sync or async) will depend upon the target service you are invoking. If you are invoking an external service through a business service then Publish action with Quality of Service(QoS) as "Best Effort" (default) will work like fire and forget and thread won't get blocked (async call). If you are invoking a local proxy service (proxy with transport protocol as "local") from another proxy using publish action then it would be a blocking call (synchronus call) and thread will get blocked untill the processing of local proxy finishes.
Hope it helps.
Regards,
Anuj

Similar Messages

  • Invoking secure proxy from service callout or route actions in OSB

    Secure proxy is the one which uses WS-Security Username token for authentication before request is processed. Is there any way we can call secure proxy from non-secure proxy. While calling secure-proxy (during service callout or route), I assume header and body will be passed to the secure proxy before secure proxy verifies the user from wsse:security element. While calling secure proxy, I am receiving an error that "General outbound security error. BEA-386400". Is any example that you can show of calling secure-proxy from service callout or route actions
    I am preparing the following header in non-secure proxy message flow diagram before invoking secure proxy.
    <soap-env:Header>
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <wsu:Timestamp>
    <wsu:Created>2012-03-31T18:34:53.081-05:00</wsu:Created>
    <wsu:Expires>2012-04-25T23:34:53.081-05:00</wsu:Expires>
    </wsu:Timestamp>
    <wsse:UsernameToken xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <wsse:Username>Testuser</wsse:Username>
    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">testpassword</wsse:Password>
    <wsse:Nonce>7hoJIy00p+hwk/QiWpxT+Ndpr+4=</wsse:Nonce>
    <wsu:Created xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"/></wsse:UsernameToken>
    </wsse:Security>
    </soap-env:Header>

    Go back to
    compare Routing action versus Service Callout action versus Publish action?

  • OSB - Publish action - Request action message enrich/ tranformation impact

    Hi ,
    Today I came across an analysis on how the performance of thread is impacted if we have these two scenarios.
    1. A stage containing all the pre enrichment and validation and transformation to the input message to construct the request message for Publish action(to BS)
    2. A Publish action - Request action - sub activities / actions containing the enrichment, validation and transformation to construct the request message from input message
    An expert advice is expected to see if there is any significant impact in performance and thread analysis. This cal has to be made on entire implementation which has almost 70+ services.
    Thanks for quick reply.

    Enable tracing in osb console, and for debugging try adding routing options in publish node and change the quality of service to exactky once. You will then eb able to see the error.
    Also if you do not require your ps2 to be accessed outside the jvm consider making the ps2 a local proxy service.

  • BEA-382502 -- OSB Service Callout action received an error response

    Hi,
    I am trying to develope a simple application with two proxy services and Business services. The first proxy sevice communicates with the second one which in turn communicates with Business service.
    I am receving this error during the communication between the proxy services.
    I have tried enabling both "configure Soap body" and "configure payload document" to pass the request from one proxy service to other. In either case am receving the same error. Can you please help me here.
    Thanks in Advance,
    Mahi
    Edited by: Mahidhara on Sep 23, 2009 12:33 AM

    Hey all,
    I have solved problem with help of one my friend..Actually its possible through routing the service. I agree its a different approach than service callout but it acts as a quick fix.
    The key issue is to map :
    1. Request in format of Proxy service schema to Request of Business service (Legacy service-In this case Siebel)
    2. Response in format of Proxy service schema to Response of Business service (Legacy service-In this case Siebel)
    This is possible using XQuery transformation.
    Steps to achieve this::
    1. Create a XQuery by mapping proxy service schema and business service schema.
    2. Now Create message flow as following: Proxy service-->Pipeline Pair-->Stage1-->Route to business service.
    3. Now in stage1, choose Add an action-->Message processing-->Replace.
    4. In replace, do this - Replace ./* in variable body by Xquery which you created in 1.
    This will work smoothly.
    If any problems, let me know. If any insights on above, please comment.
    Will update this thread whenever I get info about service callout working. Meanwhile anybody searching for quick fix, can use this.
    Thanks and Regards,
    Swapnil Kharwadkar.

  • BEA-382500: ALSB Service Callout action received SOAP Fault response

    Hi Friends...
    <BR>
    <BR>
    <BR>
    During the implementation of TUTORIAL: 2 Loan Example of AquaLogic Service Bus 2.1,
    I am getting fault response when testing the Proxy Service. Please help me in the following....
    <BR>
    <BR>
    <BR>
    <b>BEA-382500: ALSB Service Callout action received SOAP Fault response</b>
    <BR>
    <BR>
    <BR>
    <b>error: failed to load java type corresponding to t=LoanStruct@java:normal.client</b>
    <BR>
    at
    <BR>
    <BR>
    <BR>
    <BR>
    com.bea.staxb.runtime.internal.FailFastErrorHandler.add(FailFastErrorHandler.java:45)
    at com.bea.staxb.runtime.internal.MarshalStreamUtils.addError(MarshalStreamUtils.java:274)
    at com.bea.staxb.runtime.internal.MarshalStreamUtils.addError(MarshalStreamUtils.java:249)
    at com.bea.staxb.runtime.internal.UnmarshalResult.addError(UnmarshalResult.java:140)
    at com.bea.staxb.runtime.internal.UnmarshalResult.addError(UnmarshalResult.java:124)
    at com.bea.staxb.runtime.internal.UnmarshalResult.getPojoBindingType(UnmarshalResult.java:327)
    at com.bea.staxb.runtime.internal.UnmarshalResult.getPojoTypeFromXsiType(UnmarshalResult.java:310)
    at com.bea.staxb.runtime.internal.RuntimeBindingType.determineActualRuntimeType(RuntimeBindingType.java:256)
    at com.bea.staxb.runtime.internal.UnmarshalResult.unmarshalType(UnmarshalResult.java:210)
    at com.bea.staxb.runtime.internal.SoapUnmarshallerImpl.unmarshalType(SoapUnmarshallerImpl.java:93)
    at weblogic.wsee.bind.runtime.internal.EncodedDeserializerContext.unmarshalType(EncodedDeserializerContext.java:66)
    at weblogic.wsee.bind.runtime.internal.BaseDeserializerContext.internalDeserializeType(BaseDeserializerContext.java:170)
    at weblogic.wsee.bind.runtime.internal.BaseDeserializerContext.deserializeType(BaseDeserializerContext.java:87)
    at weblogic.wsee.codec.soap11.SoapDecoder.decodePart(SoapDecoder.java:401)
    at weblogic.wsee.codec.soap11.SoapDecoder.decodeParams(SoapDecoder.java:236)
    at weblogic.wsee.codec.soap11.SoapDecoder.decodeParts(SoapDecoder.java:163)
    at weblogic.wsee.codec.soap11.SoapDecoder.decode(SoapDecoder.java:116)
    at weblogic.wsee.codec.soap11.SoapCodec.decode(SoapCodec.java:136)
    at weblogic.wsee.ws.dispatch.server.CodecHandler.decode(CodecHandler.java:138)
    at weblogic.wsee.ws.dispatch.server.CodecHandler.handleRequest(CodecHandler.java:39)
    at weblogic.wsee.handler.HandlerIterator.handleRequest(HandlerIterator.java:127)
    at weblogic.wsee.ws.dispatch.server.ServerDispatcher.dispatch(ServerDispatcher.java:85)
    at weblogic.wsee.ws.WsSkel.invoke(WsSkel.java:80)
    at weblogic.wsee.server.servlet.SoapProcessor.handlePost(SoapProcessor.java:66)
    at weblogic.wsee.server.servlet.SoapProcessor.process(SoapProcessor.java:44)
    at weblogic.wsee.server.servlet.BaseWSServlet$AuthorizedInvoke.run(BaseWSServlet.java:165)
    at weblogic.wsee.server.servlet.BaseWSServlet.service(BaseWSServlet.java:84)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3214)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1983)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1890)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1344)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
    <BR>
    Message was edited by:
    alwaysvaghu
    Message was edited by:
    alwaysvaghu

    I've been getting this problem as well. However, the thing that confuses me is that if I use the command-line client (as described in the tutorial), everything seems to work fine. However, if I use the test console, it fails to work (giving the fault described in an ancestor of this post).
    I've tried added a 'Rename' operation, but I just get the java1 namespace as well.
    If the problem was just the namespace issue as stated, wouldn't the command-line client have a similar problem?

  • Getting "OSB Service Callout action received SOAP Fault response" on trying to invoke a service using service callout

    I'm trying to invoke a search service using service callout . However on trying to test it , I'm getting this response
    <con:fault  xmlns:con="http://www.bea.com/wli/sb/context">
    <con:errorCode>BEA-382500</con:errorCode>
    <con:reason>
    OSB Service Callout action received SOAP Fault response
    </con:reason>
    <con:details>
    <con1:ReceivedFaultDetail  xmlns:con1="http://www.bea.com/wli/sb/stages/transform/config">
    <con1:faultcode  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">soapenv:Client</con1:faultcode>
    <con1:faultstring>Cannot find dispatch method for {}</con1:faultstring>
    <con1:http-response-code>500</con1:http-response-code>
    </con1:ReceivedFaultDetail>
    Please help in resolving this error.
    Thanks,
    Rohit

    you are calling wrong  the Service.
    ¿what kind of service do you have? RPC? Document?
    ir your target service its document, I recommend this:
    1. Test target service with OSB
    2. copy XML request and XML response from the test.
    3. use XML request format that you got at Step 2 in your source service and using it at your "Service Callout".

  • Service Callout Action in OSB

    Hi ,
    Good morning to all
    I have issue on osb service callout.
    1. i developed a synchronous service using bpel after that i invoke that service in osb as business service. my aim by using service callout action to call that service and get response.
    but the problem is how pass the osb input request to bpel input request and also how to transform the bpel response data to osb response data...
    Thanks and regards
    venky

    Venky,
    the problem is how pass the osb input request to bpel input request and also how to transform the bpel response data to osb response data...You can transform the OSB request structure to bpel service request structure using Xquery/Xslt transformations either by using replace action or assign action ( replacing the $body as per Bpel request format ) before sending the request to Bpel in service call out.
    And in similar manner after getting the response from Bpel service use Xquery/Xslt transformation & using replace action to transform bpel response back to OSB response format.
    Regards,
    Abhinav Gupta
    Edited by: Abhinav on Dec 5, 2012 11:49 AM

  • BEA-382501- OSB Service Callout action received an unrecognized response

    Hi,
    I am getting the above response while executing the proxy service which is based on http protocol.
    I am able to get the proper response through the business service, but the same i am not able to get in proxy service.
    For this I have configured one business service based on below parameters.
    Service Type Any XML Service
    Transport Configuration
    Protocol http
    Load Balancing Algorithm round-robin
    Endpoint URI http://01hw146484:8080/SpringFileUpload/testservlet?name=pratik
    Retry Count 0
    Retry Iteration Interval 30
    Retry Application Errors Yes
    HTTP Transport Configuration
    Read Timeout 0
    Connection Timeout 0
    HTTP Request Method GET
    Authentication None
    Proxy Server
    Follow HTTP redirects Disabled
    Use Chunked Streaming Mode Enabled
    Proxy service on below parameters:
    Service Type Any XML Service
    Transport Configuration
    Protocol http
    Endpoint URI /SMSProxy/PS_SMS_BasedOnBS
    Get All Headers No
    Headers
    HTTP Transport Configuration
    HTTPS required No
    Authentication None
    Message Handling Configuration
    Transaction Required Disabled
    Same Transaction For Response Disabled
    Content Streaming Disabled
    XOP/MTOM Support Disabled
    Page Attachments to Disk No
    I am using service call out to call the business service, but not able to get the any response using the proxy. my business service is working properly.
    Please let me know where i am doing mistake.
    Edited by: truptipatil on Jan 12, 2012 3:07 PM

    Hi,
    even if I am adding a service error handler, I am getting the same error, I don't why proxy is not able to get the proper response.
    I am getting the below error.
    <BEA-000000> < [PipelinePairNode1, PipelinePairNode1_request, stage1, ERROR] <con:fault xmlns:con="http://www.bea.com/wli/sb/context">
    <con:errorCode>BEA-382501</con:errorCode>
    <con:reason>OSB Service Callout action received an unrecognized response</con:reason>
    <con:details>
    <con1:UnrecognizedResponseDetail xmlns:con1="http://www.bea.com/wli/sb/stages/transform/config">
    <con1:http-response-code>200</con1:http-response-code>
    </con1:UnrecognizedResponseDetail>
    </con:details>
    <con:location>
    <con:node>PipelinePairNode1</con:node>
    <con:pipeline>PipelinePairNode1_request</con:pipeline>
    <con:stage>stage1</con:stage>
    <con:path>request-pipeline</con:path>
    </con:location>
    </con:fault>>
    Any help in this regards, is highly appreciated.

  • BEA-382501: ALSB Service Callout action received an unrecognized response

    I have a proxy service A, in the response pipeline it has a stage that makes a service callout to another proxy B.
    The proxy B also has a pipeline pair. If the response pipeline is empty (no actions) then I get the following error when I invoke proxy A:
    BEA-382501: ALSB Service Callout action received an unrecognized response
    If I add any action to proxy B's response pipeline (eg. log, report) everything works fine.
    Any ideas to explain this?

    Hi dear,
    I think Response of Proxy Service A is not matching with the Response of Proxy Service B. if u will leave empty Response of Proxy Service B then it will not match with the response of Proxy A.

  • What's the difference between Routing and Service Callout in ALSB?

    I am puzzled by that.
    what's the difference between them.
    Or what's the situation should use Routing, and that of service callout?

    There is little difference between routing and service callout.
    Routing is symbolizes the transition of request thread to a response thread starts. (in OSB every invocation of proxy is undertaken by different request and response threads ). So by this definition, there can be only one route node in a pipeline.
    Service call out is also used for similar actions as route node , but in pipeline. So service callout can be either in request pipeline (request thread) or in response pipeline (response thread ) . So in a proxy you can have multiple ServiceCallouts but only one route node.
    There are some other slight differences.
    Manoj

  • Calling a business service based on operation-soap action in Proxy service

    Hi,
    I have a requirement in which I have to call a business service based on operation-soap action defined in Proxy service wsdl.
    Like in below mentioned wsdl GetPartCostDelta and GetCurrencyList operations are there.But which ever operation I select,It just goes to one business service.
    Is there any way,I can route to some another business service based on the soap action
    proxy service WSDL
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ewopcd="urn:com:gm:gpd:schema:ewopartcostdelta" xmlns:gen="urn:com:gm:gpd:schema:genericfault" xmlns:tns="urn:com:gm:gpd:services:ewopartcostdeltaservice" targetNamespace="urn:com:gm:gpd:services:ewopartcostdeltaservice">
         <wsdl:types>
              <xs:schema>
                   <xs:import namespace="urn:com:gm:gpd:schema:ewopartcostdelta" schemaLocation="ewocostdelta.xsd"/>
                   <xs:import namespace="urn:com:gm:gpd:schema:genericfault" schemaLocation="servicefault.xsd"/>
              </xs:schema>
         </wsdl:types>
         <wsdl:message name="EWOCurrencyListRequest">
              <wsdl:part name="CurrencyListRequest" element="ewopcd:EWOCostDeltaInput"/>
         </wsdl:message>     
         <wsdl:message name="EWOCurrencyListResponse">
              <wsdl:part name="CurrencyListResponse" element="ewopcd:EWOCurrencyList"/>
         </wsdl:message>     
         <wsdl:message name="EWOPartCostDeltaRequest">
              <wsdl:part name="PartCostDeltaRequest" element="ewopcd:EWOCostDeltaInput"/>
         </wsdl:message>
         <wsdl:message name="EWOPartCostDeltaResponse">
              <wsdl:part name="PartCostDeltaResponse" element="ewopcd:EWOCostDeltaResult"/>
         </wsdl:message>
         <wsdl:message name="EWOPartCostDeltaServiceFault">
              <wsdl:part name="PartCostDeltaServiceFault" element="gen:ServiceFault"/>
         </wsdl:message>
         <wsdl:portType name="EWOPartCostDeltaPortType">
              <wsdl:operation name="GetCurrencyList">
                   <wsdl:input name="EWOCurrencyListRequest" message="tns:EWOCurrencyListRequest"/>
                   <wsdl:output name="EWOCurrencyListResponse" message="tns:EWOCurrencyListResponse"/>
                   <wsdl:fault name="EWOPartCostDeltaServiceFault" message="tns:EWOPartCostDeltaServiceFault"/>
              </wsdl:operation>
              <wsdl:operation name="GetPartCostDelta">
                   <wsdl:input name="EWOPartCostDeltaRequest" message="tns:EWOPartCostDeltaRequest"/>
                   <wsdl:output name="EWOPartCostDeltaResponse" message="tns:EWOPartCostDeltaResponse"/>
                   <wsdl:fault name="EWOPartCostDeltaServiceFault" message="tns:EWOPartCostDeltaServiceFault"/>
              </wsdl:operation>          
         </wsdl:portType>
         <wsdl:binding name="EWOPartCostDeltaBinding" type="tns:EWOPartCostDeltaPortType">
              <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
              <wsdl:operation name="GetCurrencyList">
                   <soap:operation soapAction="GetCurrencyList" style="document"/>
                   <wsdl:input>
                        <soap:body use="literal"/>
                   </wsdl:input>
                   <wsdl:output>
                        <soap:body use="literal"/>
                   </wsdl:output>
                   <wsdl:fault name="EWOPartCostDeltaServiceFault">
                        <soap:fault name="EWOCostDeltaServiceFault" use="literal"/>
                   </wsdl:fault>
              </wsdl:operation>
                        <wsdl:operation name="GetPartCostDelta">
                   <soap:operation soapAction="GetPartCostDelta" style="document"/>
                   <wsdl:input>
                        <soap:body use="literal"/>
                   </wsdl:input>
                   <wsdl:output>
                        <soap:body use="literal"/>
                   </wsdl:output>
                   <wsdl:fault name="EWOPartCostDeltaServiceFault">
                        <soap:fault name="EWOCostDeltaServiceFault" use="literal"/>
                   </wsdl:fault>
              </wsdl:operation>
         </wsdl:binding>
         <wsdl:service name="EWOPartCostDeltaService">
              <wsdl:port name="EWOPartCostDeltaPort" binding="tns:EWOPartCostDeltaBinding">
                   <soap:address location="https://localhost/EWOPartCostDelta"/>
              </wsdl:port>
         </wsdl:service>
    </wsdl:definitions>

    Did you try using the Operational branching node of OSB?
    You have copy the operation name from the inbound variable and populate the SOAP Header with that value into the SOAPAction tag.I think this will work.
    Thanks,
    Prabu

  • Publish action not working with JCA based Business Service

    Hi All,
    I have created one BS in OSB that publish the message in AQ. Its working fine as expected when tested from test console.
    I have made one proxy service which after transformation will publish the message to this BS, but the publish action is not invoking.
    I have added log action inside request action of my publish action and log is getting generated for that with correct request.However, I cant see message in DB neither can i see any exception/error logs in OSB.
    I tried replacing publish with route action and its working fine , message is getting published in AQ.Did any one face this type of issue before ???
    Or publish action works only with jms based Business services.
    Appreciate your help.
    Regards,
    Karan

    Bingo !!!
    Setting QOS helped me to find out the exact error. Was passing complete soap envelope to BS instead of passing body part only.
    Thanks a lot for your help mate .
    One more query can you please enlighten me on the use of QOS in OSB, such as in what scenarios we should use QOS.
    Regards,
    Karan
    Edited by: Karan Mann on Mar 14, 2013 3:37 AM

  • How to do a service callout to a service with/without MTOM support

    I have a problem trying to call a business service from a proxy service as a service callout related to MTOM.
    Specifically, the service I have is a Java based web service with the following signature:
    void archive(byte[] bytes, String fileName)
    When the WSDL is generated it maps the byte array to base64Binary as follows:
    <xs:element name="archive">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="bytes" type="xs:base64Binary"/>
    <xs:element name="fileName" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    Now in order to call this I try to build the XML payload withint the proxy message flow and I get this (from the logger):
    <8/06/2009 01:07:12 PM NZST> <Debug> <AlsbStagesTransformRuntime> <BEA-000000> <Service callout request payload:
    <archive xmlns="http://mtm.oracle.com/tools">
    <bytes>
    <con:binary-content ref="cid:518df4b0:121bd6029c5:-7fd9" xmlns:con="http://www.bea.com/wli/sb/context"/>
    </bytes>
    <fileName>RQRETMAINT20090608130711.csv</fileName>
    </archive>
    as you can see the bytes are being passed by reference and then when the service is called I get the following ("*non-MTOM endpoint received a MTOM message*") error:
    <8/06/2009 01:07:13 PM NZST> <Debug> <AlsbPipeline> <BEA-000000> <RegistryOutbound_SB_New/ProxyServices/ftpRqRetMaintToRegistry: +PipelineContextImpl.generateFault - messageID:2169050999921023879-518df4b0.121bd6029c5.-7fdc, errorCode:BEA-382500, errorReason:OSB Service Callout action received SOAP Fault response, errorDetails:<xml-fragment xmlns:con="http://www.bea.com/wli/sb/stages/transform/config">
    <con:faultcode xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">soapenv:Server</con:faultcode>
    <con:faultstring>[Server CodecHandler] Failed to decode
    -> non-MTOM endpoint received a MTOM message</con:faultstring>
    <con:detail>
    <bea_fault:stacktrace xmlns:bea_fault="http://www.bea.com/servers/wls70/webservice/fault/1.0.0" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">weblogic.wsee.codec.CodecException: non-MTOM endpoint received a MTOM message
         at weblogic.wsee.codec.soap11.SoapCodec.decode(SoapCodec.java:170)
         at etc
    </bea_fault:stacktrace>
    </con:detail>
    <con:http-response-code>500</con:http-response-code>
    </xml-fragment>>
    So it seems the business service expects the "bytes" passed by value whereas the proxy is passing by reference. I tried changing the proxy to not use MTOM by disabling XOP/MTOM support in the Message Content tab (actually I did this in the proxy that calls the one in question since it uses the local transport and so doesn't have such a tab) and leaving it enabled but pass by value and it had no effect for some reason.
    I've read the User Guide section on MTOM support but it was not that helpful so any pointers to better information would be much appreciated.
    regards
    Edited by: mdsrobbins on Jun 8, 2009 1:44 PM

    Can you test back-end MTOM end point through a route node and see if its working? I doubt the issue has nothing to do with SC but with the MTOM end-point implementation.
    non-MTOM endpoint received a MTOM message") error: hints that the service call out is sending a mtom message but the end-point is not accepting the message
    Manoj
    Edited by: mneelapu on Jun 8, 2009 11:25 AM

  • Service Callout to HTTP Post Business Service?

    Hi,
    I have created a "Business Service" with following config,
    1) Any XML Service
    2) Prtocol- HTTP
    3) HTTP Request Method- Post.
    I have created a Proxy Service , which is "Any XML Service" based on HTTP ptotocol.
    inside the message flow of proxy service i am routing to the Above Business Service passing query parameter. The business service returns an XML.
    How do i make a service callout to the business service assing a query string?
    I need this functionality to work because i have to call multiple business service (endpoint is a jsp which accepts query string) inside a proxy service and retreive xml from response , merge them and send it back to the client(invoking proxy service).
    Thanks,
    Anup

    Hi Gregory,
    In fact when i used route node to invoke a business service i modified "URL dynamically by setting the value in the pipeline variable $outbound", it worked here.
    Same i tried on Service Callout, it did not work. Also when we create a service callout action it expects us to select either "confugure soap body" or "configure payload document" followed by
    1) Request Document variable
    2) Response Document variable.
    What parameter should i set for above fields?
    Thanks,
    Anup

  • OSB Service Callouts - HTTP Threads

    Hi All,
    We are having issues with OSB service callouts calling the business services from the Proxy Services. Due to excessive usage of Service Callouts, the proxy services are hanging out in the OSB server. From the Proxy services,we could able to successfully invoke the business services ( SOA Composistes , EJB Webservices etc ) and the webservices are taking few milliseconds to process the requests,but the response is not reaching the OSB Proxy Service. Ideally the behaviour is not happening for all requests, but for few messages. We have set up a dedicated Worker manager ( 10 Min Threads ) in the Admin Console and mapped the Worker manager to the business services ( dispatch policy ),but with no luck. We have followed the below link and its not working.
    http://allthingsmdw.blogspot.co.uk/2012/09/osb-service-callouts-and-oql-part-3.html
    Request to help us incase if you happen to see this behavior earlier.
    Thanks,
    Phani

    Hi Phani,
    It is a known issue with ALSB/OSB. There is a documentation in oracle as well regarding that "ALSB/OSB - Proxy Service Callout Causes Stuck Threads Under High Load [ID 861724.1]".
    Symptoms
    Stuck threads when calling a proxy service with a service callout /publish under high load. Proxy services using only ROUTE work without problems.
    Cause
    The service callout instantiates a new thread.
    As the proxy services are running in the default thread pool there will be no thread available for the callout under high load because all threads are blocked by the proxy services waiting for the response.
    This is expected behavior when using a service callout action and can be resolved by correct thread tuning.
    Solution
    A separate Workmanager needs to be configured for the Proxy service. This can be done by using the Dispatch Policy for specific proxy services (JMS, WS ..).
    For detailed information go to the OSB transport specific documentation and look for Dispatch Policy.
    There you will also see the link to the WLS Workmanager documentation.
    Please create a Workmanager using <max-threads-constraint> to limit the number of parallel executing proxies.
    Using this configuration the proxy will not block threads in the default queue.
    The service callout will still use the threads from the default thread pool.
    Hope this helps.
    Regards,
    Karan
    http://learn-oraclesoa.blogspot.com/

Maybe you are looking for