OSB Transaction context (QoS exactly once)

Hi all,
First of all, excuse me my poor english...
I need to understand how develope transactional services with OSB.
My unit test are 2 proxy services : first with JMS/XA transport (with response requiered) with 2 Service Callout to transactional EJB with exactly once; second proxy routes the first with HTTP transport with exactly once.
When services ends ok, or i reply with error in error pipeline, commit is executed; but if services failed, services no reply nothing until timeout proxy....then rollback is executed....
In conclusion, i don't know how i develope transactional proxy services....i choose bad transports?, i don't understand pipelines?...i'm very confused...
Thank you all

Hi,
i tested it without test console with no different results...and test console show me :
Response Data :
<con:metadata xmlns:con="http://www.bea.com/wli/sb/test/config">
<tran:headers xsi:type="http:HttpResponseHeaders" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<http:Content-Type>text/xml</http:Content-Type>
</tran:headers>
<tran:response-code xmlns:tran="http://www.bea.com/wli/sb/transports">1</tran:response-code>
</con:metadata>
Invocation Trace :
System Error Handler
$fault: <con:fault xmlns:con="http://www.bea.com/wli/sb/context">
<con:errorCode>BEA-381501</con:errorCode>
<con:reason>
JmsAsyncMessageTable timed out message with id 2aa517390000011f37a92110ffff8035
</con:reason>
<con:location>
<con:node>RouteNode1</con:node>
<con:path>response-pipeline</con:path>
</con:location>
</con:fault>
Always i try to route (tunneling http) with exactly once to proxies JMS/XA, if proxy throws exceptions, in http proxy i see this : "JmsAsyncMessageTable timed out message"....
I'm disoriented...
Thx you very much.

