日期:2014-05-20  浏览次数:20695 次

突然有个疑惑,关于服务端的单态代理类

模拟一个代理类P,这个类用来封装数据操作(无状态的代理类),客户端调用的时候,这个类以单态的形式存在于服务端.
当客户端A请求代理P,而另一客户端B也请求代理P去处理数据时( 同一时刻),那么作为服务端唯一的单态实例,它被两个不同的客户端A,B所调用时,会先被谁执行呢?A还是B,还是同时.会不会存在锁的问题,或者葬数据的问题.

类似于EJB的session bean中的代理类,但俺不记得session bean的实例是不是在虚拟机上是唯一的.

请各位帮忙给解释解释.

------解决方案--------------------
怀疑LZ是来送分的-_-,不懂,帮顶。。
------解决方案--------------------
session bean不是唯一的
------解决方案--------------------
多线程问题,要看线程优先级别,如果同级别,就是先来的先服务了
------解决方案--------------------
建议搞清楚,会话bean的几种状态,有点区别的
线程问题,同意楼上.一般都会使用到,ThreadLocal创建副本,应该没什么问题!!
------解决方案--------------------
还没接触过EJB....
------解决方案--------------------
单态实例是不是线程安全的
A、B应该是两个线程

无状态的代理类的应该不需要线程安全
所以可以在每个线程创建单例

也许可能是这样子吧
------解决方案--------------------
如果线程要是同步的话我想不会出现死锁问题。
再一个,A和B的先后大多数情况下取决于优先级的高低,但是还要看CPU是如何分配的。

缓存对EJBHome的访问;使用门面模式,不暴露Entity Bean,用Session Bean封装Entity Bean;如果可以异步处理,则用MDB代替Session Bean;封装业务逻辑在轻量级JavaBean中;使用值对象等简单对象传递数据;不直接使用get/set方法操作Entity Bean。当然过度使用模式或者牵强套用模式也是不提倡的,总的原则就是减少网络流量,改进事务管理。

以上个人观点。
------解决方案--------------------
学习下
------解决方案--------------------
楼主说的如果不是用rmi实现的话就是一个多线程问题,涉及到成员变量程序就会有同步问题,rmi的没有试过。

ejb的session bean不是唯一的,我觉得和servlet的session的概念在一定程度上有一样的作用。

个人观点仅供参考
------解决方案--------------------
学习了.
------解决方案--------------------
加同步关键字吧

syn....
------解决方案--------------------
来了,就顶一个
------解决方案--------------------
正在学习EJB.......
DCSER
------解决方案--------------------
EJB不是很懂 纯学习...
------解决方案--------------------
会开启两个线程,不说EJB,就说Servlet,也是单例的,多个客户访问,每个客户会开启自己的线程,具体哪个运行哪个中断,取决于CPU时间.
单例的类的成员变量被线程所共享.如果有成员变量可能会发生并发的问题,可能要采取同步的机制.当然后面这些要看你程序怎么去设计.
------解决方案--------------------
不懂,学习!