国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JSP > 正文

JSP/Servlet應(yīng)用程序優(yōu)化八法

2020-06-01 23:30:54
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  你的J2EE應(yīng)用是不是運(yùn)行的很慢?它們能不能承受住不斷上升的訪問量?本文講述了開發(fā)高性能、高彈性的JSP頁(yè)面和Servlet的性能優(yōu)化技術(shù)。其意思是建立盡可能快的并能適應(yīng)數(shù)量增長(zhǎng)的用戶及其請(qǐng)求。在本文中,我將帶領(lǐng)你學(xué)習(xí)已經(jīng)實(shí)踐和得到證實(shí)的性能調(diào)整技術(shù),它將大大地提高你的servlet和jsp頁(yè)面的性能,進(jìn)而提升J2EE的性能。這些技術(shù)的部分用于開發(fā)階段,例如,設(shè)計(jì)和編碼階段。另一部分技術(shù)則與配置相關(guān)。

  技術(shù)1:在HttpServletinit()方法中緩存數(shù)據(jù)

  服務(wù)器會(huì)在創(chuàng)建servlet實(shí)例之后和servlet處理任何請(qǐng)求之前調(diào)用servlet的init()方法。該方法在servlet的生命周期中僅調(diào)用一次。為了提高性能,在init()中緩存靜態(tài)數(shù)據(jù)或完成要在初始化期間完成的代價(jià)昂貴的操作。例如,一個(gè)最佳實(shí)踐是使用實(shí)現(xiàn)了javax.sql.DataSource接口的JDBC連接池。

  DataSource從JNDI樹中獲得。每調(diào)用一次SQL就要使用JNDI查找DataSource是非常昂貴的工作,而且嚴(yán)重影響了應(yīng)用的性能。Servlet的init()方法可以用于獲取DataSource并緩存它以便之后的重用:

publicclassControllerServletextendsHttpServlet
{
privatejavax.sql.DataSourcetestDS=null;

publicvoidinit(ServletConfigconfig)throwsServletException
{
super.init(config);
Contextctx=null;
try
{
ctx=newInitialContext();
testDS=(javax.sql.DataSource)ctx.lookup("jdbc/testDS");
}
catch(NamingExceptionne)
{
ne.printStackTrace();
}
catch(Exceptione)
{
e.printStackTrace();
}
}

publicjavax.sql.DataSourcegetTestDS()
{
returntestDS;
}
...
...
}

  技術(shù)2:禁用servlet和Jsp的自動(dòng)裝載功能

  當(dāng)每次修改了Servlet/JSP之后,你將不得不重新啟動(dòng)服務(wù)器。由于自動(dòng)裝載功能減少開發(fā)時(shí)間,該功能被認(rèn)為在開發(fā)階段是非常有用的。但是,它在運(yùn)行階段是非常昂貴的;servlet/JSP由于不必要的裝載,增加類裝載器的負(fù)擔(dān)而造成很差的性能。同樣,這會(huì)使你的應(yīng)用由于已被某種類裝載器裝載的類不能和當(dāng)前類裝載器裝載的類不能相互協(xié)作而出現(xiàn)奇怪的沖突現(xiàn)象。因此,在運(yùn)行環(huán)境中為了得到更好的性能,關(guān)閉servlet/JSP的自動(dòng)裝載功能。

  技術(shù)3:控制HttpSession

  許多應(yīng)用需要一系列客戶端的請(qǐng)求,因此他們能互相相關(guān)聯(lián)。由于HTTP協(xié)議是無(wú)狀態(tài)的,所以基于Web的應(yīng)用需要負(fù)責(zé)維護(hù)這樣一個(gè)叫做session的狀態(tài)。為了支持必須維護(hù)狀態(tài)的應(yīng)用,Javaservlet技術(shù)提供了管理session和允許多種機(jī)制實(shí)現(xiàn)session的API。HttpSession對(duì)象扮演了session,但是使用它需要成本。無(wú)論何時(shí)HttpSession被使用和重寫,它都由servlet讀取。你可以通過使用下面的技術(shù)來(lái)提高性能:
l在JSP頁(yè)面中不要?jiǎng)?chuàng)建默認(rèn)的HttpSession:默認(rèn)情況下,JSP頁(yè)面創(chuàng)建HttpSession。如果你在JSP頁(yè)面中不用HttpSession,為了節(jié)省性能開銷,使用下邊的頁(yè)面指令可以避免自動(dòng)創(chuàng)建HttpSession對(duì)象:

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 库伦旗| 尤溪县| 娄底市| 化德县| 子长县| 吉首市| 正蓝旗| 得荣县| 曲麻莱县| 射洪县| 曲松县| 陕西省| 顺义区| 嵊泗县| 通河县| 化州市| 元阳县| 巨野县| 竹山县| 泰宁县| 雅江县| 昌乐县| 古浪县| 田东县| 桃园市| 和龙市| 都兰县| 巩留县| 石景山区| 枞阳县| 霍邱县| 沙雅县| 永宁县| 南澳县| 潜山县| 红安县| 蒙城县| 吕梁市| 密山市| 沛县| 正阳县|