J2EE到底是什么? |
作者:佚名 发布时间:2005-04-02 来源:不详
|
目前所有的B/S系统应 有状态是指在整个系统的 都是独立的连接,不需要在
|
用可以分为:有状态(statefull 处理过程中要保留记住一些信息 每个request之间共享数据等等
|
)和无状态(stateless)两大类别。 ,而无状态则相反,每次request 。
|
对于这两种应用,通常
|
第一考虑是性能要最优,性能是
|
我们选择IT技术的主要依据之一。
|
为达到最大化的性能, 时的性能开销,也就是说系 从对象池中取出实例,用完 persistence)策略来保存
|
对于Java系统,以前通常的作法 统启动时,预先生成一定数目的 ,归还对象池,对于有状态的应 状态。
|
是使用对象池,这样节约对象生成 对象实例在内存中,需要使用时, 用,可以使用相关持久化(
|
下一步,如何并行访问对象池将是非 线程的创建销毁也是可能非常耗时的,那 实现多线程并行计算的最优化。
|
常重要,java的多线程技术为我们提供了实现可能, 么,无疑象使用对象池一样,我们必须使用线程池来
|
使用线程池和对象池,每次客户端请 请求就将线程返回线程池,同样,使用线 就还回对象池。 整个这样的架构设计在
|
求发生一次就从线程池中借用一个线程,处理完这个 程快速的访问对象,对象也是从对象池中借用,用完 性能上是最优的。
|
有了性能保证,安全机 。
|
制、事务机制、集群(cluster)
|
技术也将是选择IT技术的主要依据
|
J2EE就是这样一个实现上述多种考量 有这些考量的要求并不都一样重视,比如 么,完整的J2EE技术也许就并不适合你。
|
的综合标准框架系统,在具体使用中,也许我们对所 :如果纯粹追求性能是第一,可以忽视事务机制,那
|
那么我们先看看J2EE是 J2EE中必然应该有上述线程 容器;EJB是基于对象池的
|
如何从性能上保证我们的应用系 池和对象池的实现技术,servle 更好的对象容器。
|
统以最快速度运行的,也就是说 t实际是基于线程池的更好的线程
|
当client1发生请求时s
|
ervlet容器会从线程池中分配一
|
个线程给这个request.
|
instance Pool作为一 ,简单的说 EJB=对象池+远
|
个对象实例池,维持着EJB实例 程对象池
|
,当然这个对象池是用生命周期的
|
但是,EJB还整合了相当的其它增强 必需的,当然你还必须根据你的需要来选 有要求,直接使用线程池和对象池技术肯
|
功能,如安全 事务机制等,这些对于一般应用都是 择是否使用J2EE,如果你的应用对安全 事务机制没 定获得最好的性能。
|
所以,根据Servler和EJB的原理,我 ,或什么需要放在EJB中实现:
|
们已经可以规划我们的应用,什么可以放在servlet
|
线程的本质决定了serv 数据源,使用JMS或JavaMai 注意这些用词都是"简单"的
|
let只适合一些轻量的应用,如 l处理简单的信息Message,或使 ,一旦复杂了,就要使用EJB了
|
分析简单XML文档, 通过JDBC访问 用JTS/JTA处理简单的事务机制, 。
|
下面从客户端和服务器 指最终客户端,因为J2EE是 服务是供另外一个服务器上
|
端两个方面来具体考量这两个技 多层结构,中间层可能在多个服 的应用访问的,那么后者我们也
|
术的使用,这里的客户端不一定是 务器上实现,如果一个服务器上的 称为客户端。
|
如果你的系统没有很复杂的事务处理 javabean这样的一些Help性质的类来实现 有效efficient, 或最有扩展性的scalabl
|
,或访问很多企业原有的资源,那么可以借助 你的应用,但是,这样的方案不是最干净clean, 最 e。
|
如果你的客户端和服务 Http了(Web Service也是基 协议的,那么就需要通过se
|
器端之间有防火墙,那么目前能 于http就是这个道理),既然使 rvlet来访问EJB,这是我们最普
|
够无障碍通过防火墙的协议只有 用http了,而Servlet是基于Http 遍的应用情况。
|
但是,如果你的客户端 使用Servlet,直接使用Jav 有用于控制Jsp的页面的输
|
和服务器端可以放置在一个网络 a调用RMI来访问EJB,这样性能 出了(MVC模式中的控制作用)。
|
内,之间没有防火墙,那么就不必 是最好的,这时的Servlet大概只
|
如果是非java客户端,可以通过CORBA组件来访问EJB。 |
3.如果你的应用对速度要求很高,要求非常快,对于事务处理等方面几乎无要求 |
直接使用J2SE,加上线程池和对象池 Jakarta.Apache.org有这两种技术的源码
|
技术,将会使你的java系统性能发挥极致。 ,线程池可以从Servlet容器Tomcat的源码中发现。
|
|
|
|
|
|