也就是说一个ejb对象在某一时刻只能被一个线程访问.不能被多个线程同时访问该对象,请问是为什么.在无状态的session bean或者Message Driven bean他们为什么不能被多个线程同事访问,他们没有状态啊!!

解决方案 »

  1.   

    怎么并发访问呀,对象就是那么一个,你要是并发访问,他为谁服务呀?里面的变量是谁赋给的值?所以肯定是一个时刻只能一个线程访问了。所谓无状态,只不过是不记录访问用户信息,当该用户使用完毕,这个ejb对象释放,然后可以继续为其他线程服务。也不是说同时可以为两个线程服务。所以应该是在pool里面有很多无状态的session bean,然后每一个为一个线程服务,当使用完毕,被释放,再为其他线程服务请高手跟进
      

  2.   

    是楼上说的这样,不过我正是觉得因为有这个pool的设计,ejb看起来是可以并发访问的,虽然概念上有点不同。
      

  3.   

    楼上的,我记得想hashMap他里面的方法都可以被多个线程同时,而且是一个对象被多个线程同时访问
      

  4.   

    任何对象都可以多线程访问,这个跟ejb session bean还是HashMap没关系的。我所说的ejb不能多线程访问,是就EJB框架而言。
    一般都是提交一个request,然后拿到一个ejb对象,然后做业务逻辑。
    当然,你可以将调用ejb的方法做成多线程的,那你不就实现ejb session bean的多线程访问了
      

  5.   

    而且对HashMap的讨论,也都是说他不是线程安全的,从来没有讨论过哪个类不能多线程访问的。
      

  6.   

    也不是不能,你完全可以开发一个支持多线程访问的ejb容器出来,但那样就不安全了,也不符合j2ee的标准;很多容器都是有ejb池的,