【问题标题】:@WebServlet mapping error on Glassfish 3.1Glassfish 3.1 上的@WebServlet 映射错误
【发布时间】:2015-03-08 15:38:04
【问题描述】:

Glassfish 3.1 启动时出现以下严重错误:

servlet 'MyInheritingServlet' 已实现 'com.mycompany.MyInheritingServlet' 在 xml 中。它确实 与“com.mycompany.MyBaseServlet”不匹配 来自注解@WebServlet。

这是我的代码中的一个 sn-p:

  @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 会发出这个错误?

谢谢!

【问题讨论】:

    标签: java jakarta-ee annotations glassfish


    【解决方案1】:

    问题是您的MyInheritingServlet 正在扩展MyBaseServlet

    因为MyInheritingServlet继承了一切,所以它也继承了MyBaseServlet@WebServlet注解。所以看起来类似:

      @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 类。

    【讨论】:

    • 谢谢@unwichtich。我还是不太明白为什么 MyInheritingServlet 从它的基类继承 @WebServlet 注释。 @WebServlet 注释不应该具有@Inherited 注释以便被子类继承吗? AFAIK,@WebServlet 未继承给子类:[链接] (docs.oracle.com/javaee/6/api/javax/servlet/annotation/…)
    猜你喜欢
    • 2014-09-04
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多