3 Replies Latest reply on Jan 2, 2017 8:29 AM by gytis

    WS-AT XTS - MSDTC Interoperability


      I need desperately help to get WS-AT simple quickstart to work with WCF client.


      WS-AT quickstart has been compiled and deployed on JBoss EAP 6.4 and is working fine using Java client app even if using mutual SSL. The transaction is displayed as commited at JBoss transaction statistics after spawing the client.


      But when i try to use Windows MSDTC WS-AT (configured with the appropriate certificates) and a .NET application then enlistForDurableTwoPhase cannot enlist the participant ( when using transactionFlow transactionProtocol="WSAtomicTransaction11")


      or  there is an error mustunderstand headers not understood ( when using transactionFlow transactionProtocol= "WSAtomicTransactionOctober2004" )


      I think that this happens because Java code puts the appropriate context headers to the request while .NET does not. I thought that MSDTC WS-AT must do that coordination context insertion and not be part of the developer job to put code or configuration to app.config.


      If I remove the enlistForDurableTwoPhase command completely, then MSDTC Transaction statistics displays the transaction as commited but JBoss does not enlist it at all at JBOSS transaction statistics.


      Can XTS WS-AT transactions on JBoss 6.4 interoperate with Microsoft Distributed transactions WS-AT or I loose my time trying to make it work ?






        • 1. Re: WS-AT XTS - MSDTC Interoperability

          I'm not familiar with the .NET WS-AT implementation. But in theory as long as client and service implement the same specification they should be able to communicate. We implement two WS-AT versions: Web Services Atomic Transaction Version 1.1 and Web Services Atomic Transaction 1.2.

          Does your .NET client work if you're not using SSL?

          • 2. Re: WS-AT XTS - MSDTC Interoperability

            Not using SSL makes no difference.


            Java client code uses this snippet that makes transaction work.



                     * Add client handler chain


                    BindingProvider bindingProvider = (BindingProvider) client;


                    List<Handler> handlers = new ArrayList<Handler>(1);

                    handlers.add(new JaxWSHeaderContextProcessor());



            But .NET code has no equivalent syntax to do this, so it is not that the client and server does not share the same specifications, but there is no way for the server to recognize the WS-AT context coming from client request and register the transaction with a WS-C coordinator.

            • 3. Re: WS-AT XTS - MSDTC Interoperability

              That code snippet in the servlet is specific to our implementation. I assume .NET container should provide an implementation of WS-C context propagation.

              I'm sorry, but I'm not really able to help you with this question, because I'm not familiar with .NET. I recommend you to contact Microsoft regarding the client side setup and if there is any question related to the server side get back to us.