Bug 980802 - ESB ignoring transacted flag on EPR element
Summary: ESB ignoring transacted flag on EPR element
Keywords:
Status: CLOSED UPSTREAM
Alias: None
Product: JBoss Enterprise SOA Platform 5
Classification: JBoss
Component: JBossESB
Version: 5.3.1
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
: FUTURE
Assignee: tcunning
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2013-07-03 09:24 UTC by Adam Kovari
Modified: 2025-02-10 03:28 UTC (History)
3 users (show)

Fixed In Version:
Clone Of:
Environment:
SOA 5.3.1
Last Closed: 2025-02-10 03:28:03 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker JBESB-3941 0 Major Open ESB ignoring transacted flag on EPR element 2014-08-06 20:14:18 UTC

Description Adam Kovari 2013-07-03 09:24:00 UTC
Description of problem:
For example

> <jbossesb-listeners 
> deployment="Quickstart_JMS_Transacted.esb"  
>  parameterReloadSecs="5">  
> <listener 
> busIdRef="quickstartEsbChannel" 
> listenerClass="org.jboss.soa.esb.listeners.message.MessageAwareListener" 
> maxThreads="1" 
> mep="OneWay" 
> name="jmssecured" 
> service-category="JMSSecuredESB"
>  service-description="JMS Secured quickstart sample" 
>  service-name="SimpleListener">
> <EPR
>  acknowledge-mode="AUTO_ACKNOWLEDGE" 
>  connection-factory="XAConnectionFactory"
>   destination-name="queue/quickstart_jms_transacted_Request_esb"
>    destination-type="queue"
>     persistent="true"
>      protocol="jms"  
>       transacted="true"/>  


If you set a breakpoint on the MessageAwareListener where it retrieves the value for 'transacted', i.e. "transactional = _config.getBooleanAttribute(ListenerTagNames.TRANSACTED_TAG, false) ;", and if you then in Eclipse Debug mode analyse the 'this._config' (the ConfigTree variable), you can see that that ConfigTree does not have a 'transacted' key in its '_attributes' map. However, one of the Child ConfigTrees  of this Listener tree, the 'EPR' ConfigTree, does have a 'transacted = true' value in it's tree. However, _config.getBooleanAttribute(..) does not do a recursive search through the child ConfigTrees (and it probably shouldn't, I'm not sure how this was designed), which explains why it does not return 'true'.



> I have a proposed hack/fix that would resolve this. 
> 
> In MessageAwareListener line 169. Replace 
> 
> From 
> 	transactional = _config.getBooleanAttribute(ListenerTagNames.TRANSACTED_TAG, false) ;	
> To
> 	transactional = _config.getChildren("EPR")[0]..getBooleanAttribute(ListenerTagNames.TRANSACTED_TAG, false) ;

Comment 1 JBoss JIRA Server 2013-07-19 14:55:34 UTC
Kevin Conner <kevin.conner> made a comment on jira JBESB-3941

One comment to make is that the EPR is for the caller and not the service and it should be possible to specify these differently, as such the suggested fix is not really correct.  As a workaround it is likely possible to specify the transacted flag as a property on the service.

Comment 2 tcunning 2014-10-01 18:30:20 UTC
I did some testing on this one and Kevin's workaround seems to be fine, with the change that the property should be added to the listener, not the service.    

Example :                 
<jms-listener name="helloWorld"
                              busidref="quickstartEsbChannel">
  <property name="transacted" value="true"/>
</jms-listener>

Comment 6 Red Hat Bugzilla 2025-02-10 03:28:03 UTC
This product has been discontinued or is no longer tracked in Red Hat Bugzilla.


Note You need to log in before you can comment on or make changes to this bug.