构建高机能的J2EE应用不单需要体味常用的实施技巧。下面介绍最常用的10种有用体例,可辅佐架构设计师们快速成为这方面的专家。
* Z: o2 L2 c/ C# U0 f( S$ n& n8 z+ j+ t Java机能的基本—内存打点
2 i9 ?4 o. O' [. ~# B. b$ k5 s$ h 任何Java应用,单机的或J2EE的机能基本都可归结到你的应用是若何打点内存的问题。Java的内存打点搜罗两个主要使命:内存的分配和内存的收受接管。在内存的分配中,方针是要削减需要建树的对象。 - z$ W1 s- N" A* p6 w
内存收受接管是导致机能下降的普遍原因。也就是说,内存中的对象越多,垃圾收受接管越坚苦。所以我们对建树对象的立场应该越保守越好。 $ |3 U' l' _4 K5 O
在J2EE应用中常见的两个内存有关的问题是:游离的对象(也被称为内存泄露)和对象轮回(指年夜量频仍建树和删除-在Java中浮现为解除引用---对象)。 0 h! `2 e# l$ L. w* t
我们应注重确保所有可达到的对象现实是活的,即这些对象不单在内存中,而且也要在执行的代码中是存在的。当对象在应用中已经没有用了,而我们却健忘了删除对该对象的引用时,游离的对象就呈现了。
7 w7 e- Z: m1 W! i. s) T9 M5 P 我们知道垃圾收受接管会占用CPU时刻。短期对象的年夜量建树增添了垃圾收受接管的频率会造成机能下降。 # z2 }# K4 d- U, [
不要在Servlet中实现营业逻辑
: }/ V/ l/ J% b+ l! {+ ]! { 在构建J2EE应用时,架构工程师凡是会使用到J2EE的根基部门——Servlet。如不美观架构师不使用Session Beans, Entity Beans, 或 Message Beans, 那么改良机能的体例就很少。只能采用增添CPU或更多的物理处事器等体例。EJB使用了缓存(cache)和资本池等体例可以提高机能和扩展性。
0 c/ y; k/ |1 F* ]3 ? 尽可能使用当地接口访谒EJB
7 ^ o! l; d5 H/ Q* ^: h. u4 s& v 在早期的J2EE (遵循EJB1.X规范)应用中,访谒EJB是`经由过程RMI使用远程接口实现的。跟着EJB2.0的呈现,可以经由过程当地接口访谒EJB,不再使用RMI,在统一个JVM中使用远程体例已经少多了。可是此刻仍是有一些使用EJB1.X实现的应用和不知道使用当地接口的一些EJB新手。为声名这点,我们作个斗劲: % U" h6 ~ b5 l4 L' w! u
1、客户端应用挪用当地Stub
6 \. s7 N* |" r% Q) K! V) s/ ] 2、该Stub装配参数 8 {3 Y- V! D; L' D
3、该Stub传到skeleton ' h. L) E" a5 h7 E0 f
4、该skeleton分化参数
' } C# r/ X! l- Y9 w 5、该skeleton挪用EJB对象 ) s: T* v8 q- `. D- b
6、EJB对象执行容器处事 . ~! k/ W& n3 u4 r% s4 E
7、EJB对象挪用企业BEAN实例 4 K! d- n- h* u' g
8、企业BEA执行操作 : P" \$ s) a N
9、执行组装/分化轨范然后返回
0 u* E" B% e) _& W8 a 与远程接口措置对角力计较,当地接口的EJB体例是: ; M" c1 Z7 P `) `( c
1、客户端挪用当地对象
2 S9 u0 e$ r) A B2 {$ p. }8 I% L 2、当地对象执行容器处事 $ [$ W! F8 h$ T k4 E$ t
3、当地对象挪用企业Bean实例
: o4 ~) p5 |0 H( }+ _- U 4、企业Bean实例执行操作
/ |1 h7 p: R, V" r! z2 S# G1 h 5、没有其他返回轨范!
8 a+ N+ B B5 x4 N& w* {$ p) L 如不美观你不需要年夜远程的客户端访谒一个非凡EJB,就应该使用本处所法。 |