I noticed there is a chapter in the book on using WebSockets with EJB 3. My question is rather a WebSockets question than an EJB-3 question: Is there a way of enclosing a WebSocket-communication into a technical transaction, and if so, would you regard WebSockets with EJB 3 as the preferred method of implementing transactional calls over the web (as opposed to classic JAX-WS with EJB 3)?
WebSockets do not use transactions. However, a particular WebSocket callback can be transactional if you need it to be (on the server side). In terms of usage I would say you should use REST/JAX-RS 90% of the time. WebSocket is only applicable when you need TCP-like bidirectional stateful communication (such as chat, gaming, stock tickers, real time monitors and so on).
Independent Consultant — Author, EJB 3 in Action — Expert Group Member, Java EE 6 and EJB 3.1