摘自 IBM WebSphere å¼€å‘者技术期åˆ?/font>ã€?/p>
本文æä¾›äº†ä¸€äº›å¸¸è§„指å¯û|¼Œä»¥åˆ›å»ø™ƒ½å¤Ÿæ£å¸¸æ‰§è¡Œçš„ IBM WebSphere Portal 自定义代ç 。自定义代ç ä¸ä»…æŒ?PortletåQˆè™½ç„¶å®ƒä»¬æ˜¯æœ€å¸¸è§çš„é—¨æˆïL¼–½E‹æ¨¡åž‹ï¼‰åQŒä¹ŸåŒ…括 WebSphere Portal 的主题和外观代ç 。由于这些组件å‡é‡‡ç”¨ä¸?Portlet 相åŒçš„æŠ€æœ¯å®žçŽŽÍ¼Œæ‰€ä»¥å¾ˆå¤šç›¸åŒçš„æ€§èƒ½æ³¨æ„äº‹é¡¹å¯¹å®ƒä»¬ä¹ŸåŒæ ·é€‚用ã€?/p>
对于 PortletåQŒæœ¬æ–‡ä¸»è¦é›†ä¸è®¨è®ºéµå¾?Javaâ„?Portlet 规范 JSR 168 å?WebSphere Portal ä¸çš„å¯¹åº”å®žçŽ°çš„æ ‡å‡†åŒ– Portlet。本文基äº?WebSphere Portal V5.1 或更高版本,ä¸è¿‡æœ¬æ–‡ä¸æ‰€¾l™å‡ºçš„准则和大部分å¾è®®æ°¸˜qœé€‚用åQŒè€Œä¸å—所˜q行çš?WebSphere Portal 版本的媄å“ã€?/p>
本文ž®†è¯´æ˜Žå¦‚何设¾|®å’Œä½¿ç”¨ Porlet 应用½E‹åºçš„部¾|²å‚æ•îC»¥ä¼˜åŒ–门户å’?Portlet 的性能åQŒå› 䏸™¿™æ˜¯åˆ›å»ø™‡ªå®šä¹‰é—¨æˆ·ä»£ç 的最åŽä¸€æ¥ã€‚丘q?WebSphere Portal çš„æ€ÖM½“优化åQˆå³åˆ›å¾òq‰™ƒ¨¾|²è‡ªå®šä¹‰ä»£ç åŽæ‰§è¡Œçš„½Ž¡ç†æ“作åQ‰å°†ä¸åœ¨æœ¬æ–‡ä¸è®¨è®ºã€‚å¦ä¸€ä¸ªæ–‡æ¡£å¯¹ WebSphere Portal 性能优化˜q›è¡Œäº†è¯´æ˜Žã€‚è¯¥æ–‡æ¡£ä¸Žæœ¬æ–‡æ¡£å…±åŒæä¾›äº†é—¨æˆ·ä¸Žæ€§èƒ½æ–šw¢ä¸é”™çš„å‚考资料ã€?/p>
本文旨在供å‚与构建门户应用程åºåƈ希望æé«˜å¯¹ä¸Žè‡ªå®šä¹‰ä»£ç 相关的潜在性能问题的ç†è§£çš„½E‹åºå‘˜ã€è®¾è®¡äh员和架构师ä‹É用ã€?br />
IBM WebSphere Portal æž„å¾äº?the IBM WebSphere Application Server 产å“ä¹‹ä¸Šã€‚å› æ¤ï¼Œè‡ªå®šä¹‰é—¨æˆ·ä»£ç çš„¾~–程环境å…ähœ‰ä¸‰é‡ç‰¹å¾åQŒå…¶å¯¹åº”çš„é‡è¦å«ä¹‰å¦‚下:
WebSphere Portal åŠå…¶æ‰€æœ‰ç»„ä»¶å‡ä¸ºåŸºäº?Java 的程åºã€?/b>
å› æ¤åQŒæ€Èš„æ¥è¯´åQŒåº”该éµå¾ªç¼–写高性能 Java 代ç 的最佛_®žè·üc€?/p>
WebSphere Portal 是è¿è¡ŒäºŽåº”用½E‹åºæœåС噍åã^åîC¸Šçš?J2EE 应用½E‹åºã€?/b>
J2EE 包å«å¤šçº¿½E‹æŠ€æœ¯ï¼›J2EE 容器通常采用æ¯ä¸ªè¯äh±‚一个线½E‹çš„æ–ÒŽ³•处ç†è¯äh±‚è´Ÿè·ã€‚对于ä‹Éç”¨æ¤æœºåˆ¶å¿…然涉åŠåˆ°çš„ä»ÖM½•实现或性能注æ„äº‹é¡¹éƒ½åº”è¯¥åŠ ä»¥æ³¨æ„ã€?/p>
WebSphere Portal æä¾›äº?API 以扩展门户功能ã€?/b>
å¯ä»¥é‡‡ç”¨å¾ˆå¤šæ–ÒŽ³•对ä“Q务进行编½E‹ã€‚åº”è¯¥é¦–å…ˆè€ƒè™‘å½±å“æ€§èƒ½çš„差异ã€?/p>
下一部分ä¸å°†ä»‹ç»ä¸€äº›å…³äºŽé—¨æˆïL¼–½E‹çŽ¯å¢ƒä¸åŒéƒ¨åˆ†çš„一般性能注æ„事项ã€?/p>
昄¡„¶åQŒæœ¬éƒ¨åˆ†òq¶ä¸ä¼šæä¾›å¤„ç?Java 性能的全部技术。我们仅在æ¤å¤„ç»™å‡ºåœ¨æˆ‘ä»¬è®¤äØ“˜q›è¡Œ WebSphere Portal 开呿—¶æœ€æœ‰ç”¨çš„相关事™å¹ï¼Œòq¶æä¾›ä¸€äº›å¯å¸®åŠ©æ·±å…¥äº†è§£ Java 性能的å‚考资料(请å‚é˜?a >å‚考资æ–?/font>åQ‰ã€?/p>
基本 Java 性能
在这一部分ä¸ï¼Œæˆ‘们ž®†è®¨è®ÞZ¸€äº›åº”用到大部åˆ?Java 的一般性能™åV€‚å°½½Ž¡è¿™äº›å¾è®®å¯èƒ½åƈä¸ä¼šå¸¦æ¥å¤§å¹…度的性能æé«˜åQŒä½†å¯ä»¥ä½¿æ‚¨å¯¹åœ¨å¼€å‘阶ŒDµåº•å±‚ç¨‹åºæ‰§è¡Œæ€§èƒ½çš„é‡è¦æ€§æœ‰æ‰€è®¤è¯†ã€?/p>
åœ?Java ä¸ï¼ŒString 对象是ä¸å¯å˜çš„,è€?StringBuffer 对象是å¯å˜çš„ã€‚æ— è®ÞZ½•æ—¶å°†æ–‡æœ¬é™„åŠ åˆ?String 或从ä¸åˆ 除,实际上都ž®†åˆ›å»ÞZ¸€ä¸ªæ–°å¯¹è±¡åQŒåƈž®†æ—§å¯¹è±¡ä¸¢å¼ƒã€‚å› æ¤æˆ‘们首选以下的方å¼åQ?/p>
|
以æ¤ä¸ºåŸº¼‹€çš„å—½W¦ä¸²è”结æ“作åQ?/p>
|
有时å¯ä»¥é€šè¿‡è®„¡½® StringBuffer çš„åˆå§‹å®¹é‡è¿›ä¸€æ¥æé«˜æ€§èƒ½åQ›è¯¥¾cÈš„设计使其å¯ä»¥åœ¨ä¸èƒ½ä¿å˜å…¨éƒ¨æ•°æ®æ—¶è‡ªåŠ¨æ‰©å¤§å®šw‡ã€‚丘q‡æ¤å¤„有性能æŸå¤±åQŒå› ä¸?StringBuffer å¿…é¡»é€æ˜Žåœ°å¢žåР其大å°å’Œå¯¹æ•°æ®¿UÖM½ã€‚例如,如果ž®?StringBuffer ä½œäØ“æ”‰™›†å‚æ•°åQˆå³ž®†å‘å…¶æ·»åŠ è¶Šæ¥è¶Šå¤šçš„æ•°æ®åQ‰ä‹É用,应该在对其进行åˆå§‹åŒ–之å‰è®¡ç®—æ°å½“的缓冲区大å°åQŒä»¥ä½¿å…¶æ°¸è¿œéƒ½ä¸éœ€è¦å¢žåР大ž®ã€?/p>
åœ?I/O æ“作期间臛_°‘会阻塞当å‰çº¿½E‹ï¼›å¦‚果其他¾U¿ç¨‹ä¹Ÿå¿…™åȉ待ç£ç›˜ï¼Œåˆ™ç³»¾lŸå“应时间将会迅速增大。除éžåœ¨æ‰§è¡Œæ—¥å¿—记录功能åQˆä¾‹å¦‚,在记录异常或站点讉K—®ä¿¡æ¯åQ‰ï¼Œå¦åˆ™ WebSphere Portal 自己ä¸ä¼šå¼•è“vä»ÖM½•¼‚盘讉K—®ã€‚我们将在åŽé¢å¯¹ I/O ˜q›è¡Œ˜q›ä¸€æ¥è®¨è®ºã€?/p>
synchronized 关键嗿¯‹Æ¡ä»…å…许一个线½E‹è¿›å…¥ä»£ç å—ã€‚åŒæ¥ä»£ç å—æ‰€éœ€çš„æ‰§è¡Œæ—¶é—´è¶Šé•¿ï¼Œå…¶ä»–¾U¿ç¨‹½{‰å¾…˜q›å…¥è¯¥ä»£ç å—的时间就‘Šé•¿ã€‚我们将在åŽé¢å¯¹åŒæ¥˜q›è¡Œ˜q›ä¸€æ¥è®¨è®ºã€?/p>
例如åQŒä‹Éç”?System.currentTimeMillis() ‹‚€ç´¢å½“剿—¶é—´ä¿¡æ¯å¼€é”€ž®Þq›¸å½“å¤§ã€‚å¦‚æžœç¡®å®žéœ€è¦æ—¶é—´ä¿¡æ¯ï¼Œè¯ïL¡®å®šæ˜¯éœ€è¦å½“å‰å‡†¼‹®çš„æ—‰™—´åQŒè¿˜æ˜¯ï¼ˆä¾‹å¦‚åQ‰å‡†¼‹®åˆ°æœ€˜q‘çš„¿U’æ•°ž®Þpƒö够了。如果在代ç è·¯å¾„ä¸æœ‰å¾ˆå¤šèŽ·å–æ—‰™—´çš„è°ƒç”¨ï¼Œä½†åÆˆéžä¸€å®šè¦æ¯«ç§’¾U§çš„准确度,å¯ä»¥é‡‡ç”¨æ›¿æ¢æ–ÒŽ³•åQŒå³¼‹®å®šè¯äh±‚开始的旉™—´åQŒç„¶åŽç›´æŽ¥åœ¨è¯äh±‚期间使用该信æ¯ã€?/p>
通常åQŒåº”ž®?Java ä¸çš„异常用于指示错误情况。ä¸è¦ä‹É用异常指½Cºæ“作æˆåŠŸï¼Œ˜q™ä¸»è¦æ˜¯å› 䨓 JVM 创å¾å¼‚å¸¸å †æ ˆè·Ÿè¸ªéžå¸¸è´ÒŽ—¶åQŒè€Œä¸”åœ?WebSphere Portal ¾pÈ»Ÿä¸çš„跟踪深度会很深ã€?/p>
æ?API 为动æ€ä»£ç æ‰§è¡Œå¢žåŠ äº†åŠŸèƒ½å¼ºå¤§çš„é€‰é¡¹åQŒä½†ž®±æ–¹æ³•执行时间而言åQŒèŽ·å¾—è¿™¿U絋zÀL€§ä¼šå¯ÆD‡´ä¸¥é‡çš„æ€§èƒ½æŸå¤±ã€‚通常åQŒåº”ž®½åŠ›é¿å…在门户代ç ä¸ä½¿ç”¨ Java Reflection API。丘q‡ï¼Œå¦‚果有必è¦è¿›è¡Œåž®„调用,则应ž®½é‡ž®†å…¶æ”„¡½®åœ¨åˆå§‹æ–¹æ³•ä¸åQŒä»¥ä½¿å…¶åœ¨æ¯ä¸ªè¯·æ±‚期间都ä¸ä¼šæ‰§è¡Œã€?/p>
内å˜ä½¿ç”¨å’Œåžƒåœ„¡”Ÿæˆ?/b>
虽然内å˜å¯¹äºŽ Java å®¢æˆ·æœø™ÊY仉™€šå¸¸ä¸æ˜¯ä¸€ä¸ªçªå‡ºçš„æ€§èƒ½é—®é¢˜åQŒä½†å¯¹äºŽ J2EE 应用½E‹åºå´æ˜¯ä¸€ä¸ªä¸»è¦é—®é¢˜ï¼Œ˜q™ä¸»è¦æ˜¯å› 䨓ä¼ä¸šåº”用½E‹åºé€šå¸¸ç”±å¾ˆå¤šç”¨æˆ·åŒæ—¶è®¿é—®ã€‚äØ“äº†ä‹É应用½E‹åºæœåŠ¡å™¨é«˜æ•ˆè¿è¡Œï¼Œå¯ç”¨èµ„æºåQˆåŒ…括内å˜ã€CPU 和带宽)å‡ç”±å®¢æˆ·æœºçš„è¯äh±‚å…׃ínã€‚æˆ‘ä»¬è¦æåˆ°ä¸‰ä¸ªä¸»è¦å†…å˜é—®é¢˜åQ?/p>
˜q™æ„味ç€è¦å°½å¯èƒ½åœ°é‡ç”¨å¯¹è±¡ï¼Œè€Œä¸è¦å¤ªé¢‘ç¹åœ°åˆ›å»ºæ–°å¯¹è±¡å®žä¾‹ã€‚创建的对象‘Šå¤šåQŒJVM 垃圾回收器就必须更频¾J地回收内å˜òq¶ä¼šåQˆè‡³ž®‘éƒ¨åˆ†ï¼‰ä¸æ–æ¤æ—¶çš„请求处ç†ã€‚åˆ›å»ø™®¸å¤šå¯¹è±¡è¿˜å®ÒŽ˜“å¢žåŠ å †ç¢Žç‰‡ï¼Œè€Œè¿™ä¼šå¯¼è‡´å‡ºçŽ°æ›´å¤šçš„åžƒåœ¾å›žæ”¶å‘¨æœŸã€‚ä¾‹å¦‚ï¼Œä¸è¦˜q‡æ—©åˆ›å¾å¯¹è±¡åQ?/p>
|
在本例ä¸åQŒä»…在对æ¡äšg˜q›è¡Œæ±‚å€ég¹‹åŽæ‰åº”创å»?logData。缓å˜å’Œå¯¹è±¡æ± 技术å‡å¯ä»¥å‡å°‘临时对象的创建。若è¦è¯†åˆ«ä»£ç 䏿œ€å¸¸å¯¼è‡´å†…å˜åˆ†é…问题的部分åQŒè¯·å‚阅工具ã€?/p>
ä¸è¦ž®†å¤ªå¤šä¿¡æ¯è¯»å…¥å†…å˜ä¸åQ›è€Œè¦ä½¿ç”¨¾~“å˜ä¿å˜é‡è¦çš„ä¿¡æ¯ã€‚有时å¯ä»¥é’ˆå¯¹ä¸€æ¡ä¿¡æ¯æ›´æ”ÒŽ•°æ®ç±»åž‹ã€‚例如,数æ®ä¿¡æ¯å¯ä»¥ä¿å˜åœ?java.util.Date 对象内或 long å˜é‡ä¸ã€‚与基元数殾cÕdž‹ç›¸æ¯”åQŒå¯¹è±¡é€šå¸¸æ›´å¤§åQŒå¤„ç†é€Ÿåº¦ä¹Ÿä¼šæœ‰äº›æ…¢ã€‚它å¯èƒ½ä¼šä¾èµ–于邻近çš?API 和数æ®ç±»åž‹é¦–选的数殾l“构。通常åQŒå†…å˜å 用率‘Šé«˜åQŒå°±ä¼šå¯¼è‡´åžƒåœ‘Ö›žæ”¶çŽ‡æ›´é«˜åQŒè¯·æ±‚å¤„ç†æœŸé—´æš‚åœçš„‹Æ¡æ•°ä¹Ÿä¼šå¢žåŠ ã€?/p>
å†…å˜æ³„æ¼é€šå¸¸å‡ºçްåœ?Java 集刾cÖM¸ã€‚例如,如果有一ä¸?java.util.MapåQŒåœ¨ç‰¹å®šæƒ…å†µä¸‹ï¼Œä¼šå°†æ•°æ®æ·ÕdŠ åˆ°æ˜ ž®„ä¸åQŒä½†å´æ°¸˜qœä¸ä»Žå…¶ä¸åˆ é™¤ã€‚å†…å˜æ³„æ¼ä¼šå¯ÆD‡´ Java å †ä¿ç•™çš„内å˜ä½¿ç”¨‘Šæ¥‘Šå¤§åQŒéšç€æ—‰™—´çš„å¢žåŠ ï¼Œåžƒåœ¾å›žæ”¶å™¨èƒ½é‡Šæ”¾çš„å†…å˜ä¼š‘Šæ¥‘Šå°‘ã€‚è¿™æ øP¼Œä¼šå¯¼è‡´åžƒåœ‘Ö›žæ”¶æ›´é¢‘ç¹åQŒè€Œæœ€¾lˆå°†ä½‰K—¨æˆïL³»¾lŸåœæ¢å“应。而更¾pŸç³•的是åQŒé€šå¸¸ä»…在长时间è¿è¡Œçš„‹¹‹è¯•䏿‰èƒ½å‘çŽ°å†…å˜æ³„æ¼ï¼Œä¸è¿‡å¯ä»¥ä½¿ç”¨å„ç§å·¥å…·å¸®åŠ©˜q›è¡Œæ¤ç±»åˆ†æžåQˆè¯·å‚阅工具åQ‰ã€?/p>
æ€§èƒ½å’Œå¯æ‰©å±•性代ç 设è®?/b>
设计和开å‘å¯ä¼¸ç¾ƒæ€§ä»£ç æ—¶åQŒéœ€è¦è®°ä½å¾ˆå¤šäº‹™åV€‚其䏿œ€ä¸ºé‡è¦çš„ä¸‰æ–¹é¢æ˜¯åQšç¼“å˜ã€å¯¹è±¡æ± 和信æ¯é¢„æå–åQ?/p>
例如åQŒå¯ä»¥ä»ŽåŽç«¯¾pÈ»Ÿ‹‚€ç´¢ä¿¡æ¯ï¼Œä½†ä¸ž®†æ¯ä¸ªå¯èƒ½çš„对象å‡ä»Žå˜å‚¨åŒºå¤åˆ¶åˆ°å†…å˜ä¸ï¼Œè€Œä»…åŠ è²å…¶ä¸çš„å°éƒ¨åˆ†åQŒå°†å…¶æ”¾¾|®åœ¨¾~“å˜ä¸ã€‚è¿™æ øP¼Œè¯¥ä¿¡æ¯å°±å¯¹ç¨åŽçš„引用å¯ç”¨åQˆå¯èƒ½åœ¨åŽç®‹çš„å¦ä¸€è¯äh±‚ä¸ä‹É用,甚至供å¦ä¸€ä¸ªç”¨æˆ·ä‹É用)ã€?/p>
¾~“å˜å§‹ç»ˆé‡‡ç”¨å¯¹è±¡æ˜ å°„çš„åÅžå¼ï¼Œå…ähœ‰å¤§å°ä¸Šé™ã€‚缓å˜è¿˜å¿…须知é“ä¸å¯èƒ½å†‹Æ¡è¯·æ±‚æŸä¸ªå†…容的情况åQŒä»¥ä¾¿åœ¨åˆé€‚时从缓å˜ä¸ž®†å…¶åˆ 除。这¿U排除æ“ä½œé€šå¸¸ç”±â€œç”Ÿå˜æ—¶é—´â€?TTL) 或“最˜q‘最ž®‘ä‹É用â€ç®—法确定。而且使用¾~“å˜çš„客æˆähœºä¸èƒ½ä¿è¯ž®†æˆåŠŸä»Ž¾~“嘋‚€ç´¢å¯¹è±¡ï¼›å¿…须首先‹‚€æŸ¥å¯¹è±¡æ˜¯å¦å˜åœ¨ï¼Œå¦‚果没有扑ֈ°åQŒåˆ™ž®†åˆ›å»ø™¯¥å¯¹è±¡åQ?/p>
|
åQˆåœ¨æŸäº›æƒ…况下,特定于应用程åºçš„¾~“å˜å¯ä»¥è®¾è®¡ä¸ÞZ»Žå¯¹å®¢æˆähœºé€æ˜Žçš„æŸä¸ªæ•°æ®æºæŸ¥æ‰¾æ‰€éœ€çš„æ•°æ®ã€‚)
æ¯ä¸ªè¯äh±‚都需è¦ç‰¹å®šç±»çš„实例,但æ¤å¯¹è±¡òq¶ä¸åQˆä¹Ÿä¸åº”åQ‰éœ€è¦åœ¨æ¯ä¸ªè¯äh±‚ä¸é‡æ–°åˆ›å»ºã€‚在对象创å¾å’Œåˆå§‹åŒ–开销很大的情况下åQŒå°¤å…¶æ˜¯˜q™æ ·ã€‚客æˆähœºå¯ä»¥ä¸æŽ¥å—性能命ä¸åQŒè€Œä»Žæ± ä¸è¯äh±‚对象åQŒç„¶åŽåœ¨ç”¨å®Œä¹‹åŽž®†å…¶˜q”å›žæ± ä¸ã€?/p>
|
˜q™æ„味ç€å¯¹è±¡çš„æ‰€æœ‰ä¸åŒå®žä¾‹åœ¨½E‹åºåˆå§‹åŒ–阶ŒDµåˆ›å»ºï¼Œž®†åœ¨éšåŽé‡ç”¨å’Œå¼•用。java.lang.Boolean ¾cÕd°±æ˜¯å·²è§„范化对象的例å。åªéœ€è¦æœ‰ä¸¤ç§ä¸åŒçš?Boolean 对象å›_¯åQˆæœ€å¥½èƒ½ä½œäؓ常数讉K—®åQ‰ã€‚åŒæ øP¼Œä¹Ÿå¯ä½¿å…¶ä»–对象ä‹É用一¾l„固定的åªè¯»å†…部状æ€ã€?/p>
例如åQŒåœ¨ Portlet ä¸ï¼Œå¯ä»¥æä¾›ä¸€ä¸ªç”µå邮件列表;è¯?Porlet ž®†æ˜¾½CÞZ¸»é¢˜ã€æ—¥æœŸã€å‘ä»¶äh和其他é‡è¦ä¿¡æ¯ã€‚当用户选择了特定的电åé‚®äšgæ—Óž¼Œž®†æ˜¾½Cø™¯¥é‚®äšgçš„æ£æ–‡ã€‚在ä»?Porlet ä¸é€‰æ‹©ç‰¹å®šçš„项之å‰åQŒä¸éœ€è¦æ£æ–‡ï¼Œå› æ¤æå‰‹‚€ç´¢æ£æ–‡å°†‹¹ªè´¹æ‰§è¡Œæ—‰™—´å’Œå†…å˜èµ„æºã€‚è¿™¿U模å¼åœ¨å¾ˆå¤šæƒ…况下都适用。æ€Èš„原则是,仅计½Ž—å’Œ‹‚€ç´¢å¯¹äºŽå½“å‰è¯·æ±‚å’Œå“应有直接æ„义的信æ¯ã€?/p>
IBM WebSphere Application Server æ˜?J2EE 实现åQŒWebSphere Portal ž®±æž„å»ÞZºŽå…¶ä¸Šã€‚由于本部分ä¸å¾ˆå¤šæ€§èƒ½æ³¨æ„事项适用äº?J2EE ˜q行时上下文åQŒæ‰€ä»¥å…¶ä¸çš„很多信æ¯é™¤äº†é€‚用äº?WebSphere Application Server 之外åQŒä¹Ÿé€‚ç”¨äºŽå…¶ä»–åº”ç”¨ç¨‹åºæœåС噍å’?J2EE 应用½E‹åºã€‚䏋颿‰€åˆ—出的项目在æ¤å¤„åªè¿›è¡Œäº†½Ž€å•概˜qŽÍ¼Œž®†åœ¨åŽé¢˜q›è¡Œæ›´äؓ详细的说明。有å…Ïx›´å¤šçš„一般性讨论,请å‚é˜?a >å‚考资æ–?/font>ã€?/p>
J2EE æ ‡å‡†
J2EE æ ‡å‡†è§„èŒƒåŒ…å«äº†å¤§é‡ä¸Žæ€§èƒ½ç›¸å…³çš„事™å¹ï¼š
应当使用åˆå§‹æ–ÒŽ³•计算所有åŽé¢å°†ç”¨åˆ°ä¸”ä¸ä¼šå‘生更改的内容åQˆå¾ˆå¤?J2EE 资æºéƒ½å¯ä»¥ä‹É用åˆå§‹æ–¹æ³•,Portlet 也å¯ä»¥ä‹É用椾cÀL–¹æ³•ï¼‰ã€‚ä¾‹å¦‚ï¼Œæ•°æ®æºç‰æ™®é€šèµ„æºçš„ JNDI ½E‹åºåº”该仅在åˆå§‹åŒ–时执行一‹Æ¡ã€‚æ¤å¤–,也应该仅åœ?Portlet åˆå§‹åŒ–期间读å–一‹Æ¡æ¥è‡ªç‰¹å®šåªè¯ÀL–‡ä»¶çš„æ•°æ®ã€‚å¯ä»¥å¯¹ Portlet æœåŠ¡æ–ÒŽ³•˜q›è¡Œæ‰«æåQŒä»¥å‘现所有对æ¯ä¸ªè¯äh±‚æ‰§è¡Œç›¸åŒæ“作的代ç ,ž®†å…¶¿UÕdŠ¨åˆ°åˆå§‹æ–¹æ³•ä¸åQŒä»¥é™ä½Žè¯¥æœåŠ¡æ–¹æ³•çš„˜q行时开销ã€?/p>
EJB å’Œä¼šè¯æ˜¯ J2EE ä¸éžå¸”R‡è¦ä¸”功能强大的概念,但如果ä‹É用ä¸å½“,二者å‡å¯èƒ½å¯ÆD‡´æ€§èƒ½æŸå¤±ã€‚例如,应用½E‹åºä¸åº”ž®†è¿‡å¤šçš„æ•°æ®æ”„¡½®åˆîC¼šè¯ä¸åQŒä»Žè€Œå‡ž®‘æœåŠ¡å™¨çš„å†…å˜å ç”¨åÆˆæ›´å¿«é€Ÿæ–¹ä¾¿åœ°ä¿æŒä¼šè¯ã€‚å…³äº?EJB ¾l„äšgåQŒåº”该熟悉与˜qœç¨‹è°ƒç”¨å’Œæœ¬åœ°è°ƒç”¨ç‰ç›¸å…³çš„ä¸åŒæŒä¹…类型。EJB å¯ä»¥ä½¿ç”¨çš„æŸäº›åŠŸèƒ½ä¼šå¸¦æ¥å¤§çš„æ€§èƒ½æŸå¤±ã€?/p>
WebSphere Application Server
WebSphere Application Server äº§å“æä¾›äº†å„¿U功能,以帮助开å‘äh员和架构师设计高性能¾pÈ»Ÿã€‚(请å‚é˜?a >å‚考资æ–?/font>ä¸ç»™å‡ºçš„ WebSphere Application Server ä¿¡æ¯ä¸å¿ƒå’?WebSphere Business Integration Server Foundation ä¿¡æ¯ä¸å¿ƒåQ‰ã€?/p>
䏋颿‰€¾l™çš„½CÞZ¾‹æ¼”示了多个请求对˜qžæŽ¥˜q›è¡Œé‡ç”¨ã€‚在本例ä¸ï¼Œå¯ä»¥ä½¿ç”¨ JDBC ˜qžæŽ¥æ± 和利用 Application Server æä¾›çš„è¯å¥ç¼“å˜ï¼š
|
WebSphere Application Server ˜q˜æ”¯æŒå¯¹è±¡æ± 的常规概念,æ¯ä¸ªå¯¹è±¡æ± å‡å…ähœ‰æ± 管ç†å™¨åQŒä»Žè€ŒäØ“ä¸åŒ¾cȱ»åž‹æä¾›å¯¹è±¡æ± 讉K—®ã€‚å¯ä»¥æŸ¥è¯¢æ¤¾cÕd¯¹è±¡æ± 以获得类¾cÕdž‹å®žä¾‹åQŒå¦‚å‰é¢å…³äºŽæ± 技术的½CÞZ¾‹ä¸æ‰€˜q°ã€‚请å‚阅 WebSphere Business Integrator Server Foundation ä¿¡æ¯ä¸å¿ƒä»¥èŽ·å¾—è¯¦¾l†ä¿¡æ¯ã€?/p>
WebSphere Application Server ˜q˜æä¾›äº†â€œä¸€èˆ¬ç”¨é€”â€çš„¾~“å˜ã€‚在½Ž¡ç†æŽ§åˆ¶åîC¸åQŒå¯ä»¥å®šä¹‰ç¼“å˜å®žä¾‹ï¼Œåº”用½E‹åºå¯ä»¥ä½¿ç”¨˜q™äº›¾~“å˜å®žä¾‹å˜å‚¨ã€æ£€ç´¢å’Œå…׃ínæ•°æ®ã€‚与¾~ºçœå…׃ín动æ€ç¼“å˜ï¼ˆé—¨æˆ·ä½¿ç”¨å…¶ç¼“å˜å¯¹è±¡ï¼‰ä¸åŒåQŒç¼“å˜å®žä¾‹ä»…å¯ç”±çŸ¥é“å…?JNDI å称的应用程åºè®¿é—®ã€‚DistributedMap ¾cÀL˜¯åº”用½E‹åºæ‰€ä½¿ç”¨çš„ç¼–½E‹æŽ¥å£ï¼Œè¯¥ç±»å…许应用½E‹åºä»Žç¼“å˜å®žä¾‹èŽ·å¾—å¯¹è±¡å’Œž®†å¯¹è±¡æ”¾¾|®åˆ°å…¶ä¸åQŒåƈå¯ä»¥ä½¿å…¶å¤±æ•ˆã€‚请å‚阅 WebSphere Business Integrator Server Foundation ä¿¡æ¯ä¸å¿ƒä»¥èŽ·å¾—è¯¦¾l†ä¿¡æ?[8] (LINK)ã€?/p>
如果 Portlet 使用¾~“å˜å®žçްåQŒå®ƒä»¬åº”该在其åˆå§‹é˜¶ŒD‰|Ÿ¥æ‰¾æˆ–实例化一个缓å˜å®žä¾‹ï¼Œòq¶ä¿æŒè¯¥¾~“å˜çš„引用,以ä‹É¾~“å˜æ¡ç›®å…ähœ‰å¯èƒ½æ¯”å•ä¸ªè¯·æ±‚é•¿çš„ç”Ÿå˜æœŸã€‚åœ¨å¤„ç† Portlet çš„æ“作和呈现阶段æ—Óž¼Œå¯ä»¥ž®†æ¡ç›®æ”¾¾|®åˆ°¾~“å˜ä¸ï¼Œòq¶ä»Žä¸è¿›è¡Œæ£€ç´¢ã€‚Portlet 实现需è¦ç¡®ä¿å¦‚æžœä‹É用特定键查询æ—Óž¼Œ¾~“å˜æ²¡æœ‰˜q”回数æ®åQŒåº”有适当的åŽç«¯è®¿é—®å’Œ¾~“嘘q›è¡Œæ›´æ–°å¤„ç†ã€‚å¦å¤–,˜q˜è¦æ³¨æ„åQŒäؓ了实现设计的特定功能åQŒå¯èƒ½éœ€è¦é™å®šé”®åœ¨ç¼“å˜ä¸çš„范å›ß_¼ˆå¦‚,åŸÞZºŽç”¨æˆ·ä¼šè¯åQ‰ã€‚缓å˜é€šå¸¸ä¸ø™‡ªæˆ‘管ç†çš„å•å…ƒåQŒæ ¹æ®ç¼“å˜å®žçŽŽÍ¼Œå¯ä»¥æŽ’除æ¡ç›®æˆ–ä‹É其失效。请注æ„åQŒå‡ºäºŽåŒæ ïLš„åŽŸå› åQŒç¼“å˜åƈä¸é€‚åˆåœ¨å¤šŒDµä»£ç é—´˜q›è¡Œä¿¡æ¯é€šä¿¡ã€‚缓å˜è¿˜åº”该¾l´æŠ¤ä¸€ä¸ªåˆç†çš„大å°ä¸Šé™åQŒä»¥é¿å…自定义代ç ä¸å†…å˜çš„过度ä‹É用ã€?/p>
WebSphere Portal 支æŒä¸¤ç§ä¸åŒçš?Portlet APIåQ?/p>
在本文ä¸åQŒæˆ‘们将é‡ç‚¹è®¨è®º JSR 168 Portlet APIã€?/p>
WebSphere Portal æä¾›äº†å„¿U接å£ï¼Œç”¨äºŽž®?Portlet 集æˆåˆ?WebSphere Portal 环境ä¸ã€‚å› æ¤ï¼Œåº”该谨慎设计 PortletåQŒä»¥å……分利用å„ç§é—¨æˆ·åŠŸèƒ½ã€‚è¯·¼‹®ä¿é‡‡ç”¨æœ€ä½›_®žè·µï¼ˆè¯·å‚é˜?a >å‚考资æ–?/font>ä¸åˆ—出的最佛_®žè·µï¼‰åQŒä»¥åº”用æ°å½“çš?WebSphere Portal APIã€?br />
常è§çš„实现注æ„事™å?/font>
在本部分ä¸ï¼Œæˆ‘们ž®†è®¨è®ÞZ¸Žä¸»é¢˜å’Œå¤–è§‚ç¼–½E‹ä»¥å?Portlet å¼€å‘相关的性能主题ã€?/p>
JavaServer Page (JSP) æ˜?Portlet ¾~–程的基¼‹€ä¹‹ä¸€ã€‚在大多æ•?Portlet ä¸ï¼ŒJSP 通过使用 Model View Controller (MVC) ä½œäØ“è§†å›¾¾l„äšg使用。JSP ç”?HTMLåQˆæˆ–å…¶ä»–æ ‡è®°è¯è¨€åQ‰ç»„åˆå’Œ Java ä»£ç ¾l„æˆåQ›åœ¨å¤§å¤šæ•?HTML ä¸ï¼Œå®ƒä»¬çš„处ç†è¾“å‡ÞZ¹Ÿæ˜¯æ ‡è®°è¯a€ã€‚其最½Ž€å•的形å¼ä¸ï¼ŒJSP ä¸åŒ…å«ä“Qä½?Java 代ç åQŒä½†ä»…包å«è‡ªå®šä¹‰æ ‡è®°åQŒè°ƒç”¨è¿™äº›æ ‡è®îC»¥æ‰§è¡Œé?HTML æ“作。(相å圎ͼŒJSP æ–‡äšgä¸ä¹Ÿå¯èƒ½ä¸åŒ…å«ä“Qä½?HTML 内容åQ‰ã€?/p>
˜q™ä¸Žå…¶ä»–ç”Ÿæˆ HTML 内容的方法(XML å’?XSLTåQ‰ä¸ä¸€æ —÷€‚ä‹É用其他方法时åQŒå¯¹äºŽæ¯‹Æ¡è¯·æ±‚éƒ½å¿…é¡»è§£æž XML å’Œåº”ç”¨æ ·å¼è¡¨è½¬æ¢ã€‚åªæœ‰å¾ˆå¥½åœ°¾~“å˜äº†ç»“果而ä¸éœ€æ¯æ¬¡è¯äh±‚éƒ½é‡æ–°è¿è¡Œè{æ¢ï¼Œæ‰èƒ½ä¿è¯æ€§èƒ½ã€‚å› æ¤ï¼Œä»Žæ€§èƒ½çš„角度出å‘,JSP 应该优于 XML/XSLT。æ¤å¤–,门户基础设施˜q˜é’ˆå¯?JSP ˜q›è¡Œäº†ä¼˜åŒ–,å…许方便地扩展以支æŒå…¶ä»–æ ‡è®°ã€è¯a€å’Œæµè§ˆå™¨ã€?/p>
应用½E‹åºæœåŠ¡å™¨æ‰§è¡?JSP 的方å¼ä¸Žæ‰§è¡Œå¸¸è§„ Servlet ¾cÖM¼¼ã€‚丘q‡ï¼ŒJSP ¾~–译产生çš?Servlet 包å«ç”Ÿæˆçš„代ç ,˜q™äº›ä»£ç 的性能优化½E‹åº¦½E逊于手动¾~–写的代ç 。如果性能对于特定 JSP éžå¸¸é‡è¦åQŒè€Œä‹É用生æˆçš„代ç åˆä¸èƒ½è¾¾åˆ°ç›®çš„,误‚€ƒè™‘手动ž®†æ ‡è®°ç¼–写到输出‹¹ä¸ã€?/p>
JSP ä¸çš„ Java 代ç 片斿UîCØ“ Scriptlet。由äº?JSP ž®†è{æ¢äØ“ Java æºä»£ç ï¼Œå› æ¤ä½¿ç”¨ Scriptilet òq¶æ²¡æœ‰çœŸæ£çš„æ€§èƒ½æŸå¤±ã€‚WebSphere Application Server 的最新版本ä¸çš„æŸäº›ä¼˜åŒ–å°†åœ?JSP æ–‡äšgä¸åŒ…å«ä“Qä½?Scriptlet 的情况下应用。通常åQŒä¸åº”å°† Scriptlet ä»£ç æ”„¡½®åˆ?JSP ä¸ï¼Œè€Œåº”ä½¿ç”¨æ ‡è®°å®Œæˆ˜q™äº›ä»ÕdŠ¡ã€?/p>
JSP ä¸å¯ä»¥åŒ…å«å…¶ä»?JSP。这æ„味ç€å•个 JSP ä¸å¿…对请求作出全部å“应;å¯ä»¥ž®†å“åº”æ‹†åˆ†äØ“å¤šä¸ª JSPåQŒåœ¨çˆ?JSP ä¸åŒ…括其ä»?JSP。有两ç§åŒ…嫿–¹å¼åQŒé™æ€åŒ…å«å’ŒåЍæ€åŒ…å«ï¼š
陿€?JSP 包å«åœ¨ç¼–译时解æžã€‚JSP ¾~–è¯‘å™¨ä¼šåŒ…å«æ‰€å¼•用的文ä»Óž¼Œè€Œä¸åŒ…å« include è¯å¥ã€‚æ¤é€‰é¡¹é€šå¸¸éžå¸¸å¿«ï¼Œå®Œå…¨ä¸ä¼šå¢žåŠ ˜q行时开销ã€?/p>
|
动æ€?JSP 包å«åœ¨è¿è¡Œæ—¶è§£æžåQŒå¼€é”€òq¶ä¸ž®ã€‚就垃圾生æˆå’Œæ‰§è¡Œæ—¶é—´è€Œè¨€åQŒè§£æžè¦è°ƒåº¦çš„æ£¼‹?JSP 开销éžå¸¸å¤§ã€‚例如(åœ?JSP ä¸ï¼‰åQ?/p>
|
JSP ä¸çš„动æ€åŒ…å«åœ¨é€šè¿‡ Servlet 代ç 包å«å…¶ä»–æ–‡äšgæ—¶ä‹É用如下è¯å¥ï¼š
|
å› æ¤åQŒåªè¦æœ‰å¯èƒ½åQŒåº”该尽é‡ä‹Éç”¨é™æ€åŒ…å«ã€‚动æ€åŒ…å«æä¾›äº†æœ€é«˜çš„ç‰|´»æ€§ï¼Œä½†å¦‚æžœä‹É用过于频¾J,会带æ¥å·¨å¤§çš„æ€§èƒ½å¼€é”€ã€?/p>
Enterprise JavaBean (EJB) 定义了一个基于组件的体系¾l“æž„åQŒç”¨äºŽæž„å»ºå¯æ‰©å±•的分布å¼å¤šç”¨æˆ·ä¸šåŠ¡åº”ç”¨ç¨‹åºã€‚EJB ¾l„äšg设计用于ž®è£…业务逻辑åQŒåÆˆåŒæ—¶ž®†æ‰€æœ‰çš„夿‚性éšè—在 Bean 和内¾|?EJB 容器æœåŠ¡åŽã€?/p>
对ä¼ä¸šåº”用程åºé¢‘¾Jä‹É用的å„ç§åŠŸèƒ½çš„æ”¯æŒä¼šå¸¦æ¥ä¸€å®šçš„æ€§èƒ½å¼€é”€åQŒåœ¨ä½¿ç”¨ EJB æ—‰™œ€è¦åŠ ä»¥è€ƒè™‘ã€?/p>
Portlet å¯ä»¥é€šè¿‡ JNDI æŸ¥è¯¢åŒ…å« EJB 引用åQŒè€?JNDI 查询在性能斚w¢å¼€é”€å¾ˆå¤§ã€‚例如,如果 Portlet òq¶ä¸¾~“å˜å¯?EJB ä¸ÀLŽ¥å£çš„引用åQŒåˆ™æ¯ä¸ªå¯?EJB 的逻辑引用需è¦ä¸¤‹Æ¡è¿œ½E‹è°ƒç”¨ï¼šä¸€ä¸ªè°ƒç”¨å‘½åæœåŠ¡ï¼Œå¦ä¸€ä¸ªè°ƒç”¨å®žé™…çš„å¯¹è±¡ã€‚äØ“äº†æ”¹˜q›è¿™¿U情况,请ä‹Éç”¨ç¼“å˜æŠ€æœ¯ä»¥å‡å°‘或消除对 EJB ä¸Õd¼•用的é‡å¤æŸ¥è¯¢ã€?/p>
EJB ¾l„äšgž®†å…¬å¼€˜qœç¨‹æŽ¥å£å’Œæœ¬åœ°æŽ¥å£ã€‚ä¾èµ–于ä½ç½®çš?EJB ž®†ä‹É用远½E‹æŽ¥å£ã€‚æ–¹æ³•å‚æ•°å’Œ˜q”回值将åœ?RMI-IIOP 上åºåˆ—化åQŒåÆˆç”±å€ÆD¿”回。远½E‹æ–¹æ³•å¿…™å»è®¾è®¡äؓ能够æ ÒŽ® API çš„ä‹Éç”¨æ¨¡å¼æ»¡‘Ïx•°æ®éœ€æ±‚。请使用 API ä¸çš„é€‚åˆæŽ¥å£çš„ä‹É用情å†ëŠš„æ–ÒŽ³•和数æ®ç±»åž‹ç²’度,以尽å¯èƒ½å‡å°‘åºåˆ—化开销ã€?
ž®½å¯èƒ½å‡ž®‘远½E‹è°ƒç”¨çš„æ•°é‡åQŒä»¥å‡å°‘ç”׃ºŽä»£ç 路径ä¸çš„˜qœç¨‹è°ƒç”¨å¸¦æ¥çš„ç³»¾lŸå¼€é”€ã€‚ä‹É用会è¯?Bean ä½œäØ“˜qœç¨‹å¤–观使用åQŒå¯¹å¤æ‚交互˜q›è¡ŒåŒ…装åQŒåƈå‡å°‘ Portlet 和域对象间的˜qœç¨‹è°ƒç”¨ã€‚直接访问远½E‹å®žä½?Bean çš?Portlet 通常会导致多个远½E‹æ–¹æ³•调用。如果在æ¤çŽ¯å¢ƒä¸ä½¿ç”¨å®žä½“ BeanåQŒè¯·é¿å…¾l™äºˆå…¶è¿œ½E‹æŽ¥å£ã€‚ä½œä¸ºå¤–è§‚çš„ä¼šè¯ Bean ž®†é€šè¿‡å…¶æœ¬åœ°æŽ¥å£è®¿é—®å®žä½?BeanåQŒä»Žå…¶æ”¶é›†æ•°æ®ï¼Œç„¶åŽž®†æ¤ä¿¡æ¯˜q”回å‘出调用的应用程åºã€?/p>
当å‘凸™°ƒç”¨çš„客户机(如会è¯å¤–观)与被调用çš?EJB å…׃ínåŒä¸€ä¸ªå®¹å™¨æ—¶åQŒæœ¬åœ°æŽ¥å£çš„æ¦‚念ž®†ä¼šæœ‰æ•ˆæžœã€‚ä‹É用本地接å£å¯ä»¥æ¶ˆé™¤åˆ†å¸ƒå¼å¯¹è±¡å议的系¾lŸå¼€é”€åQŒä»Žè€Œé™ä½Žè¿›½E‹é—´é€šä¿¡å¼€é”€ã€‚æœ¬åœ°è°ƒç”¨åÆˆä¸ä¼šé€šè¿‡é€šä¿¡å±‚,所有对象å‡å¯ä»¥é€šè¿‡å¼•ç”¨ä¼ é€’ã€?/p>
EJB 容器支æŒçš„事务管ç†ä¹Ÿå¯ä»¥å½±å“性能。开å‘了 EJB åŽï¼Œ½E‹åºå‘˜å¿…™å»è®¾¾|®å®šä¹‰å„¿U特å¾ï¼ˆå¦?EJB 的事务支æŒå’Œéš”离¾U§åˆ«åQ‰çš„部çÖvæè¿°½W¦ã€‚如果ä¸éœ€è¦äº‹åŠ¡ï¼Œè¯·å°†äº‹åŠ¡¾cÕdž‹è®„¡½®ä¸?NotSupportedã€?/p>
事务隔离¾U§åˆ«æ˜¯åŸº¼‹€æ•°æ®åº“将已更改但ž®šæœªæäº¤çš„æ•°æ®å‘å…¶ä»–äº‹åŠ¡å…¬å¼€çš„ç¨‹åº¦ã€‚äØ“äº†èŽ·å¾—æœ€ä½³çš„æ€§èƒ½åQŒè¯·ä½¿ç”¨è‡ªç”±éš”离¾U§åˆ«ã€‚丘q‡ï¼Œè®©å…¶äº‹åŠ¡çœ‹åˆ°æœªæäº¤çš„æ•°æ®å¯ä»¥å¸¦æ¥æ„料之外的副作用åQŒå¦‚更新冲çªå’Œè¯»å–ä¸ä¸€è‡´ç‰ã€‚有兛_¦‚何设¾|®é𔼛Èñ”别的说明åQŒè¯·å‚阅 WebSphere Application Server V5.1.x ä¿¡æ¯ä¸å¿ƒã€?/p>
请å‚é˜?IBM 白皮ä¹?WebSphere Application Server Development 性能和扩展性最佛_®žè·?/font>å’?IBM ¾U¢çš®ä¹?IBM WebSphere V5.1 æ€§èƒ½ã€æ‰©å±•性和高å¯ç”¨æ€?WebSphere 手册¾pÕdˆ—åQŒä»¥è޷得其他廸™®®ä»¥åŠå…³äºŽæ¯ä¸ªå»ø™®®çš„相关ç†ç”±ã€?/p>
æ ‡è®°å¤§å°æŒ‡ä»Žé—¨æˆ·æœåŠ¡å™¨ä¼ è¾“åˆ°å®¢æˆ·æœºçš„å®Œå…¨å‘ˆçŽ°é—¨æˆ·™åµé¢çš„å—节数é‡ã€‚从门户æœåŠ¡å™¨çš„è§’åº¦æ¥çœ‹åQŒæœ€é‡è¦çš„部分是包嫾l“æžœæ ‡è®°çš?HTML ™åµé¢çš„大ž®ã€‚也必须ž®†å…¶ä»–æ–‡ä»Óž¼ˆå¦‚æ ·å¼è¡¨ã€å›¾åƒæˆ– JavaScriptåQ‰ä¼ è¾“åˆ°å®¢æˆ·æœºã€‚ç”±äºŽé™æ€æ–‡ä»‰™€šå¸¸ä¿å˜åœ?HTTP æœåŠ¡å™¨æˆ–ä»£ç†¾~“å˜ä¸Šçš„门户¾pÈ»Ÿä¹‹å¤–åQŒæ‰€ä»¥ï¼Œæ¤å¤„我们ž®†ä¸»è¦è®¨è®ºâ€œçœŸæ£çš„â€HTML æ ‡è®°å¤§å°ã€?/p>
到底å‡ÞZºŽä»€ä¹ˆåŽŸå› éžå¾—å…³æ³¨æ ‡è®°å¤§ž®å‘¢åQŸåœ¨å…¬å¸çš„内部网内,¾|‘络带宽的问题å¯èƒ½ä¼šž®‘一些,但如果用户通过调制解调器或其他低带宽网¾lœè¿žæŽ¥åˆ°é—¨æˆ·åQŒå¤§åž?HTML å“应很长的下载时间å¯èƒ½ä¼šä»¤ähéžå¸¸å—ä¸äº†ã€?/p>
让我们进行一个简å•的计算。å‡è®¾æœåŠ¡å™¨æˆ–é›†¾Ÿ¤æ¯¿U’é’Ÿæœ€å¤šèƒ½å¤„ç† 100 个请求。HTML ™åµé¢å¤§å°åº”该ä¸?100KBåQŒè¿™ä¸ªå€ÆD™½ç„¶çœ‹ç€å¾ˆå¤§åQŒä½†å¦‚果在页é¢ä¸Šæœ‰å¤æ‚的主题和若òq²ä¸ª PortletåQŒå°±å¾ˆå®¹æ˜“达到这个大ž®ã€‚对于æœåС噍åQŒè¿™æ„味ç€å¿…é¡»æä¾›¾U?10MB/sec 的速度åQ?00 KB * 100 ™åµé¢/¿U’)。而这个值是 100MB 的网¾lœå¯ä»¥å¤„ç†çš„æœ€å¤§é€šä¿¡‹¹é‡ã€‚(以太¾|‘ä¸å¯èƒ½ç™‘Öˆ†ä¹‹ç™¾åœ°æ”¯æŒå…¶ 100MB/sec 的速度åQŒä¸”ä¼ å…¥é€šä¿¡‹¹é‡ä¹Ÿä¸å®¹å¿½è§†ã€‚对于通过 56K è°ƒåˆ¶è§£è°ƒå™¨è¿žæŽ¥åˆ°é—¨æˆ·çš„ç”¨æˆøP¼Œæ¯ä¸ª™åµé¢çš„下载时间应åœ?15 ¿U’的旉™—´èŒƒå›´å†…ï¼åQ?/p>
多大能称为太大?˜q™ä¸ªé—®é¢˜é€šå¸¸å¾ˆéš¾å›žç”。丘q‡ï¼Œæ¯ä¸ª HTML ™åµé¢çš„大ž®è¶…˜q?100KB å¯èƒ½ž®±å¤ªå¤§äº†ã€‚å¦å¤–,˜q˜è¦è®îC½åQŒè¾ƒž®çš„讑֤‡å¯¹å…¶å¯ä»¥å¤„ç†çš„æ¯ä¸ªè¯·æ±‚çš„æ ‡è®°å¤§å°æœ‰ä¸€å®šçš„é™åˆ¶ã€?/p>
æž„æˆæ ‡è®°å¤§å°çš„主è¦å†…å®ÒŽ˜¯ä¸»é¢˜å’?Portlet 输出。由于所有门æˆ?JSP å‡å¯è‡ªå®šä¹‰ï¼Œæ‰€ä»¥å¯ä»¥æ”¹å˜æ ‡è®°çš„在终端的紧凑½E‹åº¦ã€‚è¦é™åˆ¶æ ‡è®°å¤§å°åQŒå¯ä»¥é‡‡å–以下措施:
åœ?JSP ä¸ä‹Éç”?JSP 注释åQŒè€Œä¸æ˜?HTML 注释ã€?/b>
JSP ¾~–è¯‘å™¨å°†åˆ é™¤½H—体注释 <%-- ... --%>åQŒè€Œä¿ç•™çª—体注é‡?<!-- ... -->òq¶å°†å…‰™€šè¿‡¾|‘ç»œä¼ è¾“ã€?/p>
ž®½é‡å‡å°‘ JSP æºæ–‡ä»¶ä¸çš„空白ã€åˆ¶è¡¨ç¬¦å’Œåˆ†è¡Œç¬¦åQŒå› ä¸?JSP ¾~–译器将会ä¿ç•™è¿™äº›å†…å®V€?/b>
˜q™å¯èƒ½ä¼šé™ä½Žä»£ç çš„å¯è¯ÀL€§ã€‚这些内容å¯ä»¥å¸®åЩ开å‘布局良好的代ç ,但在 JSP æ–‡äšg应用到生产环境å‰åQŒå°†ä½¿ç”¨å·¥å…·å¯¹å…¶˜q›è¡Œå¤„ç†åQŒé™¤åŽÕd…¶æ ¼å¼è®„¡½®ã€?/p>
ž®½é‡é¿å…多次å‘客æˆähœºå‘é€ç›¸åŒçš„ä¿¡æ¯ã€?/b>
例如åQŒæ ·å¼å®šä¹‰åº”当放入独立的 CSS æ–‡äšgä¸ã€‚JavaScript 代ç 也应如æ¤ã€‚而且åQŒç”±äºŽè¿™äº›ç‹¬ç«‹çš„æ–‡äšg通常ä¸ä¼šæ›´æ”¹åQŒå› æ¤å¯ä»¥å°†å…¶ç¼“å˜åœ¨‹¹è§ˆå™¨æˆ–代熾~“å˜ä¸ï¼Œä»Žè€Œè¿›ä¸€æ¥å‡ž®‘网¾lœé€šä¿¡‹¹é‡ã€?/p>
如果您的环境讄¡½®ä¸ºæ”¯æŒåŽ‹¾~©ï¼Œ˜q˜å¯ä»¥ä‹Éç”?HTTP 压羃ž®†åŽ‹¾~©è¿‡çš„æ ‡è®°å‘é€åˆ°çš„客æˆähœºã€?/b>
请å‚è€?Web æœåŠ¡å™¨å’Œå®¢æˆ·æœºçš„æ–‡æ¡£åQŒä»¥èŽ·å¾—è¯¦ç»†ä¿¡æ¯ã€?/p>
日志通常最¾lˆä¼šæ¶‰åŠåˆ°å¯¹¼‹¬ç›˜å†™å…¥ã€‚从性能的角度而言åQŒä“Q何与¼‚盘频繘q›è¡Œäº¤äº’的内定wƒ½æ˜¯æ½œåœ¨çš„大开销æ“作åQŒå› æ¤ï¼Œæœ€å¥½å°½é‡å‡ž®‘在生äñ”环境ä¸ä‹Éç”?Java I/O 库。由于通常通过使用æŸäº› Java ¾~–程之下的本机库æä¾› I/OåQŒå› æ¤ä¼šæœ‰ä¸€å®šçš„¾~ºçœ¾pÈ»Ÿå¼€é”€ã€‚System.out.println 之类的æ“作在文äšg I/O 期间会对处熘q›è¡ŒåŒæ¥åQŒè¿™ž®†å¯¹æ€§èƒ½é€ æˆå¾ˆå¤§çš„媄å“ã€?/p>
在开å‘å’Œ‹¹‹è¯•模å¼ä¸ï¼Œå¯èƒ½å¸Œæœ›æ‰€æœ‰æ—¥å¿—记录和调试功能å‡äØ“‹zÕdŠ¨çŠ¶æ€ï¼Œå› 䨓˜q™äº›åŠŸèƒ½å¯¹äºŽå‘现错误éžå¸¸é‡è¦ã€‚在生äñ”环境ä¸éƒ¨¾|²åº”ç”¨ç¨‹åºæ—¶åQŒè®©å„ç§æ—¥å¿—功能å‡å¤„于打开状æ€åƈéžå¯è¡Œçš„选择。最佛_®žè·µåº”是对日志è¯å¥åŠ ä»¥ä¿æŠ¤åQŒä‹É其仅在出错和˜q›è¡Œè°ƒè¯•的情况下打开。å¯ä»¥é€šè¿‡ä½¿ç”¨ä¸€ä¸ªæœ€¾lˆçš„ Boolean å˜é‡å®žçްæ¤åŠŸèƒ½ï¼Œå½“å°†å…¶å€ÆD®¾¾|®äØ“ false æ—Óž¼Œå¯ä»¥æœ‰æ•ˆåœ°æŒ‡½Cºç¼–译器˜q›è¡Œä¼˜åŒ–åQŒä¸å†æ£€æŸ¥å’Œæ‰§è¡Œæ—¥å¿—记录代ç åQ?/p>
|
Java è¯è¨€æä¾›äº†ä¸¤¿UæµåQšè¯»å–器/写入器和输入/输出åQ?/p>
è¯Õd–å™?写入器有性能开销åQŒå› 为它们旨在用于嗽W¦æµåQŒä¸”会在åŽå°ž®†æ•°æ®ç¼–ç 䨓å—节。åªè¦å¸Œæœ›æ“作二˜q›åˆ¶æ•°æ®åQŒå°±åº”该使用输入/输出‹¹ã€?/p>
ä¸ÞZº†ž®½å¯èƒ½æé«?I/O 性能åQŒåº”该对è¯Õd–和写入æ“作进行缓å˜ã€‚å¦‚æžœå¸Œæœ›å†™å…¥å¤§é‡æ¥è‡?Portlet 的数æ®ï¼Œé€šå¸¸æœ€å¥½é‡‡ç”¨å¯¹å·²ç¼“å˜çš„æ•°æ®˜q›è¡Œéƒ¨åˆ†åˆäh–°çš„æ–¹å¼ï¼Œè€Œä¸é‡‡ç”¨å¯¹å…¨éƒ¨æ•°æ®ä¸€‹Æ¡æ€§åˆ·æ–°çš„æ–¹å¼ã€‚å¦ä¸€æ–šw¢åQŒä¸è¦å¤ªé¢‘ç¹åœ°åˆ·æ–°ç¼“冲区ã€?/p>
用于å调对共享对象的讉K—®çš?Java 机制¿UîCØ“åŒæ¥ã€‚åŒæ¥è¯å¥ä¸€‹Æ¡ä»…å…许一个线½E‹è¿›å…¥ä»£ç å—ã€?/p>
åœ?Portlet çš„ç”Ÿå˜æœŸä¸ï¼Œå®¹å™¨ä¼šå°†ä¸åŒ¾U¿ç¨‹ä¸çš„æœåŠ¡è¯äh±‚å‘é€åˆ°å•个 Portlet 实例。请é¿å…åœ?Portlet ä¸è¿›è¡ŒåŒæ¥ï¼Œå› äØ“åŒæ¥æœ‰å¾ˆå¤§çš„æ€§èƒ½å½±å“åQšåŒæ¥ä¼šå‡å°‘òq¶å‘åQŒå› ä¸ºåœ¨åŒæ¥å—ä¸ä¸€‹Æ¡ä»…å…许˜q行一个线½E‹ï¼Œæ‰€æœ‰åƈå‘çš„¾U¿ç¨‹éƒ½è¦˜q›è¡ŒæŽ’队。å¦å¤–,Java 虚拟æœÞZ¼šä½¿ç”¨ç›‘视器以支æŒåŒæ¥åQŒç®¡ç†è¿™äº›ç›‘视器也有性能开销。除了性能影å“之外åQŒè¿˜å¯èƒ½å‡ºçްæ»é”åQŒè€Œè¿™å¯èƒ½å¯ÆD‡´å•个 Portlet å†È»“åQŒæˆ–者甚è‡Ïx›´¾pŸï¼Œå¯ÆD‡´æ•´ä¸ªé—¨æˆ·å†È»“ã€‚ç”±äºŽç›‘è§†å™¨ä¸æ”¯æŒè¿›è¡Œä“Q何æ»é”处ç†ï¼Œå› 椽E‹åºå‘˜åº”è´Ÿè´£é˜²æ¢æ»é”的出现ã€?/p>
在有必覘q›è¡ŒåŒæ¥çš„场åˆä¸‹åQŒåº”该尽é‡ç¾ƒž®åŒæ¥ä»£ç å—。准¼‹®åœ°è¯†åˆ«å“ªäº›ä»£ç 真æ£éœ€è¦åŒæ¥åƈž®½å¯èƒ½å°‘åœ°è¿›è¡ŒåŒæ¥ï¼Œ˜q™éžå¸”R‡è¦ã€‚å¦‚æžœåŒæ¥ä»£ç å—ä¸å¤Ÿž®ï¼Œåº”该对代ç 进行分æžï¼Œå¯¹å…¶é‡æž„åQŒä»¥ä½¿æ‰€æœ‰å¯ä»¥å¼‚æ¥è¿è¡Œçš„代ç å‡ä½äºŽåŒæ¥ä»£ç å—之外ã€?/p>
æŸäº› Java J2SE åŠŸèƒ½ä¼šé—´æŽ¥åœ°ä½¿ç”¨åŒæ¥ã€‚Java 集刾c»ï¼ˆå¦?Vector æˆ?HashtableåQ‰éƒ½æ˜¯å…¨é¢åŒæ¥çš„。å³ä½¿åœ¨å•线½E‹çŽ¯å¢ƒä¸ Java ½E‹åºä¹Ÿä¼šæœ‰ä¸Ž¾U¿ç¨‹åŒæ¥ç›¸å…³çš„开销。Java 1.2 引入的较新的集åˆåQˆå¦‚ ArrayListåQ‰åƈä¸è¿›è¡ŒåŒæ¥ã€‚è¿™ž®±æä¾›äº†å¯ÒŽ•°æ®æ›´å¿«çš„讉K—®ã€‚在需è¦çº¿½E‹å®‰å…¨çš„æƒ…况下,请ä‹É用线½E‹å®‰å…¨è§†å›¾ã€‚线½E‹å®‰å…¨è§†å›¾æ˜¯åŒ…装¾c»ï¼Œè¯¥ç±»å¢žåŠ äº†åŒæ¥æ ‡å‡†é›†åˆæ–¹æ³•的功能。集åˆç±»çš„工厂方法将˜q”回¾U¿ç¨‹å®‰å…¨çš„集åˆï¼Œè¯¥é›†åˆç”±ç‰¹å®šçš„集åˆç±»åž‹çš„实例支æŒåQ?/p>
|
å¦ä¸€ä¸ªéžç›´æŽ¥åŒæ¥çš„例åå°±æ˜?Java I/O 库。请ž®½å¯èƒ½å°‘åœîC‹Éç”?Java I/O 库方法(例如 System.out.println()åQ‰ï¼Œä»¥å‡ž®‘ä¸å¿…è¦çš„æ€§èƒ½å¼€é”€ã€?/p>
ä¸è¦ä»?Portlet 生æˆéžæ‰˜½Ž¡çº¿½E‹ã€‚当å‰?J2EE å¼ºçƒˆå»ø™®®ä¸è¦è¯•å›¾åœ¨å®¹å™¨ç”Ÿæˆæ–°¾U¿ç¨‹ã€‚实际上åQŒJ2EE 规范 6.2.1 ¾~–程é™åˆ¶æŒ‡å‡ºåQ?/p>
“如果应用程åºç»„件包å«çš„功能ä¸?J2EE ¾pÈ»ŸåŸºç¡€¾l“构所æä¾›çš„功能相åŒï¼Œåˆ™ä¼šå˜åœ¨åŠŸèƒ½å†²çªå’Œç®¡ç†æØœä¹±ã€‚例如,……以½Ž¡ç†¾U¿ç¨‹â€¦â€¦â€?/i>
ä¸è¦è¯•å›¾ç”Ÿæˆæ–°çº¿½E‹çš„ä¸€ä¸ªå®žé™…åŽŸå› æ˜¯å› äØ“æ–°çº¿½E‹å¯¹ J2EE 上下文没有完全访问æƒé™ã€‚而且åQŒæ–°åˆ›å¾çš„éžæ‰˜ç®¡¾U¿ç¨‹ä¼šå¦¨¼„?WebSphere Portal 实现½E›_®šçš„ã€ä¼˜åŒ–çš„å¯æ‰©å±•è¿è¡Œæ—¶çŽ¯å¢ƒã€‚å› æ¤ï¼Œè¯·ä‹Éç”?WebSphere Application Server ä¸çš„å¼‚æ¥ Bean 功能åQˆè¯·å‚阅 WebSphere Application Server Enterprise V5 和编½E‹æ¨¡åž‹æ‰©å±?WebSphere 手册¾pÕdˆ—åQ‰ã€‚异æ?Bean 是一ä¸?Java 对象æˆ?Enterprise BeanåQŒèƒ½å¤Ÿä‹Éç”?J2EE 上下文æäº¤åœ¨ç‹¬ç«‹¾U¿ç¨‹åQˆå¼‚æ¥ï¼‰˜q行的代ç ã€?/p>
Portlet ¾~–程模型å…许开å‘äh员创建特定类型的 Web 应用½E‹åºåQŒæ¤¾cÕdº”用程åºå¯ä»¥ä½œä¸ºå®¢æˆähœº‹¹è§ˆå™¨ä¸è‹¥å¹²æ¤ç±»åº”用½E‹åºçš„èšåˆè§†å›„¡š„一部分。在 WebSphere Portal ä¸ï¼Œæ¤ç±»åº”用½E‹åºä¸ä»…能共å˜åœ¨ä¸€ä¸ªé¡µé¢ï¼ˆåŒ™šåˆè§†å›¾ï¼‰ä¸Šï¼Œ˜q˜èƒ½åœ¨æž„é€ è¯¥™åµé¢æ—¶å½¼æ¤è¿›è¡Œé€šä¿¡ã€‚å› æ¤ï¼ŒPortlet 的实现å¯ä»¥åª„å“页é¢çš„æ€ÖM½“性能åQ›ä¾‹å¦‚,如果特定的“关键â€Portlet é©È•™åœ¨é¡µé¢ä¸ŠåQŒåˆ™å€¼å¾—èŠÞq²¾åŠ›åœ¨åŒä¸€ä¸ªé¡µé¢ä¸Šå®žçŽ°ä¸€äº›å…¶ä»–çš„å…³é”®æ€§èƒ½ Portletã€?/p>
在实际的门户ä¸ï¼Œå®Œå…¨è‡ªæˆ‘ä¾èµ–çš?Portlet éžå¸¸ž®‘è§åQŒå› 为门户通常用作¾|‘ç«™çš„é™„åŠ å†…å®ÒŽˆ–帮助工具。椾c?Portlet åº”ä»…åœ¨å…¶æœ¬åœ°ä»£ç æ‰§è¡Œè·¯å¾„ä¸ä¼˜åŒ–,ä¸åº”对å…许的门户¾pÈ»Ÿå¸¦æ¥å¤ªå¤šçš„è´Ÿè—÷€?/p>
Portlet æ›´äØ“å…¸åž‹çš„ç”¨æˆ·å°±æ˜¯æä¾›éœ€è¦è®¿é—®å…¶ä»–æ•°æ®æºæˆ–事务系¾lŸçš„应用½E‹åºåŠŸèƒ½åQŒé™¤äº?Portlet 的原始执行系¾lŸä¹‹å¤–,˜q™äº›æ•°æ®æºæˆ–事务¾pÈ»Ÿä¹Ÿéœ€è¦æ‰§è¡Œèµ„æºã€‚æ•°æ®å¯èƒ½ä¼šä»Žç½‘¾lœä¸Šçš„å…¶ä»–åŽç«¯ç³»¾lŸæ£€ç´¢æˆ–å˜å‚¨åˆ°å…¶ä¸ã€‚需è¦åœ¨æ€ÖM½“¾pÈ»Ÿè®¾è®¡ä¸è€ƒè™‘在åŽç«¯ç³»¾lŸä¸Šå¯èƒ½å‡ºçŽ°çš„äº‹åŠ¡é•¿åº¦ã€é𔼛Èñ”åˆ«ä»¥åŠæ•°æ®é”定ã€?/p>
è¯äh³¨æ„,å•个 Portlet å¯èƒ½ä¸æ˜¯åŽç«¯¾pÈ»Ÿçš„唯一客户机。事实上åQŒåœ¨å®žé™…使用ä¸ï¼Œä¼šæœ‰å¾ˆå¤šå®¢æˆ·æœø™¿žæŽ¥åˆ°æ¤ç±»¾pÈ»ŸåQŒç”šè‡›_•ä¸?Portlet ˜q˜å¯èƒ½åŒæ—¶å¤š‹Æ¡è®¿é—®åŒä¸€ä¸ªåŽç«¯ç³»¾lŸã€‚Portlet å¯èƒ½ä¼šåœ¨å¤šä¸ªç‹¬ç«‹çš„æœåŠ¡å™¨¾U¿ç¨‹ä¸æ‰§è¡Œå…¶ä»£ç 以å“应ä¸åŒçš„用户è¯äh±‚ã€‚å› æ¤ï¼Œæœ‰å¿…è¦å¯¹è®‰K—®æ¨¡å¼˜q›è¡Œäº†è§£åQŒPortlet 或其他客æˆähœºèŽ·å–事务或é”定的方å¼å¯èƒ½ä¼šåª„哿¤¾cÕdŽç«¯ç³»¾lŸçš„òq›_‡å“应旉™—´ã€?/p>
如果æŸä¸ª Portlet 在æ“作或呈现阶段需è¦è¿›è¡Œå¯†é›†çš„åŽç«¯¾pÈ»Ÿè®‰K—®åQŒå“应时é—ß_¼ˆå®Œæˆ˜q™äº›é˜¶æ®µçš„æ—¶é—ß_¼‰ž®†è¶Šæ¥è¶Šä¾èµ–于åŽç«¯ç³»¾lŸçš„å“应。(如果½{‰å¾…门户æœåŠ¡å™¨å¤–çš„å“应以满èƒöä¼ å…¥è¯äh±‚åQŒå°†ä¼šå¸¦æ¥åšg˜qŸï¼Œæ¤åšg˜qŸä¸èƒ½é€šè¿‡ä¼˜åŒ– Portlet 代ç 的执行èµ\径得到改善。)å…ähœ‰åŽç«¯¾pÈ»Ÿé€šä¿¡çš„良好设计,òq¶äº†è§£äº‹åŠ¡è¡Œä¸ºé€šå¸¸å¯ä»¥å¾—到更高的性能ã€?/p>
ä¸ÞZº†é¿å…ç”׃ºŽåŽç«¯¾pÈ»Ÿå´©æºƒè€Œä‹É PortletåQˆä»¥åŠå…¶æ‰€åœ¨é¡µé¢ï¼‰åœæ¢å“应åQŒå¯ä»¥åœ¨ä»£ç ä¸åŠ å…¥è¶…æ—¶æœºåˆÓž¼›ä¸è¿‡åQŒè¯·æ³¨æ„åQŒç®¡ç†å’Œè·Ÿè¸ªæ—‰™—´æˆ³ä¼šå¸¦æ¥ä¸€äº›å¤„ç†å¼€é”€ã€‚如果ä‹É用了 WebSphere Portal ä¸çš„òq¶è¡Œ Porlet 呈现功能åQˆç¨åŽè®¨è®ºï¼‰åQŒåˆ™å¯äØ“òq¶è¡Œå‘ˆçް¾U¿ç¨‹é…ç½®‘…æ—¶ã€?/p>
ž®½å¯èƒ½å‡ž®‘与æ¤ç±»å¤–部åŽç«¯¾pÈ»Ÿçš„交互和数æ®é€šä¿¡‹¹é‡ä¹Ÿæ˜¯ä¸é”™çš„åšæ³•ã€‚äØ“äº†å®žçŽ°è¿™ä¸€ç‚¹ï¼Œå¦‚æžœä¿¡æ¯çš„åˆ·æ–°æ ‡å‡†å…许进行缓å˜ï¼ŒPortlet å¯ä»¥å¯¹ä¿¡æ¯è¿›è¡Œç¼“å˜ã€‚è¿™å¯ä»¥å‡å°‘为æ¯ä¸ªä¼ å…?WebSphere Portal è¯äh±‚多次获å–ç›¸åŒæ•°æ®çš„å¾€˜q”æ¬¡æ•°ã€‚è¿™æ ¯‚¿˜å¯ä»¥å¸®åŠ©é™ä½ŽåŽç«¯¾pÈ»Ÿä¸Šçš„è´Ÿè²åQŒå› 䏸™¿™æ ·å°±æ— 需多次æä¾›ç›¸åŒçš„ä¿¡æ¯äº†ã€‚å¦å¤–,如果ä¸éœ€è¦åœ¨¾|‘ç»œä¸Šä¼ è¾“æ•°æ®ï¼ŒPortlet å¯èƒ½å¯ä»¥æ›´å¿«åœ°è¿›è¡Œå‘ˆçްã€?/p>
é¿å…到åŽç«¯ç³»¾lŸçš„å¾€˜q”çš„å¦ä¸€ä¸ªæ–¹æ³•就是除了检索满‘›_½“å‰è¯·æ±‚实际所需的数æ®å¤–åQŒè¿˜‹‚€ç´¢æ‰€çŸ¥çš„ž®†åœ¨å¯èƒ½çš„厾lè¯·æ±‚ä¸æ‰€éœ€çš„æ•°æ®ã€‚丘q‡ï¼Œä½¿ç”¨æ¤æ–¹æ³•æ—¶åQŒå¦‚果知é“在åŽç®‹è¯äh±‚ä¸å°†è¦å®žé™…需è¦å“ªäº›é¢„æå–æ•°æ®åQŒæˆ‘们ä»ç„¶å¾è®®ä‹É用普通的预æå–åŠŸèƒ½ã€‚äØ“äº†åˆç†åœ°è®¾è®¡æ¤ç‰¹æ€§ï¼Œéœ€è¦å¯¹ Porlet 应用½E‹åºçš„典型用户交互éžå¸æ€º†è§£ã€‚è¦è®îC½åQŒæå‰æ£€ç´¢ä¼šå¯šw—¨æˆ?JVM 的内å˜ä‹Éç”¨é€ æˆå½±å“。(请å‚é˜?a >性能和å¯ä¼¸ç¾ƒæ€§ä»£ç 设è®?/font>。)æ¤ç±»è®¾è®¡æ–ÒŽ³•å¯èƒ½éœ€è¦æ›´æ”¹åŽç«¯ç³»¾lŸçš„æŽ¥å£åQŒä½†å¯ä»¥èŠ‚çº¦å¤§é‡çš„å¤„ç†æ—¶é—ß_¼Œä½¿å¾—更改物超所倹{€?/p>
对于¾~“å˜åQŒWebSphere Application Server 利用光™¢å‘çš„ Portlet çš?DistributedMap æŽ¥å£æä¾›äº†åŠ¨æ€ç¼“å˜åŠŸèƒ½ã€‚ï¼ˆè¯·å‚é˜?WebSphere Application Server 5.1 ä¿¡æ¯ä¸å¿ƒä»¥èŽ·å¾—æ›´å¤šçš„ä¿¡æ¯ã€‚)
会è¯ä¸Žå…¶ä»–æ•°æ®å˜å‚¨åŒº
ä¿æŒå’Œç»´æŠ?Portlet 的数æ®ï¼Œä½¿å…¶ç”Ÿå˜æœŸé•¿äºŽå•ä¸ªè¯·æ±‚çš„ç”Ÿå˜æœŸï¼Œ˜q™æ˜¯ä¸€ä¸ªå…¸åž‹çš„ Portlet ¾~–程ä»ÕdŠ¡ã€‚é€šå¸¸è€ƒè™‘é‡‡ç”¨çš„ç¬¬ä¸€ä¸ªæ–¹æ³•å°±æ˜¯ä‹Éç”?PortletSession。从½E‹åºå‘˜çš„角度而言åQŒPortletSession 使用很方便,但从应用½E‹åºæœåŠ¡å™¨çš„è§’åº¦è€Œè¨€åQŒç®¡ç†ä¼šè¯éœ€è¦ä‹É用资æºã€‚如果会è¯åŒ…å«è¶Šæ¥è¶Šå¤šçš„æ•°æ®åQŒä»Žè€Œè¦æ±‚ä‹É用更多的内å˜åQŒåˆ™ä¼šè¿›ä¸€æ¥ä‹É问题严é‡åŒ–ã€?/p>
如果ž®†ä¼šè¯é…¾|®äØ“æŒä¹…地å˜å‚¨åœ¨æ•°æ®åº“ä¸åQŒæˆ–é…ç½®ä¸ø™¿›è¡Œå†…å˜åˆ°å†…å˜å¤åˆ¶åQˆå³åœ¨é›†¾Ÿ¤åŒ–环境ä¸äØ“ WebSphere Portal é…置了故障è{¿U»ï¼‰åQŒåˆ™è¯¥ä¼šè¯å°†åœ¨å…¶å†…容更改时被åºåˆ—化ã€?/p>
å½“ä¼šè¯æ•°æ®å†™å…¥åˆ°˜qœç¨‹å‰¯æœ¬æ—Óž¼Œå¯¹ä¼šè¯æ•°æ®è¿›è¡Œåºåˆ—化和ååºåˆ—化所需的时间å¯èƒ½å˜å¾—éžå¸¸å¤§ã€‚在éžå¸¸ž®‘è§çš„æƒ…况下åQŒå˜å‚¨åœ¨ä¼šè¯ä¸çš„æŸäº›å¯¹è±¡å¯èƒ½è¢«æ ‡è®îCؓ瞬æ€çš„。这ž®†é™ä½Žä¼šè¯çš„åºåˆ—化åŽçš„大ž®ï¼Œä½†ä¸ä¼šæ›´æ”¹å†…å˜çš„大å°åQŒè€Œè¿™å¯¹åº”ç”¨ç¨‹åºæœåС噍处ç†ä¼šè¯çš„æ•ˆçŽ‡ä¹Ÿæœ‰åª„å“ã€?/p>
大型的会è¯å¯¹è±¡ä¼šå‡å°‘å¯ç”¨ä»¥åˆ›å»ºå’Œæ‰§è¡Œåº”用½E‹åºå¯¹è±¡çš?JVM 内å˜ã€‚å› æ¤ï¼Œéšç€å¯ç”¨å †å†…å˜çš„å‡å°‘而导致更频ç¹çš„垃圑֛žæ”Óž¼Œæ€§èƒ½å¯èƒ½ä¼šé™ä½Žã€?/p>
å¦ä¸€ä¸ªå› ç´ å°±æ˜¯å†…å˜å†…çš„ç”Ÿå˜æœŸæ¯”所需的ä‹É用时间长åQŒå› æ¤å ç”?Java å †ä¸çš„ç©ºé—´çš„ä¼šè¯æ•°é‡é€šå¸¸æ¯”活动用æˆïLš„æ•°é‡å¤šã€‚在 WebSphere Application Server ä¸å¯ä»¥é…¾|®ä¼šè¯è¿‡æœŸæ—¶é—ß_¼Œ˜q™ä¸ªå±žæ€§éžå¸¸å¿…è¦ï¼Œå¯ä»¥é˜²æ¢åœ¨å‡ ¿U’钟没有‹zÕdЍåŽå°±è¦æ±‚ç”¨æˆ·å†æ¬¡ç™Õd½•的情å†üc€‚会è¯çš„释放ç”?WebSphere Application Server å’?Portlet 容器负责ã€?/p>
åºåˆ—化的会è¯å¤§å°åº”该ž®äºŽ 4KBåQŒå› ä¸?WebSphere Application Server 能以å¯ä»¥æŽ¥å—的数æ®åº“性能开销å˜å‚¨æ¤ç±»ä¼šè¯åQŒåœ¨¾|‘ç»œä¸Šä¼ è¾“æ¤¾cÖM¼šè¯çš„æ—‰™—´ä¹Ÿæ›´ž®‘。如果会è¯å¤§ž®è¶…˜q‡äº† 32KBåQŒæ•°æ®åº“必须使用é¢å‘二进制大对象é…置的表å•å…ƒæ û|¼Œè€Œå¦‚果椾cÖM¼šè¯ä»Žæ•°æ®åº“检索或写入到数æ®åº“ä¸ï¼Œåˆ™å°†éœ€è¦è®¿é—®ç‰©ç†ç£ç›˜ï¼ˆå¯¹äºŽå¤§å¤šæ•°å—支æŒçš„æ•°æ®åº“åQ‰ã€?/p>
ç”׃»¥ä¸Šåˆ†æžå¾—出的½W¬ä¸€ä¸ªç»“论就是,从应用程åºçš„角度而言åQŒåº”该尽å¯èƒ½é¿å…创å¾ä¼šè¯ã€‚在大多数公共页é¢å’Œæ— 需íw«ä†¾éªŒè¯çš„页é¢ä¸ŠåQŒé€šå¸¸ä¸éœ€è¦ä¼šè¯ã€‚在æ¤ç±»™åµé¢ä¸Šå¯ä»¥é€šè¿‡å‘ˆçŽ°é“¾æŽ¥ä¸Žé—¨æˆ¯‚¿›è¡Œäº¤äº’ï¼Œè€Œå‘ˆçŽ°é“¾æŽ¥å®šä¹‰äØ“ä¸æ›´æ”ÒŽœåŠ¡å™¨ç«¯çš„çŠ¶æ€ã€‚门户将为æ¯ä¸?Portlet ¾l´æŠ¤å‘ˆçް傿•°åQŒä»¥ç”¨äºŽå¯¹è¯¥™åµé¢çš„æ‰€æœ‰å޾lè¯·æ±‚ã€‚äØ“äº†é¿å…?JSP ¾~ºçœåˆ›å¾ä¼šè¯åQŒåº”该将 JSP ä¸çš„™åµé¢ä¼šè¯æŒ‡ä×o讄¡½®ä¸?falseåQ?/p>
|
å¦åˆ™åQŒå¦‚æžœä¸å˜åœ¨ä¼šè¯åQŒæ¤ JSP ž®†åˆ›å»ÞZ¸€ä¸ªä¼šè¯ã€?/p>
以下çš?Java 代ç 片段演示了如何确ä¿ä¼ 入会è¯åŠ å…¥çŽ°æœ‰çš„ä¼šè¯åQŒè€Œä¸æ˜¯æ— æ¡äšg地创建新会è¯åQ?/p>
|
ž®†æ¤å‚æ•°çš„å€ÆD®¾¾|®äØ“ false æ—Óž¼Œå¦‚果之å‰ä¸å˜åœ¨ä¼šè¯ï¼Œž®†ä¸ä¼šåˆ›å»ÞZ¼šè¯ã€‚如果之å‰ä¸å˜åœ¨ä¼šè¯åQŒä»…ä¸ÞZº†åœ¨å…¶ä¸å˜å‚¨æ•°æ®è€Œåœ¨ Portlet ä¸åˆ›å»ÞZ¸€ä¸ªä¼šè¯ï¼Œå¯èƒ½òq¶ä¸åˆé€‚ã€?/p>
ç”׃»¥ä¸Šåˆ†æžå¾—到的½W¬äºŒä¸ªç»“论就是,ä¸?/b>è¦å°†ä¼šè¯è¯¯ç”¨ä½œé€šç”¨æ•°æ®å˜å‚¨æœºåˆ¶ã€‚请è®îC½åQŒæˆ‘们的目的是尽å¯èƒ½ä½¿ä¼šè¯ä¿æŒæœ€ž®ã€‚如果由äº?Portlet 的设计,ž®†æŸäº›æ•°æ®ä¿å˜åœ¨å†…å˜ä¸å…·æœ‰ä¸€å®šä¼˜åŠ¿ï¼Œåˆ™å¯ä»¥ä‹É用缓å˜ã€‚å¯ä»¥ä‹É用会è¯?ID 讄¡½®¾~“å˜æ¡ç›®çš„范å›ß_¼Œä»¥ä‹É会è¯å’Œè¦ä¿å˜åœ¨å†…å˜ä¸çš„æ•°æ®å¾ç«‹å…³è”。请注æ„åQŒæ¤¾cȼ“å˜åœ¨å‘ˆçŽ°æ•…éšœè½¬ç§»æ—¶ä¸æ”¯æŒé›†ç¾¤åQ›è€Œè¿™æœ‰æ—¶æ˜¯å¯ä»¥æŽ¥å—的折衷。如果数æ®å¯ä»¥ä‹É用其ä»?Portlet å¯ç”¨æ•°æ®é‡æ–°åˆ›å¾åQŒåˆ™¾~“å˜æ¡ç›®çš„会è¯èŒƒå›´è¦æ±‚就有待商榷ã€?/p>
在很多情况下åQŒé€šè¿‡ä»…在会è¯ä¸å˜å‚¨ä¸€ä¸ªé”®åQŒåÆˆä½¿ç”¨è¯¥é”®ä½œäØ“å¼•ç”¨ä»¥åœ¨å…¶ä»–æ•°æ®¾l“æž„ä¸æŸ¥æ‰¾æ›´å¤§çš„对象åQŒä»Žè€Œå¯ä»¥é¿å…在会è¯ä¸å˜å‚¨å¤§å¯¹è±¡ã€‚å¦å¤–,å¯ä»¥é€‰æ‹©ä½¿ç”¨ç›¸åŒä¿¡æ¯çš„æ›´ç´§å‡‘的表½CºåÅžå¼ï¼Œè€ŒåŽž®†è¯¥å¯¹è±¡æ”‘Ö…¥ä¼šè¯ä¸ã€?/p>
而且åQŒPortlet 设计需è¦ä»”¾l†è€ƒè™‘会è¯ä¸å®žé™…å˜å‚¨çš„内容。会è¯é€šå¸¸ä»…旨在用于å˜å‚¨ç”¨æˆ·äº¤äº’与门户应用½E‹åºçš„对è¯çжæ€ï¼ˆä¾‹å¦‚åQŒç½‘上商åº?Porltet ä¸çš„è´ç‰©è½¦çš„内容åQ‰ã€‚椾cÀL•°æ®ä¸èƒ½é‡‡ç”¨å…¶ä»–ä“Q何手ŒDµé‡æ–°åˆ›å»ºã€‚在 WebSphere Portal ä¸ï¼Œ˜q™ç§¾cÕdž‹çš„æ•°æ®å¤„ç†ç§°ä¸?b>会è¯çжæ€?/b>ã€?/p>
如果òq¶ä¸éœ€è¦ä¼šè¯çжæ€ï¼ŒPortlet å¯ä»¥ä½¿ç”¨å…¶ä»–æ•°æ®å˜å‚¨é€‰é¡¹åQ?/p>
åœ?Portlet çš„æ“作阶ŒDµï¼Œå¯ä»¥ä¸?Portlet 的厾l呈现阶ŒDµè®¾¾|®å‘ˆçް傿•°ã€‚Portlet ä½¿ç”¨å‘ˆçŽ°å‚æ•°å‘ˆçŽ°å…¶ç‰¹å®šäºŽä¸€¾l„特定值的视图。由容器在请求间¾l´æŠ¤å‘ˆçް傿•°åQŒå³ä½¿å‡ºçŽîC¸Žå…¶ä»– Portlet 的交互也是如æ¤ã€‚在 WebSphere Portal ä¸ï¼Œ˜q™ç§¾cÕdž‹çš„æ•°æ®å¤„ç†ç§°ä¸?b>坯Dˆªçжæ€?/b>ã€?/p>
如果需è¦è·¨å¤šä¸ªç”¨æˆ·ä¼šè¯ä¿æŒæ•°æ®åQŒåˆ™å¯ä»¥ä½¿ç”¨ PortletPreferences API ä¸?Portlet å˜å‚¨æ•°æ®ã€‚请è®îC½åQŒæ¤ API òq¶ä¸èƒ½æ›¿ä»£é€šç”¨æ•°æ®åº“。在 WebSphere Portal ä¸ï¼Œ˜q™ç§¾cÕdž‹çš„æ•°æ®å¤„ç†ç§°ä¸?b>æŒä¹…性状æ€?/b>ã€?/p>
PortletConfig API ä½?Portlet å¯ä»¥è¯Õd–å…‰™…¾|®ï¼Œè¯¥é…¾|®ç”±å¼€å‘äh员通过使用 Portlet 部çÖvæè¿°½W¦æä¾›ï¼›˜q™å¯¹äº?Porltet çš„æ‰€æœ‰ç”¨æˆ·å‡æœ‰æ•ˆã€?/p>
PortletContext API å…许å˜å‚¨åŒä¸€åº”用½E‹åºä¸å…¶ä»?Portlet 也å¯ä»¥è®¿é—®çš„属性ã€?/p>
误‚€ƒè™‘使用会è¯ä¹‹å¤–的其他选择åQŒå°†å…¶ç”¨äºŽå˜å‚?Portlet 创å¾å’Œä‹É用的数æ®ã€‚é¿å…å°†å¯ä»¥é€šè¿‡ç”¨æˆ·äº¤äº’之外的其他æºé‡æ–°åˆ›å¾çš„æ•°æ®å¤åˆ¶åˆ°ä¼šè¯ä¸ã€?/p>
呈现链接与æ“作链æŽ?/font>
与对特定çš?Portlet 视图å¯Õd€ç›¸æ¯”åQŒä‹Éç”¨å‘ˆçŽ°å‚æ•°æœ‰å¾ˆå¤šä¼˜åŠ¿ã€?/p>
如果 WebSphere Portal ‹‚€‹¹‹åˆ°äº?Portlet çš„æ“ä½œå‚æ•ŽÍ¼Œåˆ™å¿…™å»è°ƒç”¨ç‰¹ŒDŠçš„æ“ä½œé˜¶æ®µå¤„ç†åQŒä‹É其具有ä¸å¿…ä‹É用æ“ä½œå‚æ•°çš„优势。丘q‡ï¼Œè¯äh³¨æ„,处ç†å‘ˆçŽ°é“¾æŽ¥æ—¶ä¸€å®šä¸èƒ½æ›´æ”?Portlet çš„æœåŠ¡å™¨ç«¯çŠ¶æ€ã€‚è¦æ›´æ”¹æœåŠ¡å™¨ç«¯çŠ¶æ€ï¼Œå”¯ä¸€å¾—到认å¯çš„æ–¹æ³•就是ä‹É用æ“作链接,而对于事务类型的è¯äh±‚åQŒæ“作链接是最好的选择ã€?/p>
使用呈现链接而ä¸ä½¿ç”¨æ“作链接的例å很多。例如,å‡è®¾ä¸€ä¸ªæŠ¥¾U?Portlet å¯ä»¥åŒä‹É用“上一™åµâ€å’Œâ€œä¸‹ä¸€™åµâ€æŒ‰é’®æ˜¾½Cºç‰¹å®šçš„™åµé¢ã€‚é€é¡µ‹¹è§ˆæŠ¥çº¸çš„页é¢ä¸ä¸€å®šä¼šæ›´æ”¹æœåŠ¡å™¨ç«¯çš„çŠ¶æ€ï¼Œæ¤çжæ€åœ¨æœ¬ä¾‹ä¸å°±æ˜¯æŠ¥¾U怸包å«çš„全部信æ¯ã€‚äØ“äº†å¯»å€æŠ¥çº¸çš„ä¸‹ä¸€™åµï¼Œž®†ä¸‹ä¸€™å늚„的页ç ç¼–ç 到所昄¡¤ºæŒ‰é’®çš„呈现链接丞®Þpƒö够了。Portlet å¯ä»¥æ ÒŽ®å‘ˆçް傿•°ä¸æ‰€¾l™çš„™åëŠ ¼‹®å®šè¦å‘ˆçŽ°çš„™åµé¢ã€?/p>
æ¤å¤–åQŒç”±äºŽæ¯ä¸ªå‘ˆçŽ°çš„è§†å›¾éƒ½ç”±ç‹¬ç«‹çš?URL å¯Õd€åQŒæ‰€ä»¥ï¼Œé€šè¿‡ä½¿ç”¨å‘ˆçŽ°é“¾æŽ¥è€Œä¸ä½¿ç”¨æ“作链接åQŒè¿˜å¯ä»¥å……分利用¾~“å˜åŸºç¡€¾l“æž„åQˆæ— 论是‹¹è§ˆå™¨ç¼“å˜è¿˜æ˜¯ä»£ç†ç¼“å˜ï¼‰ã€‚URL 是用于访问椾cȼ“å˜åŸº¼‹€¾l“æž„ä¸çš„特定生æˆè§†å›¾çš„唯一的键ã€?/p>
接下æ¥çš„å‡ ä¸ªéƒ¨åˆ†ä¸å°†è®¨è®ºå¼€å‘äh员应该考虑çš?WebSphere Portal ä¸å¯ç”¨çš„一äº?Porlet 优化功能åQŒè¿™äº›åŠŸèƒ½å¯ä»¥åª„哿‰€é€‰æ‹©çš„实现技术。需è¦ä‹Éç”?Portlet 的部¾|²æ˜q°ç¬¦æä¾›ä¸€äº›å¿…™åÈš„讄¡½®åQŒè€Œä¸”åQŒç”±äºŽè¿™äº›é¡¹ä¹Ÿæ˜¯ç”?Portlet å¼€å‘äh员æä¾›çš„åQŒå› æ¤è¢«è®¤äؓ是自定义代ç ã€?/p>
å…许 Portlet ˜q›è¡Œòq¶è¡Œå‘ˆçް
WebSphere Portal æä¾›äº†è®©™åµé¢ä¸Šçš„ Portlet òq¶è¡Œå‘ˆçŽ°çš„é€‰é¡¹ã€‚æ¤åŠŸèƒ½òq‰™žå®Œå…¨â€œå…è´¹â€çš„åQŒå› 为需è¦è®¡½Ž—资æºä»¥¾l´æŠ¤å’Œç®¡ç†å‘ˆçްæ¯ä¸?Portlet 所使用的ä¸åŒçº¿½E‹ã€?/p>
如果涉åŠåˆ°å¾ˆå¤šåŽç«¯ç³»¾lŸï¼Œè€Œæ¯ä¸ªåŽç«¯ç³»¾lŸåœ¨å‘ˆçްå•个™åµé¢æ—‰™ƒ½ä¼šäñ”生åšg˜qŸï¼Œæ¤æ—¶ä½¿ç”¨òq¶è¡Œ Portlet 呈现ž®±å…·æœ‰ä¸€å®šä¼˜åŠÑ€‚例如,å‡è®¾ä¸€ä¸ªé—¨æˆ·é¡µé¢åŒ…å«å¾ˆå¤?PortletåQŒæ¯ä¸?Portlet 都会讉K—®ä¸åŒçš„åŽç«¯ç³»¾lŸã€‚在串行呈现模å¼ä¸ï¼Œä»Žæ‰€æœ‰åŽç«¯ç³»¾lŸæ£€ç´¢æ‰€éœ€æ•°æ®çš„æ€ÖM½“延迟为å„个åšg˜qŸæ—¶é—´çš„æ€Õd’Œã€‚而在òq¶è¡Œå‘ˆçŽ°æ¨¡å¼ä¸ï¼Œå»¶è¿Ÿæ—‰™—´åº”äØ“æ‰€æœ‰å•个åšg˜qŸæ—¶é—´ä¸çš„æœ€å¤§å€¹{€?/p>
如果 Portlet òq¶ä¸¾l常使用åŽç«¯¾pÈ»ŸåQŒç”±äºŽå¯ç”¨åƈè¡?Portlet 呈现所带æ¥çš„开销å¯èƒ½ä¼šæ¯”ç”±æ¤åŠŸèƒ½æ‰€å¸¦æ¥çš„好处更大。如果页é¢ä¸Šçš?Portlet 能够独立于åŽç«¯ç³»¾lŸè¿›è¡Œå‘ˆçŽŽÍ¼Œåˆ™åªéœ€è¦é—¨æˆähœåŠ¡å™¨è®¡ç®—æœºæœ¬åœ°çš„ CPU 资æºã€‚è¿™¿U情况下åQŒé¡µé¢å‘ˆçްå“应时间ä¸ä¼šå¾—到改˜q›ã€?/p>
å¯ä»¥ä½¿ç”¨å›‘ÖŞ用户界é¢ã€éƒ¨¾|²æ˜q°ç¬¦æˆ?WebSphere Portal çš?XML 讉K—®æŽ¥å£å¯ç”¨òq¶è¡Œ Portlet 呈现。而且åQŒè¿˜æœ‰ä¸€ä¸ªç›¸å…³çš„全局属性å€û|¼Œå¯ä»¥å…¨é¢å¼€å¯å’Œå…³é—òq¶è¡Œ Portlet 呈现功能ã€?/p>
è¦æ£¼‹®å›ž½{”æ˜¯å¦æ”¯æŒåƈè¡?Portlet 呈现门户˜q™ä¸€é—®é¢˜åQŒéœ€è¦è€ƒè™‘若干事项åQ›ä¾‹å¦‚,呈现™åµé¢æ‰€æ¶‰åŠåˆ°çš„åŽç«¯¾pÈ»Ÿçš„æ•°é‡ã€ä‹Éç”¨åÆˆè¡?Portlet 呈现的页é¢ä¸Šçš?Portlet çš„åã^凿•°é‡ï¼Œ½{‰ç‰ã€‚Portlet å¼€å‘äh员事先ä¸ä¸€å®šèƒ½¾l™å‡º˜q™äº›é—®é¢˜½{”案åQŒä½†å¦‚æžœåˆç†çš„è¯åQŒå¼€å‘äh员当然事先å¯ä»¥ç¡®ä¿äØ“ Portlet å¯ç”¨äº†åƈè¡?Portlet 呈现ã€?/p>
åœ?Portlet 容器ä¸è¿›è¡Œç¼“å?/b>
åŸÞZºŽ Portlet çš?Web ™åµé¢æ˜¯åЍæ€èšåˆçš„åQŒå› ä¸ºå®ƒä»¬èƒ½ä»¥ä¸ªæ€§åŒ–çš„æ–¹å¼æä¾›åŠ¨æ€å†…å®V€‚这个絋zÀL€§å…·æœ‰ä¸€å®šçš„å¼€é”€ã€‚ç”±äºŽäØ“äº†å“应请求生æˆè¿™äº›é¡µé¢å¿…™å»è¿›è¡Œé¢å¤–的工作åQŒæ•…而网站的å“应旉™—´ž®†å¢žåŠ ã€?/p>
æ–°çš„¾~“å˜æŠ€æœ¯å°†æ”¹å–„åŠ¨æ€é¡µé¢çš„生æˆå’Œå‡ž®‘ç³»¾lŸè´Ÿè½½ã€‚WebSphere Portal 支æŒç‰‡æ–¾~“å˜åQˆä¹Ÿ¿UîCØ“ Servlet ¾~“å˜åQ‰ï¼Œå¯ä»¥ä½¿ç”¨ WebSphere Application Server 动æ€ç¼“å˜åœ¨¾~“å˜ä¸ä¿å?Portlet 输出。对¾~“å˜çš?Portlet 的请求将从缓å˜ï¼ˆè€Œä¸æ˜?PortletåQ‰æ£€ç´¢å†…å®V€‚å¯ä»¥é€šè¿‡åœ¨éƒ¨¾|²æ˜q°ç¬¦ä¸æŒ‡å®šè¿‡æœŸå®žçŽ°ç‰‡æ–缓å˜çš„失效。而且åQŒåœ¨ Portlet çš„æ“作阶ŒDµä¹Ÿä¼šä‹É片斾~“å˜æ¡ç›®å¤±æ•ˆã€?/p>
‹È€‹zȉ‡æ–缓å˜ä¸éœ€è¦è¿›è¡Œè´¹æ—¶çš„安装和集æˆå·¥ä½œã€‚通过使用½Ž€å•çš„ XML 部çÖvæè¿°½W¦æ–‡ä»¶å’Œé€šè¿‡ä½¿ç”¨ WebSphere Application Server ½Ž¡ç†æŽ§åˆ¶å°å‡å¯ä»¥å¯ç”¨å’Œç¦ç”¨è¯¥¾~“å˜åŠŸèƒ½ã€‚ï¼ˆè¯·å‚é˜?WebSphere Portal ä¿¡æ¯ä¸å¿ƒåQŒä»¥äº†è§£åœ?WebSphere Application Server ä¸å¯ç”?Servlet ¾~“å˜çš„详¾l†ä¿¡æ¯ã€‚)
ä¸ÞZº†ä½¿ç”¨åŸÞZºŽ˜q‡æœŸçš„缓å˜ï¼ŒPortlet 必须在部¾|²æ˜q°ç¬¦ portlet.xmlåQˆå¯¹äºŽç¬¦å?JSR 168 è§„èŒƒçš„æ ‡å‡†åŒ– PortletåQ‰ä¸å®šä¹‰˜q‡æœŸ¾~“å˜çš„æŒ¾læ—¶é—ß_¼š
|
整数定义¾~“å˜æ¡ç›®åœ¨ç¼“å˜ä¸å˜åœ¨çš„秒数倹{€?/p>
å€?-1 指示 Portlet ¾~“å˜æ°¸è¿œä¸è¿‡æœŸã€?/p>
å€?0 æŒ‡ç¤ºä¸ø™¯¥ Portlet ¼›ç”¨¾~“å˜åŠŸèƒ½ã€?/p>
一定ä¸èƒ½åœ¨åŒä¸€ Portlet 的所有用户间å…׃ín¾~“å˜çš„æ¡ç›®ã€‚æ¤¾~“å˜æŠ€æœ¯æ˜¯åŸÞZºŽç‰¹å®š Portlet 的特定用æˆïLš„ã€?/p>
对于在其部çÖvæè¿°½W¦ä¸å®šä¹‰äº†è¿‡æœŸç¼“å˜çš„ JSR 168 PortletåQŒPortlet ½H—å£å¯ä»¥åœ¨è¿è¡Œæ—¶é€šè¿‡è®„¡½® RenderResponse ä¸çš„ EXPIRATION_CACHE 属性修改过期时é—ß_¼Œå¦‚下所½Cºï¼š
|
对于在从åŽç«¯åQˆå¦‚ EJB ¾l„äšg和数æ®åº“åQ‰è®¡½Ž—å…¶å“åº”å’Œè¯·æ±‚æ•°æ®æ—¶è®¡ç®—æ—‰™—´å¾ˆé•¿çš„夿?PortletåQŒæ¤æ–ÒŽ³•éžå¸¸æœ‰ç”¨ã€‚对于简å?PortletåQŒä¸åº”å¯ç”¨ç‰‡æ–缓å˜ã€‚WebSphere Portal ž®†ä‹É用é¢å¤–的执行资æºè®¡ç®—机片æ–缓å˜çš„内部¾~“å˜é”®ã€‚对于简å?PortletåQŒç”±äºŽç¼“å˜é”®è®¡ç®—æ¯”é‡æ–°è®¡½Ž?Portlet å“应开销更大åQŒå…¶æ€§èƒ½å¯èƒ½ä¼šé™ä½Žã€?/p>
对于真æ£åЍæ€çš„ PortletåQŒç‰‡æ–缓å˜åƈä¸é€‚用åQ›å¦‚åQŒå¯¹æ¯ä¸ªè¯äh±‚都需è¦ä»Žå…¶ä»–æ•°æ®æºæ”¶é›†å½“剿•°æ®çš„åŸÞZºŽå®žæ—¶çš?Portlet 或对æ¯ä¸ªè¯äh±‚都会更改其å“åº”æ ‡è®°çš„ Portlet。这ž®†ä¼šå¯ÆD‡´å¤§é‡çš„缓å˜å¤±æ•ˆï¼Œå› æ¤æ€§èƒ½ä¸ä¼šå¾—到æé«˜ã€‚所以,仅在 Portlet 的输出在更新å‰ä¼šåœ¨ä¸€ŒD‰|—¶é—´å†…ä¿æŒæœ‰æ•ˆçš„æƒ…况下æ‰åº”è¯¥äØ“ Portlet å¯ç”¨¾~“å˜åŠŸèƒ½ã€?/p>
在远½E‹ç¼“å˜ä¸˜q›è¡Œ¾~“å˜
通过独特的自适应¾~“å˜åŠŸèƒ½åQŒWebSphere Portal å¯ä»¥åœ¨é—¨æˆïL¼“å˜ä¹‹å¤–çš„¾~“å˜åQˆç§°ä¸ø™¿œ½E‹ç¼“å˜ï¼‰ä¸åЍæ€ç¼“å˜ç”Ÿæˆçš„™åµé¢åQˆå¦‚果所有页é¢ç»„件凿Œ‡ç¤ºè‡ªèínå¯ä»¥¾~“å˜åQ‰ã€‚如果从˜qœç¨‹æä¾›å®Œå…¨å‘ˆçŽ°çš„é¡µé¢ï¼Œž®±å¯ä»¥é¿å…到门户æœåŠ¡å™¨çš„å¾€˜q”,æ¤ç±»™åµé¢çš„å“应时间å¯ä»¥ä¸Žä»Žé™æ€ç½‘ç«™æä¾›æ—¶ä¸€æ ·å¿«ã€?/p>
有关˜qœç¨‹¾~“å˜çš„全部详¾l†ä¿¡æ¯ï¼Œè¯·å‚é˜?a >使用 WebSphere Portal V5.1 å¼€å‘包å«é™æ€å†…容和动æ€å†…容的高性能¾|‘ç«™ã€?/p>
PortletåQˆä»¥åŠä¸»é¢˜ï¼‰å¯ä»¥æä¾›å®Œå…¨å‘ˆçް™åµé¢çš„æ€ÖM½“˜qœç¨‹¾~“å˜ä¿¡æ¯ä¸å…¶æ‰€ç‰¹å®šçš„远½E‹ç¼“å˜ä¿¡æ¯ã€‚远½E‹ç¼“å˜ä¿¡æ¯ä¸€ä¸ªæ•°æ®ç»“构,由关于缓å˜èŒƒå›ß_¼ˆæ˜¯å¦å¯ç¼“å˜ï¼Œæ˜¯å…±äº«çš„åQŒè¿˜æ˜¯éžå…׃ín的)和过期时é—ß_¼ˆå†…容在多长时间内为有效)的信æ¯ç»„æˆã€‚å¯ä»¥é€šè¿‡éƒ¨çÖvæè¿°½W¦æˆ– WebSphere Portal GUI æä¾› Portlet 的远½E‹ç¼“å˜ä¿¡æ¯ã€‚除æ¤ä¹‹å¤–,Portlet ˜q˜å¯ä»¥åœ¨å‘ˆçŽ°æ—¶äØ“æ¯ä¸ª Portlet æä¾›˜qœç¨‹¾~“å˜ä¿¡æ¯åQŒå¦‚下é¢çš„代ç 䏿‰€½Cºï¼š
|
讄¡½®˜qœç¨‹¾~“å˜ä¿¡æ¯çš„æ–¹å¼ä¾èµ–于呈现的视囄¡š„“刷新â€è¦æ±‚和范围。请注æ„åQŒå¦‚果从¾~“å˜æä¾›å‘ˆçŽ°çš„é¡µé¢ï¼Œè¯äh±‚å¯èƒ½ç”šè‡³ä¸ä¼šå‘é€åˆ°é—¨æˆ·æœåС噍ã€?/p>
如果å¯ä»¥åœ¨åŸº¼‹€¾l“æž„ä¸ä‹É用缓å˜ï¼Œè‡ªå®šä¹?Portlet å¼€å‘äh员应当考虑利用˜qœç¨‹¾~“å˜åŠŸèƒ½ã€?br />
在门æˆähœ¯è¯ä¸åQŒä¸»é¢˜æ˜¯¼‹®å®šé—¨æˆ·åº”用½E‹åºçš„å¤–è§‚å’Œé£Žæ ¼çš„è‹¥òq?JSP 集。由于主题由 JSP ¾l„æˆåQŒåœ¨ JSP 部分¾l™å‡ºçš„æŠ€å·§ä¹Ÿé€‚用于æ¤ã€‚这一部分详细讨论了ä‹É用组æˆä¸»é¢˜çš„ JSP æ–‡äšg集å¯èƒ½å˜åœ¨çš„æ€§èƒ½¾~ºé™·ã€?/p>
通常åQŒä¸»é¢˜ç”±å¾ˆå¤šä¸åŒçš„æ–‡ä»¶ç»„æˆï¼Œæ¯ä¸ªæ–‡äšgæä¾›å±å¹•的特定区域的内容。尽½Ž¡å¯ä»¥åЍæ€åœ°åŒ…å« JSPåQŒä½†é€šå¸¸åQˆä¹Ÿå»ø™®®åQ‰å°† JSP 陿€åŒ…å«åœ¨å…¶ä»– JSP ä¸ã€?/p>
ç”׃ºŽ¾~–译时å¯èƒ½ä¼šž®†å¾ˆå¤?JSP 包å«åˆ°å…¶ä»?JSP ä¸ï¼Œæ‰€å¾—çš„ Java æºä»£ç å’Œ Servlet å—èŠ‚ä»£ç æ–‡äšgå¯èƒ½ä¼šéžå¸¸å¤§ã€‚ä‹É用大的类文äšg通常ä¸ä¼šæœ‰æ€§èƒ½é—®é¢˜åQŒä½†ç”׃ºŽ Java ¾~–程è¯è¨€ä¸åŒ…å«çš„大å°é™åˆ¶åQŒå¯èƒ½ä¸èƒ½å°† Java æºä»£ç ç¼–è¯‘äØ“¾c…R€‚例如,Java ä¸çš„æ–ÒŽ³•的大ž®ä¸èƒ½è¶…˜q?64KBã€‚å¤§åž‹çš„å¤æ‚主题很容易达到这个é™åˆÓž¼Œè€Œå¯¼è‡´ä¸å†èƒ½¾~–译。这¿U情况下åQŒæœ‰ä¸‰ç§é€‰æ‹©åQ?/p>
用动æ€åŒ…å«ä»£æ›¿ä¸€äº›ï¼ˆè€Œéžå…¨éƒ¨åQ‰é™æ€åŒ…å«ã€?/b>
å¦?JSP 部分 (LINK) æåˆ°çš„,˜q™æ˜¯ç”¨æ€§èƒ½ä½œäؓ交æ¢åQŒä»¥ä¾¿èƒ½¾~–译 JSP。从性能的角度而言åQŒå°½½Ž¡è¿™ä¸ªæ–¹æ³•最易于实现åQŒä½†å´æ˜¯æœ€ä¸å¥½çš„è§£å†Ïx–¹æ³•ã€?/p>
ž®½é‡é™åˆ¶ JSP ä¸?Scriptlet çš„ä‹É用ã€?/b>
WebSphere Application Server å¯ä»¥å¯¹ä»…è°ƒç”¨æ ‡è®°å¤„ç†½E‹åºçš„代ç 进行优化,而这å¯ä»¥æœ‰åŠ©äºŽä‹Éæ–‡äšgä¿æŒåœ?64KB 的上é™ä¹‹å†…ã€?/p>
清除 JSP 代ç ã€?/b>
˜q™äº›æ–‡äšg通常包å«òq‰™žå¿…è¦çš„多余代ç ã€‚é€šå¸¸åˆ é™¤ HTML 注释行或½Iºç™½åQŒæˆ–者将 JavaScript ä»£ç ¿UÕdŠ¨åˆ°å•独的文äšgä¸å‡å¯ä¿è¯èƒö够的½Iºé—´ã€?/p>
主题有时会完æˆåº”用程åºä¸å¤æ‚çš„ä“Q务。丘q‡æ¤æ—¶åº”该è°}慎。请è®îC½åQŒå¯¹äºŽé—¨æˆïLš„æ¯ä¸ªè¯äh±‚åQŒéƒ½ä¼šå‘ˆçŽîC¸»é¢˜ï¼Œå› æ¤ä¸è¦åœ¨å…¶ä¸è¿›è¡Œä¼š¾l™ç³»¾lŸå¸¦æ¥é«˜è´Ÿè·çš„计½Ž—工作ã€?/p>
在模拟门户功能时è¦ç‰¹åˆ«è°}慎。例如,主题å¯èƒ½ä¼šåó@环访问门户应用程åºä¸çš„大é‡é¡µé¢ï¼›åº”该å¯Òޤ˜q›è¡Œ½{›é€‰ï¼Œä»…å‘用户昄¡¤ºä¸€ä¸ªå¯¼èˆªç»“构,其ä¸ä»…包å«ä¸»é¢˜ä»Žé—¨æˆ· API è¯äh±‚的若òq²é¡µé¢ã€‚è¿™¿U情况下åQŒé—¨æˆ·ä¸˜q›è¡Œçš„很多处ç†éƒ½ä¼šä¸¢å¤±ï¼Œå› 䨓之åŽä¼šå°†å…¶ç»“果丢弃。æ¤å¤„æ ¹æ®é—¨æˆ¯‚®¿é—®æŽ§åˆ¶æˆ–个性化规则˜q›è¡Œ½{›é€‰ä¼šæ›´äؓ有效ã€?/p>
æ¤å¤–åQŒè¦ž®½é‡é™åˆ¶é—¨æˆ·™åµé¢ä¸é—¨æˆ¯‚µ„æºé“¾æŽ¥çš„æ•°é‡ã€‚门户必™åÈ”Ÿæˆçš„æ¯ä¸ª URL 链接都会¾l™ç³»¾lŸå¸¦æ¥é¢å¤–的负è²ã€‚如果需è¦å…·æœ‰å¤§é‡é“¾æŽ¥çš„应用½E‹åºä¸»é¢˜åQŒè¯·ž®è¯•¾~“å˜å…¶ä¸çš„一些页é¢ï¼Œä»Žè€Œä‹Éå…¶ä¸å¿…åœ¨æ¯æ¬¡è¯äh±‚æ—‰™ƒ½é‡æ–°è®¡ç®—所有链接ã€?/p>
主题也是 WebSphere Portal ä¸çš„˜qœç¨‹¾~“å˜åŸºç¡€¾l“构的一部分。主题的˜qœç¨‹¾~“å˜æ˜¯ä¸€¾l„å¯ä»¥é€šè¿‡ XML 讉K—®å…·ä½“指定的元数æ®åQŒå¦‚以下½CÞZ¾‹ä¸æ‰€½Cºï¼š
|
主题ä¸èƒ½æä¾›ä»ÖM½•呈现时远½E‹ç¼“å˜ä¿¡æ¯ã€?/p>
WebSphere Portal 支æŒé«˜æ€§èƒ½å¤–观的识别。这些外观éžå¸¸ç‰¹ŒDŠï¼Œå› äØ“å®ƒä»¬ä¸æ˜¯åŸÞZºŽ JSP 生æˆçš„;它们的输出是æ ÒŽ®é¢„编译的 Java ¾cÕdˆ›å»ºçš„。当ç„Óž¼Œæ¤ç±»å¤–è§‚çš„å¯è‡ªå®šä¹‰æ€§è¦å·®ä¸€äº›ï¼›åªèƒ½å¯ÒŽ ·å¼è¡¨ä¿¡æ¯å’ŒåŒ…å«çš„囑փ˜q›è¡Œä¿®æ”¹ã€‚丘q‡ï¼Œå¦‚果性能是您è¦è€ƒè™‘的最é‡è¦çš„å› ç´ çš„è¯ï¼Œž®±åº”该考虑为页é¢ä¸Šç‰¹å®šçš„å…ƒç´ æˆ–ç‰¹å®š Portlet å¯ç”¨é«˜æ€§èƒ½å¤–观。(请å‚é˜?a >å‚考资æ–?/font>ä¸çš„ä¿¡æ¯ä¸å¿ƒä»¥äº†è§£è¯¦¾l†ä¿¡æ¯ï¼ŒåŒ…括å„ç§å¯å¸®åŠ©æ‚¨¾~–写高速外观和主题的æ½Cºã€‚)
åœ?WebSphere Portal 应用½E‹åºå¼€å‘和验è¯çš„æ‰€æœ‰é˜¶ŒDµå‡å¯ä»¥ä½¿ç”¨å„ç§å·¥å…·æä¾›å¸®åŠ©ã€‚æœ¬éƒ¨åˆ†å¯¹ä¸åŒå¼€å‘周期ä¸å¯ä»¥ä½¿ç”¨çš„ä¸åŒå·¥å…ïL±»åˆ«è¿›è¡Œäº†è¯´æ˜ŽåQŒåƈæä¾›äº†ä¸€äº›ä¾‹å,以帮助您˜q›è¡Œè‡ªå®šä¹‰ä»£ç 的开å‘和分æžã€?/p>
从技术角度而言åQŒå¯ä»¥ä‹É用ä“Q何文本编辑器¾~–写 Portletã€ä¸»é¢˜å’Œå¤–è§‚åQŒä½†ä½¿ç”¨é›†æˆå¼€å‘环境(如将 IBM Rational] Application Developer å’?IBM Portal Toolkit ¾l“åˆä½¿ç”¨åQ‰è¦æ–¹ä¾¿å¾ˆå¤šã€‚还å¯ä»¥ä½¿ç”¨ Portlet ä»£ç ½CÞZ¾‹å’ŒåŸºæœ¬é—¨æˆ·ä»£ç 片æ–开速入门;该开å‘环境还与一个门æˆähœåС噍˜q›è¡Œäº†é›†æˆï¼Œä»¥ä¾¿ç«‹å³éƒ¨çÖv和测试代ç ã€?/p>
当代ç å°±¾lªï¼Œå¯ä»¥éƒ¨çÖvæ—Óž¼Œéœ€è¦è¯¦¾l†äº†è§£å…¶å¯èƒ½çš„æ€§èƒ½é—®é¢˜ã€‚å¯ä»¥é‡‡å–è‹¥òq²æ¥éª¤ï¼ˆä¸‹é¢å¯Òޤ˜q›è¡Œäº†æ€È»“åQ‰ï¼Œä½†æ€§èƒ½æ–šw¢æœ‰ä¸€æ¡å§‹¾lˆé€‚用的一般规则:在大多数½E‹åºä¸ï¼Œ¾U¦æœ‰ 80% 的执行时间都花在 20% 的应用程åºä»£ç ä¸ã€‚è¿™ 20% 的代ç ä½äºŽâ€œå…³é”®èµ\径â€ä¸ŠåQŒæ£æ˜¯è¿™äº›æ–¹é¢å€¼å¾—˜q›è¡Œæ€§èƒ½ä¼˜åŒ–。例如,Portlet çš„å‘ˆçŽ°æ–¹æ³•è¦æ¯”å…¶åˆå§‹æ–ÒŽ³•çš„æ€§èƒ½å…³é”®æ€§æ›´å¼ºï¼Œå› äØ“æ¯ä¸ªè¯äh±‚都会调用呈现æ–ÒŽ³•ã€?/p>
代ç 分æžåº”在开å‘的早期阶段˜q›è¡ŒåQŒæˆ–ž®†å…¶ä½œäؓ开å‘åŽçš„第一个性能‹¹‹è¯•ã€‚åˆ†æžæ„味瀞®†åœ¨æ–ÒŽ³•¾U§æ”¶é›†æ‰§è¡Œæ—¶ä¿¡æ¯åQŒé€šå¸¸ä¼šä‹Éç”?JVMPI 接壘q›è¡Œæ¤é¡¹å·¥ä½œã€‚分æžå™¨¾l“æžœå¯ä»¥å¸®åŠ©æ ‡è¯†åº”ç”¨½E‹åºçš„关键èµ\径;å›_¤§éƒ¨åˆ†æ—‰™—´æ‰€æ‰§è¡Œçš„代ç 。分æžå™¨˜q˜é€šå¸¸ä¼šç»™å‡ºå…³äºŽå¯¹è±¡åˆ›å»ºé€ŸçŽ‡å’Œå†…å˜ä‹É用的信æ¯ã€?/p>
IBM Rational Application Developer æä¾›äº†ä¸€ä¸ªåˆ†æžä»£ç†ï¼Œå¯ä»¥ä½¿ç”¨è¯¥ä»£ç†æµ‹è¯•程åºã€?/p>
Eclipse Test and Performance Tools Platform 是一ä¸?Eclipse ™å¹ç›®åQŒæä¾›äº†åŸÞZºŽ Eclipse 的开放æºä»£ç 分æžåŠŸèƒ½æ”¯æŒã€?/p>
一旦将 Portlet 部çÖvåˆîCº†é—¨æˆ·ä¸ï¼Œž®±åº”该测è¯?Portlet 在负载下的行为。压力或负è²ç”Ÿæˆå™¨ï¼ˆå¦?Rational Performance Testerã€Rational Robotã€Apache JMeter ½{‰ç‰åQ‰æ˜¯å…ähœ‰æˆæœ¬æ•ˆç›Šçš„负载测试解å†Ïx–¹æ¡ˆï¼Œå¯ä»¥å¸®åŠ©æ‚¨å‡†¼‹®åœ°æ¨¡æ‹Ÿç”Ÿäñ”è´Ÿè²ä¸‹çš„¾pÈ»Ÿæ€§èƒ½ã€‚这些工具将攉™›†å¤§é‡ä¿¡æ¯åQŒä»¥å¸®åŠ©¼‹®å®š¾pÈ»Ÿæ˜¯å¦å…ähœ‰è‰¯å¥½çš„æ€§èƒ½è®¾è®¡åQŒå…¶ä¸åŒ…括关于请求å“应时间ã€å¤„ç†å™¨ä½¿ç”¨çއç‰çš„æ•°æ®ã€?/p>
在负载测试期é—ß_¼Œåº”该监视门户环境ä¸çš„è‹¥å¹²æ€§èƒ½å‚æ•°ã€‚IBM Tivoli] Performance VieweråQˆä¸Ž WebSphere Application Server 一èµäh供)å¯ä»¥å¸®åŠ©ç›‘è§†åº”ç”¨½E‹åºæœåŠ¡å™¨å†…çš„èµ„æºä‹É用情å†üc€?/p>
é—¨æˆ·çŽ¯å¢ƒçš„è®¸å¤šé—®é¢˜éƒ½å’Œå†…å˜æœ‰å…Ÿë€‚JVM 实现为工å…äh供了两类信æ¯åQŒä»¥ä¾›è¿›è¡Œæ€§èƒ½åˆ†æžåQ?/p>
åœ?IBM alphaWorks ä¸å¯ä»¥å¾—到垃圑֛žæ”¶å™¨è¾“出的分æžå·¥å…—÷€‚而å¦ä¸€æ–šw¢åQŒheapRoots 则是一‹Æ‘Ö¼ºå¤§çš„å †è{储分æžè¾…助工兗÷€‚《IBM Java è¯Šæ–æŒ‡å—》也æä¾›äº†å¤„ç†é—¨æˆïLš„相关性能问题的有用信æ¯ã€‚请å‚阅å‚考资æ–?/font>åQŒä»¥èŽ·å¾—˜q™äº›å‚考资料的链接ã€?/p>
å¼€å?WebSphere Portal ä»£ç æ—Óž¼Œé€šå¸¸ä¸éœ€è¦æ‰€æœ‰è¿™äº›å·¥å…øP¼Œä½†è¦åœ¨ç”Ÿäº§çŽ¯å¢ƒä¸æŽ¨å‡ºæ›´å¤§çš„é—¨æˆøP¼Œå¿…é¡»ä»Žæ€§èƒ½çš„è§’åº¦å¯¹é—¨æˆ·ä»£ç æœ‰ä¸ªè‰¯å¥½çš„ç†è§£ã€?br />
创å¾è‡ªå®šä¹‰é—¨æˆ·ä»£ç æ—¶åQŒå¼€å‘äh员必™å»è€ƒè™‘很多斚w¢çš„å› ç´ ï¼Œä»¥ç¡®ä¿é—¨æˆäh€§èƒ½å¾—到优化。尾l“如下:
ž®†ç²¾åŠ›ä¸»è¦æ”¾åœ¨å…³é”®ä»£ç èµ\径的改进上。关键代ç èµ\å¾„æ˜¯å¤„ç†æ—‰™—´é•¿æˆ–é¢‘ç¹æ‰§è¡Œçš„代ç èµ\径。找到哪些类的哪些方法ä½äºŽå…³é”®èµ\径上。在关键路径外的优化效果相当ž®ã€?/p>
è¦åŒæ—¶å…¼™å¾æ‰§è¡Œæ€§èƒ½å’Œå†…å˜åˆ†é…ã€?/p>
使用æ°å½“的工å…ähµ‹é‡å’Œåˆ†æžä»£ç åQŒä»¥èŽ·å¾—æœ€å…¸åž‹çš„ç”¨æˆ·äº¤äº’ã€?/p>
ä¸åŒ¾~–ç 问题解决æ–ÒŽ¡ˆå¯èƒ½æœ‰å¾ˆå¤§çš„æ€§èƒ½å˜åŒ–ã€?/p>
必须全é¢äº†è§£å¤„ç†å‘现的性能问题的特定实现的¾l†èŠ‚ã€?/p>
è®¾è®¡è‡ªå®šä¹‰ä»£ç æ—¶è¦è€ƒè™‘åŽç«¯è®‰K—®æ¨¡å¼ã€?/p>
ä¸è¦é”™è¯¯åœ°å°†ä¼šè¯ä½œäØ“ Portlet 的通用数æ®å˜å‚¨åŒÞZ‹É用。å¯ä»¥é‡‡ç”¨æ›´å¥½åœ°æ–ÒŽ³•å¤„ç†æ•°æ®åQŒä»¥æ»¡èƒöå„ç§ä¸åŒçš„å®žçŽ°è¦æ±‚ã€?/p>
考虑利用 WebSphere Application Server å’?WebSphere Portal æä¾›çš„特ŒDŠåŠŸèƒ½ä»¥ä¼˜åŒ– Portlet 性能åQˆå‡è®„¡›®æ ‡çŽ¯å¢ƒä¹Ÿåœ¨ä‹É用相åŒçš„功能åQ‰ã€?/p>