[英]Synchronized block in Servlet doPost
我需要了解在Servlet代碼的doPost方法內部引入同步塊對性能的影響。
我正在嘗試做以下事情:
請求(XML)命中了我的servlet。
使用JAXB解組xml
我做一些基本的邏輯檢查,創建響應
元帥回應並將其發送出去。
在請求的解組期間,JAXB有時沒有給出特別針對日期相關字段的正確結果。 我瀏覽過博客,這似乎與jaxb編組/解組有關。
我的問題是:
如果我介紹了我的servlet的以下代碼位iside doPost方法:
synchronized (Unmarshaller.class) {
SoapEnvelope soap = (SoapEnvelope) MyHelper.getContext().createUnmarshaller().unmarshal(new StringReader(reqXMl));
req = soap.getBody().getRequest();
}
會不會影響性能? 即如果假設有50個並行請求? 是否會等待49個請求,直到1個請求被解組,否則所有請求都會繼續下去而沒有任何效果?
這不是一個好主意,因為默認情況下只有給定servlet的一個實例。
如果您具有符合JaveEE的服務器,則可以創建將處理JAX-B反序列化的無狀態EJB bean。 只需將創建的bean注入servlet並使用它即可。
如前所述,無狀態會話bean被合並,它應該像一個魅力一樣工作!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.