Glassfish 3.1上的@WebServlet映射错误

时间:2015-03-08 15:38:05

标签: java java-ee annotations glassfish

我在启动时在Glassfish 3.1上收到以下严重错误:

  

servlet' MyInheritingServlet'有实施   ' com.mycompany.MyInheritingServlet'在xml中。确实如此   与' com.mycompany.MyBaseServlet'不匹配   来自注释@WebServlet。

这是我代码中的一个片段:

  @WebServlet(name = "MyInheritingServlet", urlPatterns = "/MyInheritingServlet")
    public class MyInheritingServlet extends MyBaseServlet {
// implementation & overrides here ....
}

    @WebServlet(name = "MyBaseServlet", urlPatterns = "/MyBaseServlet")
    public class MyBaseServlet extends HttpServlet {
// implementation & overrides here ....
}

有人可以解释为什么Glassfish会发出此错误吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

问题是您的MyInheritingServlet正在延长MyBaseServlet

由于MyInheritingServlet继承了所有内容,因此它还会从@WebServlet继承MyBaseServlet注释。所以它看起来类似于:

  @WebServlet(name = "MyInheritingServlet", urlPatterns = "/MyInheritingServlet")
  @WebServlet(name = "MyBaseServlet", urlPatterns = "/MyBaseServlet")
  public class MyInheritingServlet extends MyBaseServlet {
  // implementation & overrides here ....
  }

这似乎混淆了Glassfish 3.1中的实现。但它似乎没有Glassfish 4.1中的错误消息。

来自The Java EE 6 Tutorial - Chapter 10 Java Servlet Technology

  

使用@WebServlet注释的类必须扩展   javax.servlet.http.HttpServlet类。