Synchronous Composite Services with Immediate Response

Hi
The paltform is currently SOA 11.1.1.2.0 which is to be moved to SOA 11.1.1.3.0 once environments are complete
Essentially I have a requirement by where the way we build some of our composites needs to apply to a certain pattern. This patterm is a synchronous request - response by where an immediate response to the client / calling service is provided. By this I mean a client / service will call a SOA composite, the callled composite will receive the message and reply imemdiately with some tracking information and then the called service will carry on its processing. However in terms of the client / callee service the interaction is complete. (e.g. do not provide further updates).
The above is an adaptation of Fire and Forget however we desire to pass back some meaningful trascking / support information to the client.
Following implementation of this in development, we have noticed that the interaction is essentially blocked until all services are complete. Therefore A --> B --> C, even though B has responded to A and then called C, A remains running until all composites are complete
I'd envisage this is related to transactions and threads etc, however I was wondering if there were any properies thats could be set to alleviate this problem. I have considered using bpel.config.transaction etc.
Currently placing a checkpoint (by no means ideal) after the reply resolves the issue. Presumeably as this forces dehydration
Any thoughts would be appreciated
Regards Dave

Hello Dave,
From my point of view, you should pass the message (immediately after receiving) to a intermediate storage (AQ, JMS, FILE/FTP) and then reply back with required info to the client. Let process C poll the intermediate location for incoming messages and perform rest of the processing. So calls will be like -
A--> B --> Storage (JMS/AQ/FILE/FTP)
Storage --> C
Above solution would be good in case the frequency of messages from client is high. I don't know whether it fits in your requirement but this is an option.
Regards,
Anuj

Similar Messages

  • Two way WCF Service with default response

    Hello All,
    I have one schema that i need to expose as a WCF-Service. However, i want to send a response back to the caller (default response). This is just to acknowledge the caller.
    Now how to create a two-way service that sends a default response always?
    I can do this by creating a new response schema and defaut some value for that particualr field.
    But without creating the response schema, is that possible to send response back to the caller?
    Thanks
    SKGuru

    Hi
    I was reading
    this article.
    As per my understanding ,I would try following
    Create a request schema
    Create a response schema ( any basic structure just a template to publish)
    Use the Wizard to publish the schema
    I would use my service operation method as "two way"
    I will select the request schema as Request
    It will select the response schema as response
    It will generate a request response, two way receive port
    I will write a custom pipeline to generate a blank response and try to configure it on the response. I think as per the notes we can configure the custom pipelines as notes says:
    When using the wizard to create receive locations, the wizard creates the receive locations using the default values. The default value for the receive pipeline is the
    Microsoft.BizTalk.DefaultPipelines.PassThruReceive pipeline. If messages received through the published WCF services require any special pipeline processing (for example, validation, correlation/property promotion, or inbound/outbound maps)
    then you should set the receive pipeline to Microsoft.BizTalk.DefaultPipelines.XMLReceive, or to a custom pipeline by using the BizTalk Administration console.
    I will try this and let you know.
    HTH, Naushad (MCC/MCTS)
    http://alamnaushad.wordpress.com, My New TechNet Wiki Article
    “BizTalk Server: Performance Tuning & Optimization"
    If this is
    helpful or
    answers your question -
    please mark accordingly! Please
    "Vote As Helpful" if this was useful while resolving your question!

  • OSB - Service Invocation instance response times

    Hi,
    In my research and discussion with OSB vendor team, I found there is no product feature to gather statistics on per invocation response times for a OSB service.
    My requirement is to gather per invocation response time of service. I am contemplating few ways of doing this
    1. Java call outs before the start and end of service.
    Downside of this approach is in my composite service (composing 10 biz services) with challenging response time requirements, it might be a over head to wrap each biz service with java call outs for measurements. Any thots?
    2. There is a report feature in OSB. How about using SNMP traps for reporting the start and ends. I am wondering if this is any better than java call outs which might be synchronous I/O operation.
    Do you folks see alternate approaches?
    TIA

    I think that generally it's not a good idea to modify production logic (code or configuration) to gather any statistics. It may look simple, but there is still possibility of unexpected failure that would cause failure of your service. Not to mention complexity of such a step.*
    I totally agree.
    This kind of data should be gathered from your infrastructure components. I know that OSB doesn't provide such a feature, but if you have your services published on HTTP protocol, than you can always use some kind of proxy server. In our company, we use feature-rich Apache HTTP server for many reasons. Response time logging is one of such reasons.*
    Interesting. Thanks. This approach might help gather stats on the Proxy services. However the biz services composed inside proxy may not get the stats.
    Another possibility is to use a specialized component. I think that OWSM can be useful. However, I don't have any experience with it and it could be overkill considering your needs. http://www.oracle.com/technology/products/webservices_manager/index.html*
    We are looking into OWSM, as you rightly said, wanted to keep it simple without OWSM.
    Thanks

  • Consuming Synchronous RESTful Web Service with PI

    Dear experts,
    i have a scenario for consuming RESTful web service.
    i have followed all the steps showed in the following link for configuring my interface.
    http://scn.sap.com/community/pi-and-soa-middleware/blog/2012/08/11/calling-synchronous-restful-web-service-with-pi--i
    but still i am facing issues at the communication channel level, the trace of the communication channel is as follows
    Error While Sending Message: Additional error text from response: com.sap.engine.interfaces.messaging.api.exception.MessagingException: org.apache.axis.ConfigurationException: adapter is null org.apache.axis.ConfigurationException: adapter is null at com.sap.aii.adapter.axis.modules.HandlerCore.process(HandlerCore.java:60) at com.sap.aii.adapter.axis.modules.HandlerBean.process(HandlerBean.java:86) at sun.reflect.GeneratedMethodAccessor602.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:47) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:50) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:37) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:21) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_MethodRetry.invoke(Interceptors_MethodRetry.java:46) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:191) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:23) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:25) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:17) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:138) at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164) at com.sun.proxy.$Proxy3284.process(Unknown Source) at com.sap.aii.af.app.mp.ejb.ModuleProcessorBean.process(ModuleProcessorBean.java:264) at sun.reflect.GeneratedMethodAccessor544.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:47) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:50) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:37) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:21) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_MethodRetry.invoke(Interceptors_MethodRetry.java:46) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:191) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:23) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:25) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:17) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:138) at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164) at com.sun.proxy.$Proxy646.process(Unknown Source) at com.sap.aii.af.app.listener.AFWListenerBean.onMessage(AFWListenerBean.java:422) at sun.reflect.GeneratedMethodAccessor558.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:47) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:50) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:37) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:21) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_MethodRetry.invoke(Interceptors_MethodRetry.java:46) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:191) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:23) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:25) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:17) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179) at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:138) at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164) at com.sun.proxy.$Proxy603.onMessage(Unknown Source) at com.sap.engine.messaging.impl.spi.ServicesImpl.deliver(ServicesImpl.java:362) at com.sap.aii.adapter.xi.ms.XIEventHandler.onDeliver(XIEventHandler.java:1091) at com.sap.engine.messaging.impl.core.queue.consumer.RequestConsumer.onMessage(RequestConsumer.java:75) at com.sap.engine.messaging.impl.core.queue.Queue.run(Queue.java:1017) at com.sap.engine.messaging.runtime.MSWorkWrapper.run(MSWorkWrapper.java:58) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:185) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:302)
    i have also attached screen shots of module tab of my SOAP(Axis) adapter
    regards,
    sushant

    Hi Sushant
    Check the question 11.I am getting org.apache.axis.ConfiguraitonException: adapter is null in this note 1039369 - FAQ XI Axis Adapter
    (you will find all the answers in the attachment section)
    Regards.

  • Getting BPM response in a synchronous web service

    We have a synchronous web service - an EJB whose methods are exposed as web service
    methods. The EJB acts as a broker, and channels web service requests to the BPM.
    Each web service request (i.e. each EJB method) needs to interact with a few AppView
    services. We plan to use the BPM as an intermediate layer. Hence each EJB method
    needs to start a BPM workflow, wait for its completion (as the web service is
    synchronous) and get the output response XML to return to the web service client.
    In this scenario, we have questions in two major areas -
    1) How does the EJB get the response from the workflow? For e.g. If we use sendXMLToClient
    in the workflow, how is it received by this EJB? Alternatively, is it better to
    put all the response in workflow variables, and inspect it after the workflow
    completes i.e. after WorkflowInstance.waitForCompletion() ? What would happen
    in case of exceptions = where would they be caught?
    2) There are various simultaneous tasks in the workflow, and we want to merge
    the XML response of all of these. How is it best done?
    Note that all of these are dynamic and need to be done in code i.e. Human intervention
    through worklist / studio is not expected.
    Please advise.
    Regards,
    Milind Prabhu
    [mailto:[email protected]]

    You can try the message driven bean.
    It will slove your problem.
    and you can use the database to save your run time xml response.
    Good luck!
    "Milind Prabhu" <[email protected]> wrote in message
    news:3c55830c$[email protected]..
    >
    We have a synchronous web service - an EJB whose methods are exposed asweb service
    methods. The EJB acts as a broker, and channels web service requests tothe BPM.
    Each web service request (i.e. each EJB method) needs to interact with afew AppView
    services. We plan to use the BPM as an intermediate layer. Hence each EJBmethod
    needs to start a BPM workflow, wait for its completion (as the web serviceis
    synchronous) and get the output response XML to return to the web serviceclient.
    In this scenario, we have questions in two major areas -
    1) How does the EJB get the response from the workflow? For e.g. If we usesendXMLToClient
    in the workflow, how is it received by this EJB? Alternatively, is itbetter to
    put all the response in workflow variables, and inspect it after theworkflow
    completes i.e. after WorkflowInstance.waitForCompletion() ? What wouldhappen
    in case of exceptions = where would they be caught?
    2) There are various simultaneous tasks in the workflow, and we want tomerge
    the XML response of all of these. How is it best done?
    Note that all of these are dynamic and need to be done in code i.e. Humanintervention
    through worklist / studio is not expected.
    Please advise.
    Regards,
    Milind Prabhu
    [mailto:[email protected]]

  • Expose an orchestration as WCF service with a Request-Response port set to Direct Binding

    Hello , 
      I'm trying to expose an orchestration as a WCF service (while the Request-Response port is set to Direct binding) . Is this possible ? (the issue will be correlating back the response to the synchronous WCF request after the response is posted back
    to the Message Box by the Direct Send logical port).
    I have no problem in exposing the orchestration while I'm setting the Binding port to 'Specify Later' (What I'm trying to do actually is to expose a orchestration using different adapters (like Http and Wcf ) in the same time ).
    Thanks

    Yes, you can publish an orchestration as WCF/Web service which has direct bound request-response port.
    Subscription works based on “EpmRRCorrelationToken”
    and “RouteDirectToTP”. When you enlist the orchestration which
    has the direct bound request-response port (also published as service), its subscription are based on above two context properties and they take care of correction.
    And also the response matches to the request part of the port due to the nature of two-way communication protocol.
    Create an Orchestration with direct-bound request-response port and publish it as service. This will work. Give it a try
    Regards,
    M.R.Ashwin Prabhu
    If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply.

  • Consuming Domino web service with JAXB encounters Method Response element

    I am able to consume a Domino R7 (Axis) web service with JAX-WS using Dispatch<SOAPMessage>. When I try using Dispatch<Object> however, JAXB throws an exception because it encounters an unexpected tag.
    The XML from the web service looks like this:
    <Envelope>
        <Body>
            <WebServiceMethodResponse>
                <WebServiceMethodReturn>
                    The meaning of life
                </WebServiceMethodReturn>
            </WebServiceMethodResponse>
        </Body>
    </Envelope>With Dispatch<SOAPMessage>, I can get to the meaning of life quickly using SOAPBody.getElementsByTagName( "WebServiceMethodReturn" ) but with Dispatch<Object>, it appears I must also create a class for the WebServiceMethodResponse element to make JAXB happy. I don't see this happening in other people's examples. Has the Return-element-within-Response-element design been eliminated in pure JAX-WS web services, or is this something that only IBM does?

    In case anyone's search leads them here, I've posted the solution at:
    *[http://www.pby.com/general.nsf/webarticles/dominowebservice01]*
    It is an exhaustive article (not "Hello World"!) that goes through several versions of the web service and client - hopefully explaining all+ pieces of the puzzle:
    ~ web service code,
    ~ WSDLs
    ~ schema
    ~ thoroughly-documented clients that do and do not use JAXB
    ~ ... that use generated artifacts
    ~ ... that customize existing POJOs
    ~ the SOAP messages generated in each direction
    ~ the necessary JAXB annotations
    ~ explanations of how the code works
    ~ explanations of how namespaces affect the code
    ~ on and on and on...
    My constant goal was to write an uncomplicated solution that uses as few artifacts (two) and annotations as possible. The end result is a small, fast JAX-WS 2.0 client that uses JAXB to invoke and consume a secured Domino 7 (1.4.2 JVM + AXIS) web service, using RPC/literal SOAP messages.

  • Security with Composite Services

    We will be exposing key WLI processes as services. These, internally, will call other processes (also services). Our question ... How does identity propagation work when one JWS calls another? Is there some way a utility process JWS could avoid network exposure and be consumable only by trusted JWS's internal to the same WLS domain? The overhead of multiple authentication / authorization for layered composite services must be a recurring problem. We have numerous utility services that need to be frequently called. Some would only be called by higher trusted services (shouldn't have exposure beyond that). What is the most efficient way to architect and manage these utility service security issues? Any suggestions are greatly appreciated.
    kate

    More reading and code sample (see end of this post) of what is coming and what is possible today:
    http://www.oracle.com/oramag/oracle/02-jul/index.html?o42special_web.html
    http://otn.oracle.com/oramag/webcolumns/2003/techarticles/smith_wss.html
    This article from Vipin Samar gives the state of WS-Security pretty accurately:
    http://otn.oracle.com/tech/webservices/standards/Samar_Security.htm
    Accompanying paper:
    http://otn.oracle.com/tech/webservices/pdf/33206.pdf
    And, this code sample/tutorial illustrates SSL with Web services:
    http://otn.oracle.com/sample_code/tutorials/wspki/toc.htm
    Mike.

  • Composite Application with RESTful Web Services

    Hello!
    Is it possible to build Composite Application with RESTful Web Services only. I use Glassfishe 2.1 and OpenESB 2.1.
    Can you point me on some tutorials on the net to read about using RESTful Web Services in BPEL?

    Hi Gabriel,
    Let me try to answer some of your questions:
    1) The "Requires Secure Access" attribute of a resource handler controls whether this handler must be accessed/consumed only over SSL (HTTPS). Oracle Database Cloud Schema Service is only offered over SSL, so this attribute does not have any effect on RESTful services deployed in this environment (because secure access is always required and there is no other way). That said, if you want to access such web service from your own APEX instance, your instance must have Oracle Wallet configured with appropriate SSL certificate.
    2) The URI parameters are not required. If your web service returns data for many entities (for example, list of employees in employees/), you may not need a parameter. If your web service returns data for one specific entity (for example, details of one employee in employees/{id}), you may want to identify that entity with a URI parameter.
    3) You can have many URI parameters, for example: customers/{id}/orders/{order_id}.
    4) Yes, these are the same HTTP methods/verbs you would use from PHP.
    5) If you are trying this POST example from your own APEX instance (not Oracle Database Cloud Schema Service) and you are trying to access a web service over SSL, then it is likely that the Oracle Wallet used by your instance does not include the required SSL certificate(s), or the Oracle Wallet is not configured at all.
    6) I recommend to check RESTful Web Services for the Oracle Database Cloud white paper and Oracle REST Data Services Developers Guide. Oracle REST Data Services is the technology that enables RESTful services in the Oracle Database Cloud Schema Service.
    You can certainly create your own web services in the Oracle Database Cloud Schema Service and consume them from the same environment.
    Vlad

  • Immediate Response required for Fire-and-forget OSB pattern.

    Hi,
    I have a BPEL process (fire-and-forget pattern) which runs for few minutes, but want to send an immediate response back to the caller. The important condition is to have a Proxy implemented as a WSDL-based service type.
    For this, I am calling BS (of BPEL process) in request pipeline and sending a changed $body in response pipeline; but the OSB response document us null, though in response pipeline, I do see $body getting replaced.
    Any pointers will be really helpful.
    Thnx,
    Nikhil

    like AbhishekJ said
    if you defined your operation in the wsdl for the proxy service oneway and in the testconsole you do see the body is getting replaced after the routing is executed it's mostly like because of the oneway operation on your proxyservice itself, make it synchronous and do a test again?
    or put a replace with some static xml in the response pipeline, remove the route and see if if still returns null
    then you're pretty sure it's the oneway operation in the proxy wsdl itself

  • Invoking Synchronous Web Service from BAm alerts ( 11g)

    I am invoking a synchronous web service for BAM Alerts ( defined in rules )
    There r 2 actions Email and Call web service.
    EMail works fine
    But for calling a web service I get the following error in logs
    Content-Type = text/html
    Server = Oracle-Application-Server-10g/10.1.3.4.0 Oracle-HTTP-Server
    Date = Tue
    Date = 29 Dec 2009 17:09:54 GMT
    <html>
    <head>
    <title>Exceptional Event Occurred</title>
    </head>
    <body>
    <br>
    An exception occurred while processing your request, please contact your Manager or Supervisor.
    <br>
    </body>
    </html>
    Dec 29, 2009 11:09:54 AM oracle.bam.common.logging.Log writeLine
    SEVERE: EventEngine: Action exception: EEInstEv60 EEInstAct21 Rule Id: 7 exception: oracle.j2ee.ws.saaj.ContentTypeException: Not a valid SOAP Content-Type: text/html
    Dec 29, 2009 11:09:54 AM oracle.bam.common.logging.Log writeLine
    WARNING: EventEngine: Exception stack trace:
    at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection.call2(HttpSOAPConnection.java:209)
    at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection.call(HttpSOAPConnection.java:136)
    at oracle.j2ee.ws.saaj.client.p2p.HttpSOAPConnection.call(HttpSOAPConnection.java:129)
    at oracle.bam.eventengine.engine.event.action.TakeWSAction.invokeService(TakeWSAction.java:143)
    at oracle.bam.eventengine.engine.event.action.ActionProcessor.callWebService(ActionProcessor.java:1023)
    at oracle.bam.eventengine.engine.event.action.ActionProcessor.actionHandler(ActionProcessor.java:434)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at oracle.bam.system.Delegate$Sink.invoke(Delegate.java:80)
    at oracle.bam.system.Delegate.dynamicInvoke(Delegate.java:186)
    at oracle.bam.common.threading.threadpool.ThreadPoolController$PoolQueueItem.processWorkRequest(ThreadPoolController.java:154)
    at oracle.bam.common.threading.threadpool.ThreadPoolController$PoolQueueItem.run(ThreadPoolController.java:128)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)
    The alert history shows both actions
    And also one more question related to alerts:
    Suppose we have selected rule as status =fail and flag =y , frequency 3 secs
    Then until the status is fail and flag is y the action should occur every 3 secs
    The behavior I see right now is
    whenever I update the Data object and condition meets the action happens
    but the rule i select was data field d meets criteria not data field update as criteria

    I replied to you by email but for the benefit of others, I will paste email content here:
    Let me take the questions one by one:
    1. Regarding Webservice action issue, I am going to need little more information as:
    a) Have you tested the webservice with some external tool like soapui using the same endpoint url and same payload to see if it works fine?
    b) Is it a secure webservice?
    c) Does it require any policy to be attached?
    d) If response to a) is yes, and if it is okay with you, can you share the webservice wsdl url with us along with the operation to be selected and the payload?
    2. On Alert behavior:
    Alerts by design fire only for the runtime changes that happen to the dataobject and satisfy the condition you choose and not for the conditions that are satisfied by the data that exists before alert is created and activated. So, in your case, not only for update but even for insert and delete of data, alert will fire if condition is met but the requirement is those changes should be happening to the dataobject after alert has been activated.
    Moreover, I would also like to make the behavior of Frequency Constraint clear here - I am copying the below text from official BAM Alerts doc, this will make it clear that frequency constraint doesn't mean that every x seconds, alert will evaluate the condition but rather that if within x seconds, condition gets met multiple times, alert will fire only once.
    Frequency Constraint
    The Frequency Constraint feature prevents a user's email inbox from being flooded with alerts by limiting the number of alert messages that can be sent out during a given time interval.
    Frequency Constraint can be edited only if it is appropriate for the event selected. otherwise it is disabled. It can be set to a value of time which could be in seconds, minutes, or hours.
    This limits the number of times the rule launches in a given time period. With real-time data, transactions can occur every millisecond, so alerting frequency must be controlled.

  • Problem building a synchronous web service in XI 3.0

    The scenario: HTTP Client on my desktop <-> XI 3.0 Plain
    HTTP Adapter <-> XI 3.0 RFC Adapter -> RFC enabled
    function module in a 4.6C backend system
    I have been testing this interface with different tools.
    Below list the testings I have done and the results.
    1. Using an HTTP client with QoS=Exactly Once: The HTTP
    client HTML code is attached. If I run this client with
    QoS = Exactly Once, the client receives successful return
    code 200 and the request does go into the backend system.
    But no response payload comes back to the client. Looking
    into the XI message monitoring, I could see the request
    message but there is no response message.
    2. Using the HTTP client with QoS=Best Effort: If I run
    this client with QoS = Best Effort, the client receives
    successful return code 200 with the response payload
    having value 1 (wrong value) in the response data field,
    but the request has never reached XI. Looking into the XI
    message monitoring, I could not find the request message.
    3. Using the Test Message tab of the integration engine
    under component monitoring in RWB with QoS=Exactly Once:
    After sent the test tool shows a Message sent with a
    green light. The message has reached XI and the backend
    system. A response message is also found in XI but it
    says "Acknowledgement not possible".
    4. Using the Test Message tab of the integration engine
    under component monitoring in RWB with QoS=Best Effort:
    After sent the test tool shows a Message sent with a
    green light. But no message can be found in XI message
    monitoring for this request.
    I could not find much discussion on using the plain HTTP
    adapter. Not sure what I did wrong and how I can
    troubleshoot. The HTTP client HTML code is attached below
    if you like to give it a try. Any hint or pointer to
    related discussion will be very appreciated.
    <html>
    <script type="text/javascript">;
    <!--
    function button1_onclick() {
    var result = "Result: ";
    var payload = "<?xml version="1.0" encoding="UTF-8" ?>";
    // escape "http://"
    var senderNamespace = escape(document.MessageParameters.SenderNamespace.value);
    var reqString = "http://"
    reqString = reqString + document.MessageParameters.Server.value+":";
    reqString = reqString + document.MessageParameters.Port.value + "/sap/xi/adapter_plain?";
    reqString = reqString + "namespace=" + senderNamespace;
    reqString = reqString + "&interface=" + document.MessageParameters.SenderInterface.value;
    reqString = reqString + "&service=" + document.MessageParameters.SenderService.value;
    reqString = reqString + "&party=" + document.MessageParameters.SenderParty.value;
    reqString = reqString + "&agency=" + document.MessageParameters.SenderAgency.value;
    reqString = reqString + "&scheme=" + document.MessageParameters.SenderScheme.value;
    reqString = reqString + "&QOS=" + document.MessageParameters.qos.value;
    reqString = reqString + "&queueid=httpclient";
    reqString = reqString + "&sap-user=xiappluser&sap-password=xipass";
    reqString = reqString + "&sap-client=" + document.MessageParameters.Client.value + "&sap-language=D";
    var xhttp = new ActiveXObject("msxml2.xmlhttp");
    xhttp.open ("POST", reqString, false);
    if (document.MessageParameters.Source[0].checked == true) {
    payload = "<?xml version="1.0" encoding="UTF-8" ?> "+ document.MessageParameters.xmlData.value;
    xhttp.send (payload);
    else{
    var xmlDoc = new ActiveXObject("microsoft.xmldom");
    xmlDoc.async=false;
    xmlDoc.load (document.MessageParameters.xmlFile.value);
    xhttp.send (xmlDoc);
    //result = result + "n" + xhttp.responseText;
    result = result + "nhttp-Status:  " + xhttp.status + " " + xhttp.statusText + " nPayload:n" + xhttp.responseText;
    xhttp.close;
    document.MessageParameters.response.value=result;
    //-->
    </script>
    <head></head>
    <body>
    <h3>Client Http Adapter </h3>
    <form name="MessageParameters">
    <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
    <h4>Header</h4>
    <tbody>
    <tr>
    <td width="10%"><label>Server Host</label> </td>
    <td width="22%">
    <!-- Change server and port here -->
    <input type="text" id="host" name="Server"
    value="YourServer" size="20"/> </td>
    <td width="10%"><label>Server Port</label> </td>
    <td width="22%"><input type="text" id="port" name="Port" value="8000" size="10"/> </td>
    </tr>
    <tr>
    <td width="10%">Client</td>
    <td width="22%">
    <!-- Change client here -->
    <input type="text" id="client" name="Client"
    value="100" size="3"/></td>
    <td width="10%"> </td>
    <td width="22%"> </td>
    </tr>
    <tr>
    <td width="10%"><label>Sender Service</label> </td>
    <td width="22%">
    <!-- Change sender service here -->
    <input type="text" id="senderService"
    name="SenderService" value="TravelAgencyCS" size="40"/> </td>
    <td width="10%">Quality of Service</td>
    <td width="22%">
          <select size="1" name="qos">
          <option value="BE">Best Effort (synchronous)</option>
          <option value="EO" selected>Exactly Once (asynchronous)</option>
          <option value="EOIO">Exactly Once in Order</option>
          </select>
    </td>
    </tr>
    <tr>
    <td width="10%"><label>Sender Interface</label> </td>
    <td width="22%"><input type="text" id="senderInterface"
    name="SenderInterface" value="BookingOrdersOut" size="40"/> </td>
    <td width="10%"><label>Sender Namespace</label> </td>
    <td width="22%">
    <input type="text" id="senderNamespace"
    name="SenderNamespace" value="http://sap.com/xi/rkt/CaseStudy/group99"
    size="40"/></td>
    </tr>
    </tbody>
    </table>
    <br>
    <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
    <h4>Optional Parameters</h4>
    <tbody>
    <tr>
    <td width="10%">Sender Party</td>
    <td width="22%"><input type="text" id="senderParty" name="SenderParty"
    size="40"/> </td>
    </tr>
    <tr>
    <td width="10%">Sender Agency</td>
    <td width="22%"><input type="text" id="senderAgency" name="SenderAgency"
    size="40"/> </td>
    <td width="10%">Sender Scheme</td>
    <td width="22%"><input type="text" id="senderScheme" name="SenderScheme"
    size="40"/> </td>
    </tr>
    </tbody>
    </table>
    <br>
    <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
    <h4>Payload</h4>
    <tbody>
    <tr>
    <fieldset style="padding: 2">
    <td width="50%"><input type="radio" name="Source" value="Textarea" checked="checked"/>Type in XML</td>
    <td width="50%"><input type="radio" name="Source" value="File"/>Upload File</td>
    </fieldset>
    </tr>
    <tr>
    <td width="50%"><textarea name="xmlData" rows="10" cols="60"><a>test</a></textarea></td>
    <td width="50%"><input type="file" name="xmlFile" size="40"/> </td>
    </tr>
    </tbody>
    </table>
    <p>
    <input type="button" value="Send" id="button1" name="button1" LANGUAGE="javascript" onclick="button1_onclick()"/>
    </p>
    <hr/>
    <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
    <h4>Result</h4>
    <tbody>
    <tr>
    <td width="50%"><textarea name="response" rows="5" cols="60"></textarea></td>
    </tr>
    </tbody>
    </table>
    </form>
    </body>
    </html>

    After reading Michal Krawczyk's weblog on why I cannot see some of my messages in the SXMB_MONI and changed the XI logging_sync setting, now I can see logging of my sychronous messages.  Thanks to Michal now I can continue with my PoC.

  • Is synchronous scenario possible with JDBC & JMS adapter?

    Suppose,JDBC adapter is updating a table or deleting some entry from a table.Can we have an acknowledgement back that the work has been done successfully??
    same qstn for JMS adapter also..
    Suppose JMS adptr is communicating with any messaging system,can we have acknowledgement back?

    Jms Adapter supports Asynchronous scenarios only but If u want to use Synchronous then possible with Standard module beans :
    For ex: JMS to Rfc synchronous scenario:
    In id:
    Sender jms adapter supports Asynchronous scenarios so we have to use standard module beans in Module tab.
    Like :
    AF_Modules/RequestResponseBean -> 0
    CallSapAdapter
    AF_Modules/ResponseOnewayBean -> 1
    And Provide  values in configuration:
    0 -> passThrough -> true
    1 -> receiverChannel ->provide RECEIVER JMS adapter name ( have to create one more JMS receiver communication channel for responce )
    1 -> receiverService ->provide receiver adapter service name (that is  provide sender business component because need response for sender )
    jdbc adapter :
    http://www.****************/Tutorials/XI/SOAP2JDBC/Page1.htm

  • Synchronous BPM starting with HTTP Request

    Hello there,
    I have a requirement to call 3 web services, consolidate their responses, and sending back the results to the caller (a web page in this case).  The request is coming over HTTP (synchronously...the file sender scenario that is on SDN does not apply here). 
    I have tried the sync/async bridge to prototype this synchronous scenario, but I get the following error.
    "The process does not support the given synchronous interface or does not support synchronous messages"
    Since the Receive step only allows Async and Sync/Async Bridge options (which doesn't really apply here because all of my web service calls are synchronous), and off course the HTTP as well.  What options do I have to build this scenario via BPM (or without BPM)?
    Looking forward to the replies.
    Thanks

    Hi,
    I'm trying to build similar ccBPM process which processes a synchronous message sent from XI SOAP sender to a Web Service. Both sender and receiver systems are synchronous.
    Instead of going directly to the Web Service receiver, I would like the message to go through ccBPM.
    Can you give a sample for such process ?
    What receive step mode should be used - "Asynch" or S\A "bridge" ?
    I tried to receive the message using "Asynch" mode and than send it with "Synch" mode.
    A runtime error is generated:
    <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
    <SAP:Category>XIAdapter</SAP:Category>
    <SAP:Code area="BPE_ADAPTER">SYNCHONOUS_MESSAGE</SAP:Code>
    <SAP:P1 />
    <SAP:P2 />
    <SAP:P3 />
    <SAP:P4 />
    <SAP:AdditionalText />
    <SAP:ApplicationFaultMessage namespace="" />
    <SAP:Stack>The process does not support the given synchronous interface or does not support synchronous messages Exception CX_WAPI_DEF_PROPERTY_NOT_FOUND occurred (program: SAPMHTTP, include: , line: 0).</SAP:Stack>
    <SAP:Retry>N</SAP:Retry>
    </SAP:Error>
    Please help !
    Thanks
    Orit

  • Issue with OSI PI WCF Web Service with wshttpbinding

    Hi Experts,
    System Details:
    SAP MII 14 SP4
    OSI PI Web Service: PITimeSeries
    I am having issue when trying to call OSI PI web service using http post. it is returning status 0 when i am using exception handler in BLS.
    Same web service works fine with basichttpbinding (SOAP 1.1)  but with wshttpbinding (SOAP 1.2) it is giving error.
    Following are Web config binding details for web service.
          <wsHttpBinding>
            <binding name="wsBinding_2011" sendTimeout="00:01:00" receiveTimeout="00:10:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
              <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
              <security mode="Message">
                <message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" establishSecurityContext="true" />
              </security>
            </binding>
          </wsHttpBinding>
    I am not sure it could be the issue with passing windows credentials.
    Did anybody consumed WCF web service with wshttpbinding with security mode as Message and clientCredentialType as Windows.
    Also i was trying to pass MYSAPSSO2 SSO token to service in http post but first i am not sure if this is correct windows token and second which header property of service should be mapped and i am not sure that I am going into correct direction or not.
    Please let me know what i am missing.
    I have tried following other options and tools:
    SOAP UI: basichttpbinding works fine for wshttpbinding receiving Internal Server error in log and Response as
                      The security context token is expired or is not valid.
    MII Web Service Action Block: basichttpbinding works fine for wshttpbinding not able to configure url through wizard because as per                                                                              my discussion with other MII experts MII does not support SOAP1.2. that is one reason for using http post.
    WCF Storm: both bindings works fine (There is option to select windows authentication and Impersonation level as delegation)
    WCF Test Client: Both bindings works fine
    Any help is appreciated.
    Thanks & Regards,
    Manoj Bilthare

    Hi Sam,
    The web service is valid following are details of testing on various tools.
    SOAP UI: basichttpbinding works fine for wshttpbinding receiving Internal Server error in log and Response as The security context token is expired or is not valid.
    MII Web Service Action Block: basichttpbinding works fine for wshttpbinding not able to configure url through wizard because as per my discussion with other MII experts MII does not support SOAP1.2. that is one reason for using http post.
    WCF Storm: both bindings works fine (There is option to select windows authentication and Impersonation level as delegation)
    WCF Test Client: Both bindings works fine
    Please let me know if additional details required.
    Thanks & Regards,
    Manoj Bilthare

Maybe you are looking for

  • Why can't Verizon fix ordering for current Verizon customers?

    It should be EASY to buy a Verizon offered phone off the Verizon website as a VERIZON CUSTOMER! I'm autopay prepaid.  All I want is to purchase the Samsung G4 refurb off the site for the free deliver and activation.  However, the system says I have t

  • Instrument i/o assistant express

    hi, i hav all ready installed the driver cds along the the labview7.1 software but i m not able to use the instrument i/o assistant express in my application then plz guide me how can get it.

  • Repeating frame(s) not continuing to next page

    Here is what I have: grp 1 r-frame 1 grp2 r-frame 2 grp3 r-frame 3 grp4 r-frame 4 r-frame 5 r-frame 6 r-frame 7 grp1 r-frame 1 will not continue to the next page when I have multiple grp3 r-frame3 records (there will be 1 record for 1 of the frames u

  • How to delay background processing

    Hi, I am writing a submit statement in the Delivery Order exit USEREXIT_SAVE_DOCUMENT_PREPARE. It triggers on saving the Delivery. The submit statement calls my Z Program in background (Im using Job Open and Job Close). My requirement is that once th

  • Stateless EJB Webservices vs Endpoint.publish() API for a production system

    Hello, I am currently designing an SOA JEE application using JAX-WS Webservices for the synchronous calls and JMS (MDB) for asynchronous access. It is packaged in a EAR containing one EJB module (no WAR), so I decided first to publish the Webservices