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

Similar Messages

  • 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.

  • 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 "

  • Binding Fault in OSB

    How to simulate Binding fault in OSB
    1. Created proxy service based on a port in WSDL
    2. Created Business serive
    3. Proxy service invokes BS through route node.
    Tried below options to get binding fault.
    1. gave invalid end point URL ( invlaid servlet-context ) IP and port are valid
    2. gave URL of service which is based on a different WSDL
    In above cases I got BEA-380000 . In below link ther is a error code for binding BEA-382103 : General binding error while processing outbound response.I would like to know when this error code will be raised.
    http://download.oracle.com/docs/cd/E13171_01/alsb/docs25/consolehelp/errorcodes.html

    Hi,
    could not dispatch message because there is no active transaction.Are you trying to have OSB transaction propagated to BPEL? If that's the case you need to check this:
    1. On the composite.xml you have to add the property transaction=required for yor BPEL
    2. On the OSB proxy server you need transaction required box checked (message handling)
    3. On the service callout (or publish, or route) for your BPEL you need to add Routing Options Qos = Exactly-once
    Hope this helps...
    Cheers,
    Vlad

  • Is DSP transport will be depricated in future OSB releases?

    Hi,
    Could somebody from product management team comment on that statement (Oralce OSB 11g):
    "3.1.2 DSP Transport Configuration Page (Business Services)
    Note: The DSP transport is being deprecated and will be removed from future releases"
    please see the refrence on the note: http://download.oracle.com/docs/cd/E14571_01/doc.1111/e15866/transports.htm
    What would be replacement if we want to make transactional calls?
    Thank you,
    Vadim
    Edited by: vkoustov on May 16, 2011 3:08 PM

    This is the ODSI forum - you'll need to find someone from OSB to answer that - looks like the SOA Suite forum is the place to ask. SOA Suite
    With a webservice business service to ODSI, the OSB transaction would not be propagated to ODSI, but if the ODSI call threw an unhandled exception, it seems that would cause the OSB transaction to abort.

  • Some questions with respect to OSB 11g

    Hi,
    I am quite new to OSB 11g and have some queries.
    1. If a SOA Composite transaction has been rolled back, how would be reflected in OSB. Would there be any retries?
    2. For a composite to use a proxy service, is it a must to use a direct binding reference of OSB? Can't SOA composite simply consider a proxy service a generic web service?
    3. Where are the debugging information written to? Can you control what is written to the debugging file? Can you specify filters,level of severity? Can you specify what context variables?
    4. Does OSB only runs on WLS and is therefore not hot pluggable on other app servers?
    5. One can create, attach WS-policies to my WSDL web services and enforce them on WLS all without using OWSM. If this is possible then what is the role of OWSM?
    I would really appreciate any help with these queries.
    Regards
    Priya.

    1. If a SOA Composite transaction has been rolled back, how would be reflected in OSB. Would there be any retries?
    If you are calling an OSB Proxy from a SOA Composite and the transaction is terminated and rolled back from SOA Composite then OSB transaction will also be terminated and an error will be logged on OSB side. For retrying I am not sure but there should be an option in the SOA suite composite to retry.
    2. For a composite to use a proxy service, is it a must to use a direct binding reference of OSB? Can't SOA composite simply consider a proxy service a generic web service?
    SOA Suite composite can directly call a WSDL based Proxy Service as a generic web service. I believe it It should also be possible to invoke an XML/HTTP (Any XML Proxy Service) from SOA Suite composite. Although Direct Binding is the preferred option because of performance and security reasons.
    3. Where are the debugging information written to? Can you control what is written to the debugging file? Can you specify filters,level of severity? Can you specify what context variables?
    Debug information will be written into the WLS log files by default. You can log any information you want (context variables or custom data) from a Proxy Service message flow using Log action. You can control the severity of log in the Log Action.
    You can define what level of Logs will be actually written to the log file and set any custom filters on Logs in the WLS Console (Home>Servers>{Your server Name}>Logging>Advanced).
    If you want to enable specific debug logging at the server level(for ex if you want to log transaction details by default), you can do so by enabling needed debug logging at (Home>Servers>{Your server Name}>Debug)
    4. Does OSB only runs on WLS and is therefore not hot pluggable on other app servers?
    Yes OSB is only certified for WLS.
    5. One can create, attach WS-policies to my WSDL web services and enforce them on WLS all without using OWSM. If this is possible then what is the role of OWSM?
    Biggest difference is of Scope. You can very well attach WS Policies to services in OSB but their scope will only be of OSB. OWSM can do so at an enterprise level across various applications. OWSM also provides end to end security and SLA monitoring, easier update of Policies across enterprise etc. For more details on OWSM check out this white paper:
    http://www.oracle.com/technetwork/middleware/webservices-manager/owsm-11g-tech-wp-134065.pdf

  • Stopping DB-Polling-Adapter when failure in mediator

    Hi
    I have a DB-Polling-Adapter that posts data directly to a mediator. When data is readed mediator does a logical delete, e.g 2 for field readstatus. So during reading readstatus is 9 and before 1.
    When a failure happens in mediator (during xsl-transformation) mediator throws failure back to DB-Polling-Adapter. The problem is now that state of readingstatus is still 9 and after each polling sequence adaptor reads and posts same data again and the failure happens also.
    Is there any posibility to send failure into error hospital and to set readstatus to 2, so that adapter doesn't poll the same data on and on? Catching mediator fault in fault-policies doesn't work.
    I found two solutions: 1. Send data from Polling-Adapter to BPEL, 2. Sematron validation but it doesn't cover all posible failures.
    Example failure during transformaiton:
    ORAMED-03303:[Unexpected exception in case execution]Unexpected exception in request response operation "execute" on reference "Convert_JDE-to-Common". Possible Fix:Check whether the reference service is properly configured and running or look at exception for analysing the reason or contact oracle support. Cause:oracle.tip.mediator.infra.exception.MediatorException: ORAMED-01201:[Error in transform operation]Error occurred while transforming payload using "xsl/F0006Collection_To_ProjectsCollection.xsl" for target part "reply".Possible Fix:Review the XSL or source payload. Either the XSL defined does not match with the payload or payload is invalid
    Thx a lot for help.
    Pascal

    Issue solved.
    Setting jca.retry.count=unlimited causes the adapter to behave as we want.
    We had set jca.retry.count = 1 on the mistaken understanding that this related only to a failure to query/poll the database, and that sequence number was updated in a separate context that needed a global transaction to coordinate/rollback.
    We don’t even need to propagate our global transaction from polling adapter to bpel component since all our writes happen in an OSB transaction; Our bpel just (re)throws a fault back to the polling adapter which is enough to trigger retry.

  • Can't enforce sequence with polling adapter when faults

    I'm trying to process records in sequence using a polling adapter and the update sequence table strategy
    I have a polling adapter that invokes a composite app which calls an OSB service over http/soap.
    polling adapter -> composite app -> OSB -> db adapter
    On successful processing, the polling adapter updates a sequence table.
    In the event of a fault, I expect the sequence table not to be updated and the failed record to be tried again on the next polling interval. However, even on failure, the sequence table is being updated.
    My bpel component has the property
    <property name="bpel.config.transaction" many="false" type="xs:string">required</property>
    .. and a catch clause which throws a rollback on remote faults
    The next polling interval picks up the next record and the problem repeats. We have then 'lost' the unprocessed record(s).
    How can I force the polling adapter to block on failed records?
    Thanks
    Garret

    Issue solved.
    Setting jca.retry.count=unlimited causes the adapter to behave as we want.
    We had set jca.retry.count = 1 on the mistaken understanding that this related only to a failure to query/poll the database, and that sequence number was updated in a separate context that needed a global transaction to coordinate/rollback.
    We don’t even need to propagate our global transaction from polling adapter to bpel component since all our writes happen in an OSB transaction; Our bpel just (re)throws a fault back to the polling adapter which is enough to trigger retry.

  • SOA Dependency Flow Tracker

    Hi
    i am looking for a tool / underline product level information that is used to find the flow for SOA Suite components
    [ JMS1 --> BPEL --> Mediator --> JMS2 ] --> Proxy --> JMS3
    <----------------------------SCA-----------------------><--------OSB---------->
    In the above flow, the flow in [..] can be trace from SCA component audit trail / flow.
    Once the messages are put in the JMS Queue2 ; we dont have any flow / visual diagram after that
    i.e., from end-to-end flow as UI.
    what are required to build such a tool / UI.
    Thanks in adv.,
    anvv sharma

    Anvv,
    There is no simple/straight forward option available for it.
    You may consider creating a custom reporting provider for OSB then on top of it, you may build your own reporting dashboard. While listing the report of any OSB transaction, you may include a reference into it which may redirect the page to audit trail of SOA part. By this way on one page user may find the direct link to view the SOA audit trail and tracking/audit information of OSB.
    You may refer -
    http://docs.oracle.com/cd/E28280_01/admin.1111/e15867/reporting.htm#i1034147 (section "47.1 About the Oracle Service Bus Reporting Framework")
    http://docs.oracle.com/cd/E28280_01/apirefs.1111/e15033/toc.htm (package com.bea.wli.reporting)
    Regards,
    Anuj

  • Error while comitting a transaction in oSB. The following is the error stack

    Error while comitting a transaction in OSB. The following is the error stack
    <Apr 20, 2015 12:00:15 AM MDT> <Error> <EJB> <BEA-010026> <Exception occurred during commit of transaction Xid=BEA1-1AE41F1CAE45F2B146FD(296700848),Status=Rolled back. [Reason=Unknown],numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=2,seconds left=120,XAServerResourceInfo[WLStore_SOA_PRDKS_DOMAIN_FileStore_SOA_MS2]=(ServerResourceInfo[WLStore_SOA_PRDKS_DOMAIN_FileStore_SOA_MS2]=(state=new,assigned=none),xar=null,re-Registered = false),XAServerResourceInfo[WLStore_OSB_PRDKS_DOMAIN_FileStore_auto_1]=(ServerResourceInfo[WLStore_OSB_PRDKS_DOMAIN_FileStore_auto_1]=(state=rolledback,assigned=OSB_MS1),xar=WLStore_OSB_PRDKS_DOMAIN_FileStore_auto_11603460297,re-Registered = false),XAServerResourceInfo[weblogic.jdbc.jta.DataSource]=(ServerResourceInfo[weblogic.jdbc.jta.DataSource]=(state=ended,assigned=none),xar=CMSDS,re-Registered = false),SCInfo[OSB_PRDKS_DOMAIN+OSB_MS1]=(state=rolledback),SCInfo[SOA_PRDKS_DOMAIN+SOA_MS2]=(state=pre-prepared),properties=({}),local properties=({weblogic.jdbc.jta.CMSDS=[ No XAConnection is attached to this TxInfo ]}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=OSB_MS1+soaprd-vip-osb-ms1.cos.is.keysight.com:8001+OSB_PRDKS_DOMAIN+t3+, XAResources={eis/wls/Queue, WEDB_EVEREST_OSB_PRDKS_DOMAIN, XREFDS_OSB_PRDKS_DOMAIN, eis/activemq/Queue, CustomSchemaDS_OSB_PRDKS_DOMAIN, MobileApps_CIA_DS1_OSB_PRDKS_DOMAIN, eis/tibjmsDirect/Queue, eis/jbossmq/Queue, eis/Apps/Apps, MobileApps_AOS_MDS_OSB_PRDKS_DOMAIN, MobileApps_AOS_DRDS_OSB_PRDKS_DOMAIN, WSATGatewayRM_OSB_MS1_OSB_PRDKS_DOMAIN, eis/webspheremq/Queue, eis/AQ/aqSample, SBLPROD_OSB_PRDKS_DOMAIN, wlsbjmsrpDataSource_OSB_PRDKS_DOMAIN, eis/aqjms/Queue, CMSDS_OSB_PRDKS_DOMAIN, WLStore_OSB_PRDKS_DOMAIN_WseeFileStore_auto_1, FAP_OSB_PRDKS_DOMAIN, eis/sunmq/Queue, eis/pramati/Queue, FMWAPPDS_OSB_PRDKS_DOMAIN, weblogic.jdbc.jta.DataSource, GSDC_OSB_PRDKS_DOMAIN, eis/tibjms/Topic, eis/fioranomq/Topic, WLStore_OSB_PRDKS_DOMAIN_FileStore_MS1, PresidioOracleAppsDS_OSB_PRDKS_DOMAIN, GSDCDS_OSB_PRDKS_DOMAIN, eis/aqjms/Topic, CustOutDS_OSB_PRDKS_DOMAIN, OFMW/Logging/BAM, MobileAppsDS_OSB_PRDKS_DOMAIN, FIDDS_OSB_PRDKS_DOMAIN, WLStore_OSB_PRDKS_DOMAIN__WLS_OSB_MS1, HRMSDS_OSB_PRDKS_DOMAIN, WEDB_OSB_PRDKS_DOMAIN, OracleAppsDS_OSB_PRDKS_DOMAIN, eis/wls/Topic, eis/tibjms/Queue, eis/tibjmsDirect/Topic, IntrastatDS_OSB_PRDKS_DOMAIN, MobileApps_AOS_COSDS_OSB_PRDKS_DOMAIN, MobileApps_CIA_DS2_OSB_PRDKS_DOMAIN, EVEREST_WEDB_OSB_PRDKS_DOMAIN, WLStore_OSB_PRDKS_DOMAIN_FileStore_auto_1, Everest_OSB_PRDKS_DOMAIN},NonXAResources={})],CoordinatorURL=SOA_MS2+soaprd-vip-soa-ms2.cos.is.keysight.com:8002+SOA_PRDKS_DOMAIN+t3+): javax.transaction.SystemException: Lost connection to server while commit was in progress, ignoring because initiating server is not coordinating server. Remote Exception received=weblogic.rjvm.PeerGoneException: ; nested exception is:
            java.rmi.UnmarshalException: Incoming message header or abbreviation processing failed ; nested exception is:
            java.io.InvalidClassException: oracle.jdbc.xa.OracleXAException; local class incompatible: stream classdesc serialVersionUID = -2542408691177300269, local class serialVersionUID = -4551795881821760665
            at weblogic.transaction.internal.TransactionImpl.commit(TransactionImpl.java:376)
            at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:237)
            at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:224)
            at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:552)
            at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:423)
            at weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:325)
            at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4659)
            at weblogic.jms.client.JMSSession.execute(JMSSession.java:4345)
            at weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3821)
            at weblogic.jms.client.JMSSession.access$000(JMSSession.java:115)
            at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5170)
            at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
            at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
            at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

    Hi,
    Have you tried Cancelling the release before adding the version?
    Select the active version of the IDOC Segment and cancel its release first. Only then you will be able to add a version.
    Please let me know if it worked!
    Vijay

  • OSB JMS Proxy XA Transaction Rollback not occuring to queue

    Hi All
    We are dequeuing a message from JMS queue via an XA connection factory and then calling a web service. If any error occurs in the web service we catch the error handler, log and notify it and want to send this message back to the queue for retrial (The retry settings are defined at the Queue Level from weblogic console).
    Problem is rollback is not occurring, we have tried the below:
    1) There is no OSB reply with either success or failure in the error handler (This should have done the trick)
    2) We have also tried addiing an explicit Raise Error (Uncaught Error) to roll the message back, but its not working.
    This rollback is not occurring because JMS Resource is XA and web service call is NON XA, hence the entire message flow becomes NON XA. Is this understanding correct?
    How can we fix this? Please help

    Hi atheek1
    Thanks for the reply, it worked. Before I mark this question as answered, pls. answer the below queries (Thanks a lot!)
    1) Well, i just ticked transaction required and same transaction for response and it started working. I did not add routing options like you mentioned to QOS Exactly Once. Its working without it fine. So, my questions is what is the use of adding this QOS to exactly once. Is it mandatory?
    2) I have a couple of OSB services in which rollback is working automatically (XA JMS to JCA FTP Adapter) and (XA JMS to JCA DB adapter XA data source), here rollback works automatically. I dont have to tick transaction required. So my question is, when an XA based connection factory picks a message from the queue, a transaction is started at the container level. So why tick transaction required at the message flow level, when the weblogic has already initiated a transaction. Since you said that HTTP transport commits a transaction even if 500 or 404 occurs, it makes sense to tick is transaction required and same transaction for response in OSB proxy service. But the remaining scenarios work without these options. Hence will it be wise to say that these settings are only required for HTTP transport coz of the way it behaves (commits 404 and 500).
    Thanks

  • Transaction Issue while calling a stored procedure in osb

    HI all ,
    I have created a wrapper  procedure to call "soa.delete_instances (this procedure will delete the instances from SOA_INFRA schema)" oy locall created user schema(ASG).
    If i execute  the wrapper procedure direclt in SqlDeveloper it's working fine cleaning the instances.
    i have called this procedure in OSB by using the DB adaptor JCA file, the wrapper procedure is executing fine, but not deleting instances from the SOA_INFRA schema.
    any help is apriciated.
    Thanks..

    Maaan, there could be so many reasons for that... just some things to check:
    1. How do you know the stored procedure executes fine? If you didn't get a failure response from a call to JCA, that means nothing.
    2. Do you log the procedure step by step? Did it reach its normal completion? How many rows (it believes) it found/deleted?
    3. What user is the stored procedure executed under from OSB (obviously -- user of the datasource)? Does this user have rights to see/delete those records?
    4. Are you executing the proxy in transaction, and if yes, didn't you get an error that rolled back that transaction?
    and so on, and so forth.
    Vlad
    http://vladimirdyuzhev.com

  • File Adapter Transactional in SOA and OSb

    Hi All,
    Is file adapter transactional in SOA and OSB. I have a requirement where a inbound file adapter polls for a file and it is consumed by a topic.If topic is down,how can I know that the same file will goes to topic when is up(how can I make it transactional).I want to do this both in SOA ans OSB.
    Any help would be appreciated.
    Thanks,
    Kumar.

    Hi Kumar,
    File Adapter itself is NON TRANSACTIONAL...
    4.2.9 Nontransactional
    The Oracle File Adapter picks up a file from an inbound directory, processes the file, and sends the processed file to an output directory. However, during this process if a failover occurs in the Oracle RAC back end or in an SOA managed server, then the file is processed twice because of the nontransactional nature of Oracle File Adapter. As a result, there can be duplicate files in the output directory.
    http://docs.oracle.com/cd/E28280_01/integration.1111/e10231/adptr_file.htm#BABIEBJF
    Cheers,
    Vlad

  • How to control transactions (WS-AT) between two web services in OSB?

    Could someone tell me if the OSB can have 2 diferents web services controlled by an unique transaction?
    For instance: in the OSB there are two wsdl, each one with its own Business Service and ProxyService respectively. In my vb.net aplication I started a transaction, called the first web service succefully and from the second web service I got an exception. I expected the first web service undo its work because the vb.net aplication excute a rollback command. Is this possible? How can I do? Any sample or tip will be helpfull.
    If I was developing without OSB, I would rely on WS-AT as shown in http://www.codeproject.com/Articles/38793/6-Steps-to-Enable-Transactions-in-WCF for two web services dot net, or for one web service dot net and other java, http://www.ibm.com/developerworks/websphere/library/techarticles/0707_lo/0707_lo.html.
    My question is basically: Is still possible to keep a single transaction between multiple web services when they are mediated by OSB? If so, is there a example showing how?

    Hi,
    When you create the proxy server, you have to check "Transaction required" box on Message Handling page...
    http://docs.oracle.com/cd/E17904_01/doc.1111/e15867/proxy_services.htm#i1316487
    Cheers,
    Vlad

  • Global transactions in OSB and EJB 2.1

    Hi,
    My team is working in a SOA service based on OSB 11g (11.1.1.5) using DB JCA Adapter and EJB 2.1 over WLS 10g(WLI environment). The logic of the service works in this way:
    1. A table in a database (XE) is polled by the DB Adapter which starts the service (1 row = 1 message).
    2. The message contains a collection of items to be inserted in another Oracle database.
         Once a message/row is picked, and after some steps (logging, validation,etc), there is a for..each action which extracts each item of the collection and executes a service callout action to a business service.
    3. This business service uses EJB protocol to call an EJB (2.1 + WLS Extensions). The EJB is deployed in another domain (WLS 10.3.0/10g and Oracle BEA drivers)  and only executes an store procedure with the parameters based on the message and inserts these values in a table.
    4. Once the for...each finishes, there is a call to another proxy service which marks the message/row as "processed" in the source table. This update is done via DB JCA also.
    5. In case of an error, the error handler of the proxy service calls the proxy service mentioned above to mark the row as "Failed" (in fact there is a retry mechanism, but it's not important for now).
    The service requires to work inside a global transaction. The main requirement is that the collection of items should be processed as "All or None", so basically we're using the options to manage the global transaction. However, the problem is that it's failing to rollback the whole insertion of items when an error is simulated. It only rolls back the last insertion/execution of SP.
    Additionally, the proxy service that should mark the row as FAILED, never updates this one, and the tables stay locked until we modify one of the store procedure in order to avoid the simulated error and commit the transaction.
    The EJB uses WLS extensions with the annotations to "transaction required". The proxy service has the option transaction required also. The database drivers are all XA and we're testing against Oracle11g XE (however, the EJB destiny will be Oracle 8i in production).
    We have tried different alternatives, splitting the logic in different proxies (Proxy services for JCA, Proxy with For Each for EJB, etc), isolating the specific part with the EJB call, without success.
    The security between domains is set as Global Trust.
    Do you have any idea, example or suggestion about this problem? Is EJB really supported in Global Transactions and XA?
    Thanks in advance.

    where do you find the J2EE Connector 1.5 compliant
    Resource Adapter?I wrote the compliant adapter myself. Hey Steve,
    Were you able to find a solution for this problem. I am struggling with the same problem with the RI Beta implementation.
    Sandeep

Maybe you are looking for