I can't configure a TX on the router in Mule 2, because this case was never accounted for. However, it is critical in some scenarios when a TX is started on the outbound. Here's a valid 1.4.4 config:
<mule-descriptor name="Part2" implementation="org.mule.tck.functional.FunctionalTestComponent" singleton="true">
<inbound-router>
<endpoint address="vm://middle">
</endpoint>
</inbound-router>
<outbound-router>
<router className="org.mule.routing.outbound.OutboundPassThroughRouter">
<endpoint address="jms://out" connector="jmsConnector2">
<transaction action="BEGIN_OR_JOIN"
factory="org.mule.providers.jms.JmsTransactionFactory"/>
</endpoint>
<transaction action="ALWAYS_BEGIN"
factory="org.mule.providers.jms.JmsTransactionFactory"/>
</router>
</outbound-router>
<properties>
<property name="returnMessage" value="OUTPUT MESSAGE"/>
</properties>
</mule-descriptor>
Note the different TX actions on the router and endpoint. What's important is the TX had to be started on the router level, otherwise it wouldn't work. In fact, I've already confirmed this problem in Mule 2.0.1 when declaring a TX on jms outbound doesn't work (locks the sending thread).
Andrew