woaidongmao

文章均收录自他人博客,但不喜标题前加-[转贴],因其丑陋,见谅!~
随笔 - 1469, 文章 - 0, 评论 - 661, 引用 - 0
数据加载中……

无状态类,有状态类

 

stated class, stateless class, 两种类别,代表了一种思路

 

在server端,不维护每个client的状态,将会减少麻烦,是否需要引入无状态思路呢?那么每个交互都是request<-->response模式

 

有状态模式,就是session维护模式,这还是非常常见的。

 

参考

 

Stateless or Stateful?


Service objects will usually be stateless. Stateless service layers are highly scalable: They pose no replication
issues and there is no need to allocate additional resources for every client. (Remember that one of
the key motivations of a middle tier is to share resources between multiple clients.) It is also much easier
for stateless service layers to support remote clients, if necessary.


The traditional stateless service objects in J2EE applications are stateless session beans (SLSBs). I’ll use
SLSBs as a starting point for discussion because they illustrate many of the basic concepts of stateless
service objects, which predate EJB.


A stateless service layer is one concession of object orientation that I find not too painful. Stateless service
objects are semi-objects. Although they cannot expose state to callers, they can hold internal state
and they can fully participate in inheritance relationships. If they are local, rather than remote, they can
use true objects as parameters and return values.


There are two main potential models for stateful service layers in J2EE: stateful session beans (SFSBs) and
web tier session objects. If we don’t use stateful session beans, session data is usually held in Servlet API
HttpSession objects. Holding session data in the web tier is usually more scalable than holding it in the
EJB tier. (See Chapter 10 of Expert One-on-One J2EE Design and Development for detailed discussion of
state replication issues.) “Thick” clients such as Swing applications will normally hold their own state.
Because stateless service layers have proven their value in numerous technologies, including both J2EE
and Microsoft platforms, we’ll focus on them in this book.

If possible, design applications to use a stateless service layer. Hold state in the web
tier, rather than in the business logic tier, if possible.

 

对于EJB来讲,Bean实例并非使用时创建,而是实现创建一个对象池,当client需要该bean中方法时,如果时无状态的,容器会随便指定一个空闲的给client使用,但是如果是有状态的,容器必须记住上次是那个bean实例为这个client服务的,下次同一个client请求也必须由这个同一个实例来服务,不能换由其他的bean实例来服务

posted on 2011-07-06 20:42 肥仔 阅读(712) 评论(0)  编辑 收藏 引用 所属分类: 编程思想


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理