New stuff in EJB 3.1 (in relation to 3.0) is:
- no interface view for session beans: here you need no local interface anymore in order to expose the beans methods to local clients. Of course a remote interface is still needed for remote access. This no interface view is (also) convenient if you want to expose a bean as web service a la JSR-181.
- singleton session beans: Those are basically session beans that can be accessed as such by clients, that exist like singletons in the pure Java SE case
- calendar based expressions for timer creation: It is now possible to create timers where the fire date is given by a cron like syntax. The timeout method can be speficied by @Schedule. If @Schedule is augmented with the cron like date, the system will automatically create a timer for it.
- allowing to package ejbs in a .war
- asynchronous invocations of session beans: A sssion bean method marked with @Asynchronous can be be called by a client via the ususal session bean invocation semantics (remote, local, no-interface) but will run asynchronously like the onMessage() method of a MDB, but doesn't need e.g. JMS for this. It is for the client possible to retreive results via a Future
- a few clarifications over the old standard
This looks very promising to me.
The draft is available from the spec space at JCP.org. Unfortunately only the full spec document is available and not the simplified one as in EJB 3.0.