Background: Servlet version 3.1(3.0之后就有了@WebServlet注解)

Error

严重: Failed to destroy end point associated with ProtocolHandler ["http-nio-8080"]
java.lang.NullPointerExceptionat org.apache.tomcat.util.net.NioEndpoint.releaseCaches(NioEndpoint.java:316)at org.apache.tomcat.util.net.NioEndpoint.unbind(NioEndpoint.java:492)at org.apache.tomcat.util.net.AbstractEndpoint.destroy(AbstractEndpoint.java:821)at org.apache.coyote.AbstractProtocol.destroy(AbstractProtocol.java:551)at org.apache.catalina.connector.Connector.destroyInternal(Connector.java:1023)at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:292)at org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:589)at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:292)at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:877)at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:292)at org.apache.catalina.startup.Catalina.start(Catalina.java:633)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)十月 27, 2016 11:36:07 下午 org.apache.coyote.AbstractProtocol destroy
信息: Destroying ProtocolHandler ["ajp-nio-8009"]
十月 27, 2016 11:36:07 下午 org.apache.coyote.AbstractProtocol destroy
严重: Failed to destroy end point associated with ProtocolHandler ["ajp-nio-8009"]
java.lang.NullPointerExceptionat org.apache.tomcat.util.net.NioEndpoint.releaseCaches(NioEndpoint.java:316)at org.apache.tomcat.util.net.NioEndpoint.unbind(NioEndpoint.java:492)at org.apache.tomcat.util.net.AbstractEndpoint.destroy(AbstractEndpoint.java:821)at org.apache.coyote.AbstractProtocol.destroy(AbstractProtocol.java:551)at org.apache.catalina.connector.Connector.destroyInternal(Connector.java:1023)at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:292)at org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:589)at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:292)at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:877)at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:292)at org.apache.catalina.startup.Catalina.start(Catalina.java:633)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)

我首先分析了是不是端口号被占用了的问题,使用netstat -ano|findstr "8080"未找到有使用该端口的进程。于是我回头浏览代码,并将web.xml中的servlet配置删除掉,tomcat正常启动,难道是下面的servlet配置错了?

  <servlet><servlet-name>LoginServlet</servlet-name><servlet-class>com.study.servlet.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>LoginServlet</servlet-name><url-pattern>/loginServlet</url-pattern></servlet-mapping>

这个配置没有问题,接下来就去看servlet的实现了,发现这个类有个注解,查看了一下这个注解的含义

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
...
}

这里将@WebServlet("/loginServlet")注解去掉,tomcat就能启动成功,于是问题就来了,为什么注释掉这段注解就OK了?
我们先看看这段注解是干什么的:
~~
在Servlet3.0之后,可以使用注解来告知Servlet容器哪些Servlet会提供服务,使用@WebServlet("/loginServlet")注解表示了当url的请求为loginServlet,则由LoginServlet实例提供服务。所以当你添加了注解,又在web.xml中进行了servlet的配置,我猜想会造成冲突,servlet会初始化2次,那么我们删掉注解或者删掉web.xml中的配置都能正常启动tomcat。
~~

以上是我面对这个Error找出的解决方案,不一定适合你的Error,仅供参考。

转载于:https://www.cnblogs.com/chenyongblog/p/6006151.html

[Java][Servlet] Failed to destroy end point associated with ProtocolHandler [http-nio-8080]相关推荐

  1. Java Servlet技术

    Java Servlet技术 Stephanie Bodoff 当Web刚开始被用来传送服务时,服务提供者就已经意识到了动态内容的需要.Applet是为了实现这个目标的一种最早的尝试,它主要关注使用客 ...

  2. java mongodb_MongoDB Java Servlet Web应用程序示例教程

    java mongodb Welcome to MongoDB Web Application example. Earlier in MongoDB Java Example we learned ...

  3. 编程基础---java Servlet 学习

    来源1 来源2 来源3 Servlet 为创建基于 web 的应用程序提供了基于组件.独立于平台的方法,可以不受 CGI 程序的性能限制.Servlet 有权限访问所有的 Java API,包括访问企 ...

  4. java servlet applet,详解Java Servlet与Applet比较

    Java Servlet与Applet相似之处: ◆它们不是独立的应用程序,没有main()方法. ◆它们不是由用户或程序员调用,而是由另外一个应用程序(容器)调用. ◆它们都有一个生存周期,包含in ...

  5. java servlet 多线程_Servlet的多线程和线程安全

    线程安全 首先说明一下对线程安全的讨论,哪种情况我们可以称作线程安全? 网上对线程安全有很多描述,我比较喜欢<Java并发编程实战>给出的定义,"当多个线程访问某个类时,不管运行 ...

  6. Java Servlet完全教程

    本文来自Java Servlet完全教程 Servlet 是一些遵从Java Servlet API的Java类,这些Java类可以响应请求.尽管Servlet可以响应任意类型的请求,但是它们使用最广 ...

  7. Java Servlet工作原理问答

    导读 本文来自stackoverflow的问答,讨论了Java Servlet的工作机制,如何进行实例化.共享变量和多线程处理. 问题:Servlet是如何工作的?Servlet 如何实例化.共享变量 ...

  8. Java Servlet关键点详解

    Java Servlet关键点详解 1.理解Servlet的生命周期 Servlet引擎控制着Servlet的生命周期 Servlet的生命周期由以下三个方法进行描述(五个生命周期阶段) 1)初始化 ...

  9. java flex 上传文件_使用Flex和java servlet上传文件

    资源都是来自网上.本实例将展示使用Flex和java servlet上传文件. 事前准备就是到http://commons.apache.org 下载common-fileupload-1.1.1.j ...

最新文章

  1. scau实验题 8596 Longest Ordered Subsequence
  2. 1001.Reverse Root
  3. typescript-koa-postgresql 实现一个简单的rest风格服务器 —— 连接 postgresql 数据库...
  4. H3C实验H3CTE讲师京东翰林分享实验4 WLAN基本配置
  5. Flashdevelop解决ANE报Not supported native extensions profile
  6. sql server 2008 r2安装图解教程
  7. php 还原mysql_PHP备份/还原MySQL数据库的代码
  8. Android网易歌词json接口,网易云音乐api分析
  9. 新浪xweibo代码架构分析
  10. 配置快速生成vue模板
  11. PWM驱动sg90电机
  12. Jquery.Print实现表格打印
  13. CUDA安装出现图形驱动程序安装失败
  14. Hive中使用sort_array函数解决collet_list列表排序混乱问题
  15. linux对指定ip限速,使用tc对linux中某ip段限速
  16. b是python文件二进制打开,Python核心编程16 ----- 文件的打开(读取),修改,关闭,二进制...
  17. 51单片机学习——中断
  18. 极限交付:软件项目外包成功的保障
  19. Rancher 干什么用的
  20. 计算机的usn插口无法读取,USB3.0还缺谁 解决主板插槽不健全方案

热门文章

  1. Kotlin入门(19)Android的基础布局
  2. 大数据之R语言速成与实战
  3. 【Python网络爬虫】规则#20181023
  4. Spring AOP 源码初窥(二) 从注解开始
  5. 彻底理解js中的和||
  6. 深入理解 MVC 中的 M 与 C
  7. cron计划任务、chkconfig工具、systemd管理服务、unit、target介绍
  8. java易忘代码备份
  9. html5实例-闪烁的星星
  10. 判断字符串解析是JsonObject或者JsonArray