JBoss EJB 3.0 第一章 EJB池和缓存

关键字: jboss ejb3

JBoss EJB3.0 RC6 -PFD
http://www.jboss.org/jbossejb3/docs/reference/build/reference/en/html/index.html

1. Session Bean and MDB
1.1 Pooling
Stateless和MDB豆油一个实例池. 标准配置里面用本地线程池来避免同步(org.jboss.ejb3.ThreadLocalPool) (对谁来说的Threadlocal?)。EJB可以别的poolinng机制。比如,JBoss有一个很严格的Pool size实现,只允许固定的并发访问数,其他的请求会被阻塞。配置类为@org.jboss.annotation.ejb.PoolClass
Java代码 复制代码
  1. @Retention(RetentionPolicy.RUNTIME)   
  2. @Target({ElementType.TYPE})   
  3. public @interface PoolClass   
  4. {   
  5.      Class value(); //Pool实现   
  6.      int maxSize() default 30;   
  7.      long timeout()default Long.MAX_VALUE;//请求等待调度时间   
  8. }  
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface PoolClass
{
     Class value(); //Pool实现
     int maxSize() default 30;
     long timeout()default Long.MAX_VALUE;//请求等待调度时间
}

用法举例:
Java代码 复制代码
  1. @Stateless  
  2.  @PoolClass (value=org.jboss.ejb3.StrictMaxPool.class, maxSize=5, timeout=10000)   
  3. @Remote(StrictlyPooledSession.class)   
  4. public class StrictlyPooledSessionBean implements StrictlyPooledSession   
  5. {   
  6.   ...   
  7. }  
@Stateless
 @PoolClass (value=org.jboss.ejb3.StrictMaxPool.class, maxSize=5, timeout=10000)
@Remote(StrictlyPooledSession.class)
public class StrictlyPooledSessionBean implements StrictlyPooledSession
{
  ...
}

基于jboss.xml的配置方法略

1.2 有状态session bean的缓存
状态bean被存在cache里面。这个缓存要负责在缓存满了或者bean发呆的时候钝化SFSB. 你可能会想设定缓存的最大数量,什么时候才算发呆。有没有cluster的设置会不同。
1.2.1没有cluster
Java代码 复制代码
  1. public @interface org.jboss.annotation.ejb.cache.simple.CacheConfig   
  2. {   
  3.     int maxSize() default 100000;   
  4.     long idleTimeoutSeconds() default 300;   
  5.     long removalTimeoutSeconds() default 0;   
  6. }  
public @interface org.jboss.annotation.ejb.cache.simple.CacheConfig
{
    int maxSize() default 100000;
    long idleTimeoutSeconds() default 300;
    long removalTimeoutSeconds() default 0;
}

1.2.2 Clustered
Java代码 复制代码
  1. public @interface CacheConfig   
  2. {   
  3.   String name() default "jboss.cache:service=EJB3SFSBClusteredCache";   
  4.   int maxSize() default 10000;   
  5.   long idleTimeoutSeconds() default 300;   
  6.   long removalTimeoutSeconds() default 0;   
  7.   boolean replicationIsPassivation() default true;   
  8. }  
public @interface CacheConfig
{
  String name() default "jboss.cache:service=EJB3SFSBClusteredCache";
  int maxSize() default 10000;
  long idleTimeoutSeconds() default 300;
  long removalTimeoutSeconds() default 0;
  boolean replicationIsPassivation() default true;
}

name()一般不需要修改。
replicationIsPassivation()指定是否在分布式缓存复制和提取前后是否调用@PrePassivate和@PostActivate。

1.2.3 不要钝化
有时候你希望关掉钝化功能,加上@org.jboss.annotation.ejb.cache.Cache (org.jboss.ejb3.cache.NoPassivationCache.class)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值