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

首頁 > 學院 > 開發(fā)設計 > 正文

最佳實踐:勿在 Servlet 中實現(xiàn) SingleThreadModel

2019-11-18 15:24:46
字體:
供稿:網(wǎng)友

  要害字:Servlet,jsp

摘要

請不要實現(xiàn) SingleThreadModel 接口。這種實踐將導致 Web 容器創(chuàng)建多個 servlet 實例;即為每個用戶創(chuàng)建一個實例。對于任何大小的應用程序,這種實踐都將導致嚴重的性能問題。

建議

SingleThreadModel 是一種標記接口,servlet 可以通過實現(xiàn)它來將自己的重入(re-entrancy)問題傳送給 servlet 引擎。javax.servlet.SingleThreadModel 本身就是 J2EE 規(guī)范的一部分。WebSphere servlet 引擎通過為每個用戶創(chuàng)建單獨的 servlet 實例來處理 servlet 的重入問題。因為這種方法導致極大的系統(tǒng)開銷,所以,應該避免實現(xiàn) SingleThreadModel。

通常,開發(fā)人員在多線程環(huán)境下使用 javax.servlet.SingleThreadModel 來保護可更新的 servlet 實例變量。

最佳方法 ? 不使用 SingleThreadModel

public class BpAllBadThingsServletsV1c extends HttpServlet
{
PRivate int numberOfRows = 0;
private javax.sql.DataSource ds = null;

public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
Connection conn = null;
ResultSet rs = null;
PreparedStatement pStmt = null;
int startingRows = numberOfRows;

try
{
String employeeInformation = null;
conn = ds.getConnection ("db2admin","db2admin");
pStmt = conn.prepareStatement
("select * from db2admin.employee");
rs = pStmt.executeQuery();
}
catch (Exception es)
{
// Error handling code here.
}
}
}

應被取代的方法

通常,開發(fā)人員在多線程環(huán)境下使用 javax.servlet.SingleThreadModel 來保護可更新的 servlet 實例。下列代碼片斷舉例說明了什么是要避免的。

避免這種情況!!!? javax.servlet.SingleThreadModel

public class BpAllBadThingsServletsV1c extends HttpServlet
implements SingleThreadModel
{
private int numberOfRows = 0;
private javax.sql.DataSource ds = null;

public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
Connection conn = null;
ResultSet rs = null;
PreparedStatement pStmt = null;
int startingRows = numberOfRows;

try
{
String employeeInformation = null;
conn = ds.getConnection ("db2admin","db2admin");
pStmt = conn.prepareStatement
("select * from db2admin.employee");
rs = pStmt.executeQuery();
}
catch (Exception es)
{
// Error handling code here.
}
}
}

參考資料

WebSphere application Server Development Best Practices for Performance and Scalability
作者

Harvey W. Gunther 是 IBM 在北卡羅萊納州 Raleigh 的 WebSphere 產(chǎn)品開發(fā)小組中的高級性能分析師。可以通過 hgunther@us.ibm.com 與 Harvey Gunther 聯(lián)系

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 子洲县| 西乡县| 渭源县| 塘沽区| 涿鹿县| 亳州市| 万源市| 都江堰市| 贵定县| 遂昌县| 兰州市| 洪洞县| 龙山县| 永寿县| 庆阳市| 喀什市| 平顶山市| 长葛市| 望江县| 西贡区| 贵州省| 额济纳旗| 古蔺县| 积石山| 宾阳县| 西乡县| 昆明市| 肥东县| 全椒县| 东港市| 黄陵县| 天镇县| 民丰县| 壶关县| 南雄市| 建平县| 米泉市| 古丈县| 张家口市| 蛟河市| 六枝特区|