I found the issue. It's all due to this bug:
https://glassfish.dev.java.net/issues/show_bug.cgi?id=12133
Because the container was ignoring the annotations other than @WebService the class was never exposed as an EJB and none of the transaction management was handled by the container. While I did annotate the class with Spring's @Transactional annotation, it simply doesn't help because the instance of the class that Spring is managing is difference from the instance that GlassFish is maintaining. So the Spring Transaction management would never kick i because the instance invoked was not the one Spring was managing.
[Message sent by forum member 'fericit_bostan']
http://forums.java.net/jive/thread.jspa?messageID=473662