Similar Messages

  • Exactly once(option) in QOS filesender

    hi.
    i want to know the difference between EXACTLYONCE,EXACTLY ONCE IN ORDER,BEST EFFORT options in quality of service.
    waiting for your response.
    cheers.
    seeta ram.

    hi michal.
    thanks for your answer.
    but i just want clear my doubt.
    here in my scenarion iam testing file to bapi by putting exactly once in(QOS)Of file sender adapterand the procesing mode of sender file adapter as test.
    but i forgot to deactivate file sender adapter and now iam getting ptoblems with ICM IN MESSAGE MONITORING(SXMB_MONI)
    ITS SHOWING IN XMLPAYLOAD AS
    400</SAP:P1>
      <SAP:P2>ICM_HTTP_CONNECTION_FAILED</SAP:P2>
      <SAP:P3 />
    <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack>Error while receiving by HTTP (error code: 400, error text: ICM_HTTP_CONNECTION_FAILED)</SAP:Stack>
      <SAP:Retry>A</SAP:Retry>
      </SAP:Error>
    wat would be the reason for this.
    waiting for yur answer.
    cheers.
    seeta ram.

  • OSB transactions

    I'm trying to create simple web service-based proxy service that publishes incoming data ($body) into two JMS queues. What I want to achieve is a transactional behaviour of such a service. I want to enqueue incoming message either in both queues or in none of them.
    Proxy service
    - is WSDL based
    - contains Pipeline Pair node
      - in request pipeline there is Stage
        - Stage contains two Publish actions
          - each Publish action uses different business service
            - business services are messaging services using XA connection factory
          - both Publish actions contains Routing Options with QoS set to Exactly Once
    I simulate error using security policy settings on JMS queues. When I forbid access to the first queue only, everything is OK. I receive correct error message (soap fault with Access denied to resource ...) from web service proxy service and the message is not enqueued in the first JMS queue nor in the second one. However, when I forbid access to the second queue only, I still reveice correct error message, but the message is enqueued in the first JMS queue.
    I want proxy service to rollback publish actions in case of any error raised during request. Does anybody know how to do it? Any help would be appreciated.
    I have to say that the documentation could discuss this problem a little bit more. I didn't find any complex information about transactions in OSB. Only a few bits here and there. So I tried many variations of my proxy and business services. I even tried to split my proxy service into more proxy services according to advice found at http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/modelingmessageflow.html
    "To have an HTTP proxy service publish to a JMS queue but have the publish action rollback if there is a exception later on in the request processing, split the proxy service into a front-end HTTP proxy service and a back-end JMS proxy service. The publish action specifies a qualityOfService element of exactly-once and uses an XA connection factory."
    My environment:
    Oracle Service Bus 10gR3
    WebLogic 10gR3
    2-node cluster
    Linux OS
    Edited by: hisaak on 11.2.2009 3:42

    Juan Luis,
    Solution is,
    Step1
    Create a JMSProxy1(XA/Req-Resp)
    RequestQ
    ResponseQ
    Step2
    Create a BS (JMSBS2/ReqOnly) with endpoint URI=ResponseQ (Use correlation ID, and XA connection factory)
    1) Create a Proxy (JMS/XA/REQRESP)
    2) In the error handler
    a) use a publish action configured with BS created in Step2. Use QOS=Best effort so that It doesn't participate in the transaction.
    b) After publish using java call out , mark transaction for roll back or use action raise error.
    httpProxy---->JMSBS1----(RequestQ)----JMSProxy1(XA/Req-Resp)---In Error handler----Publish to JMSBS2-- raise error(rolls back the transactions)
    JMSBS1------<(ResponseQ)---------will receive the message sent by JMSBS2 when there is error in pipeline because we use QOS=BestEffort
    JMSBS1------<(ResponseQ)---------will receive the message from the response of JMSProxy1 if no error is raised in pipeline
    In both cases we have the response back to the http proxy. By this solution we can rollback the actions but will still get the response no matter.
    Only limitation is we should JMS correlation ID for JMSBS1. Read JMS correlation ID from Proxy and use the same Correlation ID in the publish action(JMSBS2) in JMSProxy1.
    Let me know if any clarifications are required
    Thanks
    Manoj

  • Exactly Once In Order ..in File adapter ???

    Hi Xi friends..
    in my file to idoc ..
    i am getting files as wear*.xml .
    i think , i have  to use Exactly once in Order in Communication Channel  to process multiple files in order starting with wear*.xml
    if i select Exactly Once In Order..
    i have to give Queue Name..
    please tell me which queue name to be given here..
    please tell me how to use this Exacly Once in Order option..
    thanks and regards
    Ram

    Hi Ram,
    The XI supports Synchronous and Asynchronous delivery; in XI terms, these
    are described with a Quality of Service (QoS) descriptor. The XI supports
    QoS Best Effort (BE), Exactly-once (EO), and Exactly-once-in-order (EOIO).
    These are equivalent to RFC types Synchronous RFC (sRFC), Transactional
    RFC (tRFC), and Queued RFC (qRFC), respectively.
    EOIO (Exactly Once In Order):
    Messages are delivered with the same queue names (supplied by the application) in the same sequence that they were sent from the sender system. Message processing is asynchronous in this case.
    In the case of quality of service BE, an error occurs if more than one receiver is determined for a message. In the case of delivery types EO and EOIO, the message is copied correspondingly and sent to the individual receivers.
    Ckeck this link
    http://help.sap.com/saphelp_nw04/helpdata/en/41/b714fe5ffc11d5b3ea0050da403d6a/frameset.htm

  • OSB Transaction RollBack

    HI,
    I have a scenario in which i have to rollback the db transaction .
    scenario : I have proxy service which intern call one DB Business service and one BPEL sync service . if the BPEL sync service is not working or down for some reasons the DB insert which i have performed before calling the BPEL service should got rollback.  i have done the following but no luck.
    1 . proxy service -- > enabled the transaction required check box in message handling.
    2 .added  exactly once QOS for business services but transaction was not rollback and giving below error:
                           "Setting quality of service to Exactly Once in service callout action is not supported for service BusinessService "

    HI,
    I have a scenario in which i have to rollback the db transaction .
    scenario : I have proxy service which intern call one DB Business service and one BPEL sync service . if the BPEL sync service is not working or down for some reasons the DB insert which i have performed before calling the BPEL service should got rollback.  i have done the following but no luck.
    1 . proxy service -- > enabled the transaction required check box in message handling.
    2 .added  exactly once QOS for business services but transaction was not rollback and giving below error:
                           "Setting quality of service to Exactly Once in service callout action is not supported for service BusinessService "

  • RFC Exactly once in order

    I deployed EJB to enable RFC Sender Adapter to work in exactly once in order
    this is the code I used :
    package com.netafim;
    import javax.ejb.SessionBean;
    import javax.ejb.SessionContext;
    import javax.ejb.CreateException;
    import com.sap.aii.af.mp.module.ModuleContext;
    import com.sap.aii.af.mp.module.ModuleData;
    import com.sap.aii.af.mp.module.ModuleException;
    import com.sap.aii.af.ra.ms.api.DeliverySemantics;
    import com.sap.aii.af.ra.ms.api.*;
    @ejbLocal <{com.netafim.EOIORfcLocal}>
    @ejbLocalHome <{com.netafim.EOIORfcLocalHome}>
    @stateless
    @transactionType Container
    public class EOIORfcBean implements SessionBean {
            public void ejbRemove() {
            public void ejbActivate() {
            public void ejbPassivate() {
            public void setSessionContext(SessionContext context) {
                    myContext = context;
            private SessionContext myContext;
    Create Method.
            public void ejbCreate() throws CreateException {
                    // TODO : Implement
            public ModuleData process(ModuleContext moduleContext,ModuleData inputModuleData, String queueName)
                    throws ModuleException {
                            try {
                            Message msg = (Message)inputModuleData.getPrincipalData();
                            msg.setDeliverySemantics(DeliverySemantics.ExactlyOnceInOrder);
                            msg.setConversationId(queueName);
                            inputModuleData.setPrincipalData(msg);
                    } catch (Exception e) {
    //                 raise exception, when an error occurred
                    ModuleException me = new ModuleException(e);
                    throw me;
    //                 return XI message
                    return inputModuleData;
    when I excute the function I get the following error in the comuunicatin chanel monitoring  : no paramter was found.
    in the paramters in the adapter modules tab I just wrote the queue name
    for example : ( its supposed to be a string )
    RFC******************queueName************XBIO_0001
    still the module doesnt reconzie it.
    Is the code above will add the functionaly of Excatly once in Order to the RFC Sender Adatper ? whats wrong with the paramters ?
    thx,Shai

    Hi,
    <i>
    data is sent "exactly once in order".</i>
    >>>I am not sure about this document which assures it is always EOIO.
    I am sure that using proxy communication u can do the quality of service as EOIO.
    To maintain the sequence in the client ABAPproxy with ABAP code-http://help.sap.com/saphelp_nw2004s/helpdata/en/65/40c9a4a1fa476288ac61b5fcc6bbde/content.htm
    Regards,
    Moorthy

  • Receiver Mail adapter Exactly Once

    Hi,
    I've setup my scenario RFC (trfc for exactly once QOS ) ->  Mail (receiver)
    Now I'm testing what happens when the smtp server is down.
    In message monitor (sxmb_moni) , the message is successful. In comm chanel monitoring, I can see the message is in error.
    The error states that "The message status was set to NDLV." but nothing is sent back to integration engine ...
    The adapter retries to send the message 3 times but then just stops...
    Q1 : How do you resend the message after the 3 retries ?
    Q2 : How can you know this error arrived if the message is successful in sxmb_moni ?
    Thanks

    Hi Thierry,
    If you see that the message passed in sxmb_moni, this indicates that the mapping was successful.  Your problem is happening at the adapter engine level, which you access through Message Monitoring in the Runtime Workbench.  It is there that you can try to resend the message.
    Mike

  • Quality of Services "Exactly Once in Order"

    Hi,
    I have several integration using iDOC output R / 3.
    This integration into the Integration Builder them removed brand "Maintain Order At runtime" (Quality of Services - Interface Determination) to be executed in parallel, but when they reach the engine J2EE appear with the Quality of Services as "Exactly Once in Order."
    Why this happens with iDOCs? . With RFC do not have this problem.
    Best Regards
    Julian.

    Hi
    I have been reviewing the integrations that run in parallel and gave the impression that really do not run in parallel (Quality of Services "Exactly Once"), but that the channel receiver is taken so that the previous interface ends of inserting data into the receiver.
    If open the message and revise the log, the first message that arrives is in this state:
    "JDBC adapter receiver channel JDBC_XXX_YYY_Receiver: started processing; Party, service ZZZ_BS "
    But the following is not enough to reach this state and it is with this log:
    "Receiver JDBC adapter: started processing; QoS required: ExactlyOnce "
    One step before the first message, only runs the next step when the first message ends to be processed by the adapter.

  • How to execute a commit and wait via bol transaction context?

    Hi All,
    Currently a service contract is created via bol objects.
    Once all the objects are created, the modify() method is called bol_core instance.
    After that, the bol transaction context is assigned and the save() and commit() methods are called.
    This works fine, but the commit does not wait for the database to be updated before moving to the next steps.
    How can i get something like the 'commit work and wait' statement via the bol transaction context?
    would a commit work and wait statement work the same?
    regards,
    Leng

    Hi,
    It is a CRM specific issue.
    so the code sniplet is:
    go_bol_core = cl_crm_bol_core=>get_instance( ).
      go_bol_core->load_component_set( 'BT' ).
    create factory for BTorder
      go_bol_factory = go_bol_core->get_entity_factory( 'BTOrder' ).
      gs_param-name  = 'PROCESS_TYPE'.
      gs_param-value = 'ZSC1'.
      APPEND gs_param TO gt_param.
      go_btorder ?= go_bol_factory->create( gt_param ).
    send changes
      go_bol_core->modify( ).
      go_transaction_context = go_btorder->get_transaction( ).
        lv_success  = go_transaction_context->save( ).
        IF lv_success EQ abap_true.
          go_transaction_context->commit( ).
    so after the commit, it does not commit to the db straight away.
    i asked a collegue, and i got this:
    Using the BOL commit should perform the commit in one of two ways u2013 depending on the how the application (i.e. the GENIL layer has been implemented). It will either do a commit work and wait, or use a local update task and commit work statement. So based on this the update should be synchronous i.e. it should wait for the update to finish. In the case of the one order transaction it basically runs the update in local task.
    Basically i don't understand why it is behaving as it is.

  • Transaction Context Propagation

    Can transaction context be propagated from one WebLogic Server to another? If yes, what is then the relationship between the two Transaction Managers in each server?
              

    Zhenxin,
              Transaction can be propagated between multiple instances of the server.
              In releases 5.1 and below, all databse access in this case was delegated to 1 jdbc connection in 1 pool on 1 server, and the database transaction manager was used.
              In 6.0 and above, the transaction is co-ordinated by the TM in one instance of the server, which calls on the remote instances during the pre-commit and commit phases.
              I believe that currently the 1st server to be invoked in the transaction is the one who gets the commit responsibility, but this is an implementation detail that may
              change in future.
              I hope that helps.
              Regards,
              Peter.
              Got a Question? Ask BEA at http://askbea.bea.com
              The views expressed in this posting are solely those of the author, and BEA
              Systems, Inc. does not endorse any of these views.
              BEA Systems, Inc. is not responsible for the accuracy or completeness of the
              information provided
              and assumes no duty to correct, expand upon, delete or update any of the
              information contained in this posting.
              Zhenxin Wang wrote:
              > Can transaction context be propagated from one WebLogic Server to another? If yes, what is then the relationship between the two Transaction Managers in each server?
              

  • WL - MQ bridge in Exactly-Once mode not working

              I cannot get a message bridge from an MQ queue to a JMS queue to work in exactly
              once mode. I followed the directions in the 'Using Foreign JMS Providers with
              WebLogic Server' whitepaper (It works fine for atmost once). Once I configured
              weblogic correctly, I had a problem with made me think that I needed to use the
              class MQXAQueueConnection instead of MQQueueConnection as listed in the whitepaper.
              After that, I got an exception like 'XAResource not found.' Am completely stuck
              at this point.
              Does two phase commit actually work with WLS 6.1 and MQ 5.2 (?) ?
              

    Does this help?
              http://edocs.bea.com/wls/docs61/faq/msgbridge.html#500395
              Doug McGrath wrote:
              > I cannot get a message bridge from an MQ queue to a JMS queue to work in exactly
              > once mode. I followed the directions in the 'Using Foreign JMS Providers with
              > WebLogic Server' whitepaper (It works fine for atmost once). Once I configured
              > weblogic correctly, I had a problem with made me think that I needed to use the
              > class MQXAQueueConnection instead of MQQueueConnection as listed in the whitepaper.
              > After that, I got an exception like 'XAResource not found.' Am completely stuck
              > at this point.
              >
              > Does two phase commit actually work with WLS 6.1 and MQ 5.2 (?) ?
              >
              >
              

  • FTP - Sender File Adapter - Exactly Once In Order

    We are running SP10 on PI7.0
    I have a file (FTP - content conversion) to idoc scenario and this works well apart from the communication channel picking up the files in the wrong order.
    I have set to Exactly Once In Order, and the nuemrically file is being picked up in the correct order, however we wish to pick the file up by time and date stamp.
    If I flag the Adapter Specific Message Attributes - and Source File Time Stamp, will this then process the files by timestamp instead of by File name?
    How else can we get the files to process by time created?

    but this option is valid for NFS transport protocol
    http://help.sap.com/saphelp_nw70/helpdata/en/e3/94007075cae04f930cc4c034e411e1/content.htm
    &#9679;      Processing Sequence (for transport protocol File System (NFS))
    If you used placeholders when specifying the file name, define the processing sequence of the files:
    &#9675;       By Name: Files are processed alphabetically by file name.
    &#9675;       By Date: Files are processed according to their time stamp in the file system, starting with the oldest file.
    Message was edited by:
            Prabhu  S

  • How to Resend OR Cancel Exactly Once Messages

    Dear all,
    I have nearly 20 messages with status "Holding" under adapter engine message monitor.
    These interfaces are Exactly Once type. I am trying to Resend or cancel them. Nothing worked here.
    When i check the error reason for the Holding status message, it says warning " Empty document found. Proceed without sending message"
    Referred this weblog  /people/stefan.grube/blog/2006/04/27/how-to-deal-with-stuck-eoio-messages-in-the-xi-30-adapter-framework
    Please suggest me how to deal with these...
    Regards
    Edited by: Bhavana Ch on Feb 14, 2011 5:56 PM

    Hi Bhavana,
    I came to a similar error situation when whether restarting nor canceling was possible and I was looking for an solution instead of restarting the whole java stack.
    We restart the messaging service of the java engine and this solves the error, canceling or restart was possible afterwards. The correct service should be XPI Service: Messaging System in Netweaver Adminstrator -> Operation Management -> Systems -> Start&Stop -> Java EE Service, unfortunately I lost my remarks of this error situation, so you have just to try it.
    If this will not solve the issue, I think you have to go for restarting the whole java server.
    please let me know if this solve the error.
    Regards,
    Jochen

  • TO Get  Ensuring Exactly Once Processing data from sender soap adapt

    To XI Specialists
    Now Im trying to get Ensuring Exactly Once Processing data from sender soap adapteter.
    My plan is that send data from Receiver adapter, to Sender adapter by SOAP.
    (1st interface is ABAP to Soap "BE", 2nd interface is Soap to File "EO")
    Sender SOAP adapter will returun Ensuring Exactly Once Processing data.
    (see SAP HELP, http://help.sap.com/saphelp_nw70/helpdata/en/69/a6fb3fea9df028e10000000a1550b0/frameset.htm )
    AND I want to get Ensuring Exactly Once Processing data, I want to determine what to do in ABAP proxy.
    SO I made and tested 2interface. but error occuered.
    I checked the error, and Now I know what is the cause.
    The cause is that Ensuring Exactly Once Processing data didnt enter the payload, at Receiver Adapter.
    1st interface coulnt get the payload data, so mapping error occuered....
    Please give me help,
    <b>"How to get Ensuring Exactly Once Processing data From Sender SOAP ADAPTER"</b>
    or
    <b>"How to enter Ensuring Exactly Once Processing data into Payload of Receiver SOAP ADAPTER"</b>
    and more excelent way....
    our XI is version7.0 and SP10
    Please teach me your wisdom!
    Naoki Kurihara

    I seeked and I noticed that
    maybe I catched the message but the message dont have payload.
    so I got no_payload error.
    I checked SAP note.
    I noticed, no_payload error will be managed to nomal message at SP13....
    my XI is SP12....
    I ll seek for another way!!
    Thank you! noaki

  • Send message in a non-transactional context

    I've coded a simple Log4j appender to send error messages to a queue (JMSAppender provided by Log4J is not good for me because it use a publish/subscrive model and use topics instead of queues); the appender has to work in a non transactional context, so the appender has to send always the message to queue although the global transaction rollbacks; I've create queue session settings transacted parameter to false and acknowledgeMode to AUTO_ACKNOWLEDGE , but message is not delivered to queue if the global transaction, started by an EJB Stateless Session Bean, rollbacks; in my environment (IBM WebSphere and IBM MQ), queue connection factory is configured no-XA resource.
    Any suggestions?
    Below the source code.
    Thanks in advance
    context = new InitialContext();
    queueFactory = (QueueConnectionFactory) context.lookup(getQueueConnectionFactoryBindingName());
    queueConnection = queueFactory.createQueueConnection();
    queueSession = queueConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
    queue = (Queue) context.lookup(getQueueBindingName());
    queueSender = queueSession.createSender(queue);
    queueConnection.start();Rob

    I've coded a simple Log4j appender to send error messages to a queue (JMSAppender provided by Log4J is not good for me because it use a publish/subscrive model and use topics instead of queues); the appender has to work in a non transactional context, so the appender has to send always the message to queue although the global transaction rollbacks; I've create queue session settings transacted parameter to false and acknowledgeMode to AUTO_ACKNOWLEDGE , but message is not delivered to queue if the global transaction, started by an EJB Stateless Session Bean, rollbacks; in my environment (IBM WebSphere and IBM MQ), queue connection factory is configured no-XA resource.
    Any suggestions?
    Below the source code.
    Thanks in advance
    context = new InitialContext();
    queueFactory = (QueueConnectionFactory) context.lookup(getQueueConnectionFactoryBindingName());
    queueConnection = queueFactory.createQueueConnection();
    queueSession = queueConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
    queue = (Queue) context.lookup(getQueueBindingName());
    queueSender = queueSession.createSender(queue);
    queueConnection.start();Rob

Maybe you are looking for

  • Classes without packages not accepted by ejbc compilation ?

    Hey guys ... I noticed something which I found unusual...I mite be missing something out here When ejbc generates the Bean IMPL class , it does not put any import statements in the generated java file but references all the classes in the Bean with t

  • My iPhoto on my mac keeps force closing as soon as it begins to open.

    My iPhoto keeps closing. I have lots of videos and pics that i do not want to lose on there. Can someone please help me out on trying to solve this problem.

  • Should I store my cr2 files in the aperture library?

    I have noticed aperture slowing, pausing and even crashing recently. I was wondering if storing too many cr2 files in the aperture library might cause this. At this time I have a little over 6000 cr2 files in the aperture library.

  • Basic qs on Asynchronous process

    Hi, I am curious to know that how re-tryable exception happens. I designed below process and couldn't come to any conclusion: BPEL Process 1 (Aync) -> ESB 1 (Sync) -> ESB 2 ( Async) -> BPEL (Sync) Now here when i put my BPEL service down and initiate

  • How do I download a free Adobe Reader?

    I received a notice to download Adobe Reader XI.  I foolishly thought it was an upgrade and deleted my Adobe 5.0.  I cannot open the XI and now have no pdf reader.