论坛首页 Java企业应用论坛

JBoss EJB 3.0 第一章 EJB池和缓存

浏览 3213 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2009-05-10   最后修改:2009-05-10
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
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface PoolClass
{
     Class value(); //Pool实现
     int maxSize() default 30;
     long timeout()default Long.MAX_VALUE;//请求等待调度时间
}

用法举例:
@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
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
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)

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics