1.取消接口
EJBContainer直接公布javaBean的Public方法,客户端使用通过@EJB注入。
2.引入Singletonsinessionbean.
通过@Singleton标记该SessionBean为Singleton。在该Container只有一例。
对于SingletonSessionBean的并行访问问题,有两种控制机制CMC(Container-managedconcurrency)容器管理的并行机制和
BMC(Bean-managedconcurrency),Bean管理的并行机制。默认容器管理并行机制。
在并行访问的控制上,使用了Readandwrite机制,通过@Lock(READ)@Lock(WRITE)。默认为WRITE机制,方法只能并一个
Client访问。
3.Asynchronous调用
EJB3.1激动人心的Feature。通过@Asynchronous是该方法可以异步调用。在Client端,通过JDKConcurrency包的Future模式
(Future
4.规范了JNDInames
以往,不同的Vendor有不同的定义,现在统一了,格式如下:
java:global[/
packagenet.blogjava.vincent;
@Singleton
publicclassBeanA{(...)}
下面的JDNI是都是合理的
-java:global/myapp/mybeans/BeanA
-java:global/myapp/mybeans/BeanA!net.blogjava.vincent
-java:app/mybeans/BeanA
-java:app/mybeans/BeanA!net.blogjava.vincent.BeanA
-java:module/BeanA
-java:module/BeanA!net.blogjava.vincent.BeanA
5.提供了更强大的Time服务。
这一块一直是EJB的弱项,使得Quartz成了主流。EJB3.1相对EJB3提供了编程和注释两种机制提供类似LinuxCron服务。
比如下面的定义:
@Stateless
publicclassMyTimeEJB{
@Schedules(
@Schedule(hour="20")
}
publicvoidMyTimeEJB(Timertimer){(...)}
}
6.推出EJBLiteEJB容器简化版
EJB3.1简化版包括features:
*Stateless,stateful,singletonsessionbeans.只支持Local的异步调用。
*Container-ManagedTransactionsandBean-ManagedTransactions.
*Declarative和programmaticsecurity.
*Interceptors.
*Deploymentdescriptors.
7.简化EJBPackaging
可以不用ear包,在war包允许包含EJB模块。如下图:
8.嵌入式EmbeddableEJBContainers
AJavaSE应用了启动一个嵌入式的EJBContainr来开发测试EJB。
【编辑推荐】