繁体   English   中英

为什么有状态的bean无法公开为Web服务?

[英]Why can't stateful beans be exposed as webservices?

我一直在阅读有关有状态和无状态会话Bean的信息,并遇到一句话:

有状态会话Bean不能作为Web服务公开

谁能详细说明为什么?

这是因为通常不需要跨Web服务客户端调用维护状态。 而且,基于SOAP的Web服务本质上本质上是无状态的。 如果您需要在Web服务调用之间维护状态,则可以使用无状态Bean来保持状态(尽管这会降低应用程序性能)

位于EJB容器中的每个有状态bean实例都有一个唯一的对象标识。

来自规范:3.4.7.1有状态会话Bean

有状态会话对象具有唯一的标识,该标识在创建对象时由容器分配。

为了使用有状态bean,客户机代码需要从EJB容器获取有状态引用。 该参考必须用于提出以后的每个请求。 由于引用对象知道与有状态Bean关联的身份,因此可以确保为同一实例Bean解析所有参与“对话”的请求。 这意味着客户在实现有状态行为方面起着重要作用。

SOAP协议没有提供一种允许在Web服务客户端中存储此身份的方法,因此,如果客户端不知道哪个有状态实例具有会话状态,则每个请求将由不同的ejb处理(例如无状态的情况下)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM