It's great to see more people write about Spring as a partial replacement for a heavy application server. I especially liked the fact that you showed the use of a JTA-provider outside the EJB-container.
However, your article would've been much improved, if you had used the Spring JdbcTemplate, JmsTemplate and AbstractTransactionalSpringContextTest classes. (And the XML configuration could've been more compact with the new compact <property name="..." ref="..." />-syntax and good use of autoproxy).
Also: I found one glaring error in your article. In the case that one of my developers read the article, I have to put the record straight :-): "Without XA, your application will not be recoverable after a crash or restart". This is of course a bit inexact. Databases (and Spring!) support transactions without XA, but not distributed transactions. As long as you only have one data source, you don't need XA for recoverability.
Lastly: I would be very interested in hearing more about out-of-container JTA support (as in Atomikos). For example: To what extent can you keep the same configuration in an out-of-container and in-container environment? What options are available for out-of-container JTA? Under what licenses.