Servlet doPost

时间:2017-03-20 09:31:00

标签: java multithreading servlets jaxb

我需要了解在Servlet代码的doPost方法中引入synchronized块对性能的影响。

我要做的是以下内容:

  1. 请求(XML)命中我的servlet。

  2. 使用JAXB

  3. 解组xml
  4. 我做了一些基本的逻辑检查,创建了一个回复

  5. 元帅的反应并将其发送出去。

  6. 在解组请求期间,JAXB有时没有为Date相关字段提供适当的结果。 我浏览了博客,这似乎是jaxb编组/解组的问题。

    我的问题是:

    如果我在我的servlet中引入以下代码位isnide doPost方法:

    synchronized (Unmarshaller.class)  {
    
        SoapEnvelope soap = (SoapEnvelope) MyHelper.getContext().createUnmarshaller().unmarshal(new StringReader(reqXMl));
    
        req = soap.getBody().getRequest();
    
    } 
    

    是否会有性能受损? 即如果假设有50个并行请求? 49个请求是否会等待1个请求被解组,或者所有请求都将继续这样做而没有效果?

1 个答案:

答案 0 :(得分:0)

这不是一个好主意,因为默认情况下只有一个给定servlet的实例。

如果您有一个兼容JaveEE的服务器,您可以创建将处理JAX-B反序列化的无状态EJB bean。只需将创建的bean注入servlet并使用它。

如上所述,无状态会话bean被合并,它应该像魅力一样工作!