Details

  • User impact:
    High
  • Configuration:
    Hide
    <service name="TradeSubmit">
                <inbound>
                    <jms:inbound-endpoint queue="${TradeQueue}" synchronous="true"
                        transformer-refs="JMSMessageToObjectTransformer"
                        responseTransformer-refs="ObjectToJMSMessageTransformer">
                        <jms:transaction action="ALWAYS_BEGIN"/>
                    </jms:inbound-endpoint>
                </inbound>
                <outbound>
                    <chaining-router>
                        <cxf:outbound-endpoint address="${bociservices.url}" proxy="true"
                            synchronous="true" transformer-refs="XmlToXMLStreamReader"
                            responseTransformer-refs="XMLStreamReaderToXml"
                            protocolConnector="HttpConnector">
                            <jms:transaction action="NONE"/>
                        </cxf:outbound-endpoint>
                        <message-property-filter pattern="ServiceName=TradeSubmit"/>
                    </chaining-router>
                </outbound>
                <default-service-exception-strategy>
                    <rollback-transaction exception-pattern="*"/>
                    <jms:outbound-endpoint queue="testQueue">
                        <jms:transaction  action="ALWAYS_BEGIN"/>
                    </jms:outbound-endpoint>
                </default-service-exception-strategy>
            </service>
    Show
    <service name="TradeSubmit">
                <inbound>
                    <jms:inbound-endpoint queue="${TradeQueue}" synchronous="true"
                        transformer-refs="JMSMessageToObjectTransformer"
                        responseTransformer-refs="ObjectToJMSMessageTransformer">
                        <jms:transaction action="ALWAYS_BEGIN"/>
                    </jms:inbound-endpoint>
                </inbound>
                <outbound>
                    <chaining-router>
                        <cxf:outbound-endpoint address="${bociservices.url}" proxy="true"
                            synchronous="true" transformer-refs="XmlToXMLStreamReader"
                            responseTransformer-refs="XMLStreamReaderToXml"
                            protocolConnector="HttpConnector">
                            <jms:transaction action="NONE"/>
                        </cxf:outbound-endpoint>
                        <message-property-filter pattern="ServiceName=TradeSubmit"/>
                    </chaining-router>
                </outbound>
                <default-service-exception-strategy>
                    <rollback-transaction exception-pattern="*"/>
                    <jms:outbound-endpoint queue="testQueue">
                        <jms:transaction  action="ALWAYS_BEGIN"/>
                    </jms:outbound-endpoint>
                </default-service-exception-strategy>
            </service>
  • Similar Issues:
    None

Description

If you create a service with transactional endpoints and an error is thrown in the service. Then the Exception handler is invoked twice for the same error from these 2 methods.

AbstractService.handleException()
TransactionTemplate.execute()

Issue Links

Activity

Hide
Daniel Feist added a comment - - edited

Is there a test case? Also any idea if this happens in 2.2.1 also?

Show
Daniel Feist added a comment - - edited Is there a test case? Also any idea if this happens in 2.2.1 also?
Hide
Dirk Olmes added a comment -

Puneet, I'm having a hard time recreating the error. I'm attaching the config and the test case, can you please demonstrate the error based on the sample config?

Show
Dirk Olmes added a comment - Puneet, I'm having a hard time recreating the error. I'm attaching the config and the test case, can you please demonstrate the error based on the sample config?
Hide
Puneet Gupta added a comment -

I think the error has to be thrown from the outbound endpoint. You will have to create a dummy transformer that throws an exception and add it to the outbound-endpoint.

Show
Puneet Gupta added a comment - I think the error has to be thrown from the outbound endpoint. You will have to create a dummy transformer that throws an exception and add it to the outbound-endpoint.
Hide
Ken Yagen added a comment -

moved back into bug backlog. won't make 2.2.2 EE

Show
Ken Yagen added a comment - moved back into bug backlog. won't make 2.2.2 EE
Hide
Travis Carlson added a comment -

Assuming this was fixed by EE-1968

Show
Travis Carlson added a comment - Assuming this was fixed by EE-1968

People

Vote (3)
Watch (2)

Dates

  • Created:
    Updated:
    Resolved: