本文叙述Servlet API的讨论,包括JSR315专家组领袖之一RajivMordani和RoyVanRijn等名人的见解。

JSR-315发布了Servlet 3.0标准的揭露预览版,一起在GlassFish代码分支上供给了参阅完成。这次发布引发了人们关于专家组(ExpertGroup)为下一代Servlet API和整个JavaEE6渠道做出的各种挑选的争辩。

叙说Servlet API的评论(servlet api是什么)  Servlet API 第1张

Servlet API一向处于风口浪尖,从初期草稿开端,JSR315专家组致力于在相似快捷开发、插件性等范畴完善和进步该标准,其***之一RajivMordani,这样说道:

快捷开发(EaseofDevelopment):在前期草案中,咱们添加了一些注解,答应你像POJO相同写Servlet 。可是在专家组的若干次评论和社区反应之后,咱们决议删去像@GET,@POST这样的办法层注解,保存doGet、doPos办法和扩展HttpServlet 类。可是,那些重命名以更有用运用的最顶层注解依然存在。@WebServlet 用于声明一个Servlet ,@Servlet Filter声明过滤器,@WebServlet Context Listener界说Servlet Context Listener。除了这些注解,像@Resource这种自Servlet 2.5就一向支撑的注解则坚持不变。

可刺进性:构建于Servlet 之上的Web结构在开发人员中很受欢迎,其间许多人提出了各式各样的问题。为了更好地支撑结构便于开发人员编写web运用,咱们在Servlet 3.0标准中添加一些办法以协助开发人员依据本身状况运用和办理结构。

异步处理:这是咱们在Servlet 3.0标准中改变***的部分。在前期草案中,咱们暂停、从头开端、确认了咱们界说的语义。可是,在这之后,专家组关于怎么处理异步处理的各种用例进行了许多的评论,标准中做出的批改现在也能够处理各种问题。

RoyVanRijn表达了他关于前期草案中呈现的一些特性的忧虑:

我更倾向于彻底不运用针对GET/POST办法的注解,可是我发现JavaEE6标准发起运用相似的注解,JSR-315的编写者“别无挑选”(糟糕的托言)。我在本文中表达的观念现已发给了JSR安排,但至今没有回应。

我也找不到一名成员给出原因、解说、弄清等等。最近JavaEE6标准发布揭露预览版,其间包含了对Servlet 3.0标准的引证,所以这会成为JavaEE6的一部分。可是我恳请他们花时间从头考虑关于注解的决议。

跟着标准揭露预览版的发布,来自Webtide的GregWilkins以为该标准十分糟糕,是不和谐的专家组和有缺点的流程的产品。他的首要观念包含:

它代表了API规划上的一次思维试验,不重视完成的杂乱性、试用可行性和社区反应。
要求测验完成的恳求被拒绝了。
没有揭露的或许合理的机制来搜集来自社区的需求和名贵的社区咨询。
一些含糊的需求(比方包装的异步恳求)在较晚时分包含进来,没有用例和用户需求。
写的十分糟糕,就像大多数JCP文档相同。
一些新的特性引起了安全危险,并或许导致布置缓慢。
异步Servlet 的主张被改变了,与前期草案不同。开始的办法是JettyContinuations的成果,从2008年3月即可在Jetty-7pre-release中试用,现已在许多结构和运用中测验过,包含ometd、DWR、JSF和BlazeDS。

Greg总结说:

我信任在现在的预览版中有显着的过错,这些缺点现已多的让人很简略就能够发现。当我从专家组收到关于这些问题的支撑信息时,我无法坚信标准***的合法身份,我或许由于过于严峻而无法得到协助了。

Rajiv对Greg的答复中指出:

在GlassFish中有相关完成。
他从没看到过Greg的恳求。
假如不喜爱新功能,能够制止运用。
没有显着的依据标明布置会变慢。
异步Servlet 添加的办法更被社区所喜爱,他引证了专家组的邮件。

Rajiv也提到了来自RedHat的BillBurke写的一篇博文,其间他批评了Jetty6中的异步Servlet 完成。

随后,GregWilkins宣告他致力于Servlet 3.0异步Servlet 的一个完成,他在博客上列举了一些批改/扩展和与专家组的继续评论。其间包含:

新的异步分发器类型(ASYNCDispatcherType),用于分发异步恳求。
当恳求分发时,isAsyncStarted()办法为false。
假如getReader()或许getOutputStream()现已被调用,则调用startAsync()或许startAsync(request.response)时会抛出IllegalStateException反常。这能够把异步处理器约束到简略的状况下。
假如经过startAsync(request,response)发动异步形式,在AsyncContext 上运用任何forward(...)办法都会有IllegalStateException反常。这避免了分发包装器的杂乱,但答应异步处理器运用包装器。
forward(path)和forward(Context ,path)办法还没有完成。

代码能够从Jetty分支和Servlet -API分支中得到。

Grep谈到了异步Servlet 的工作:

尽管还需求更多测验,可是这个代码现已完成了根本的异步行为,不需求很杂乱的从头分发恳求或许前递办法。我信任这代表了3.0的合理折中计划。在咱们从3.0的简略子集里取得经历之后,假如需求更多的特性,能够添加到3.1中。

【修改引荐】

  1. Servlet Context的规模
  2. 浅析Servlet 3.0 API的概念
  3. Servlet注释与布置描述符
  4. Java Servlet和Servlet 3.0的新特性
  5. Servlet和JSP潜在的危险
转载请说明出处
知优网 » 叙说Servlet API的评论(servlet api是什么)

发表评论

您需要后才能发表评论