[Java][Servlet] Failed to destroy end point associated with ProtocolHandler [http-nio-8080]
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]相关推荐
- Java Servlet技术
Java Servlet技术 Stephanie Bodoff 当Web刚开始被用来传送服务时,服务提供者就已经意识到了动态内容的需要.Applet是为了实现这个目标的一种最早的尝试,它主要关注使用客 ...
- java mongodb_MongoDB Java Servlet Web应用程序示例教程
java mongodb Welcome to MongoDB Web Application example. Earlier in MongoDB Java Example we learned ...
- 编程基础---java Servlet 学习
来源1 来源2 来源3 Servlet 为创建基于 web 的应用程序提供了基于组件.独立于平台的方法,可以不受 CGI 程序的性能限制.Servlet 有权限访问所有的 Java API,包括访问企 ...
- java servlet applet,详解Java Servlet与Applet比较
Java Servlet与Applet相似之处: ◆它们不是独立的应用程序,没有main()方法. ◆它们不是由用户或程序员调用,而是由另外一个应用程序(容器)调用. ◆它们都有一个生存周期,包含in ...
- java servlet 多线程_Servlet的多线程和线程安全
线程安全 首先说明一下对线程安全的讨论,哪种情况我们可以称作线程安全? 网上对线程安全有很多描述,我比较喜欢<Java并发编程实战>给出的定义,"当多个线程访问某个类时,不管运行 ...
- Java Servlet完全教程
本文来自Java Servlet完全教程 Servlet 是一些遵从Java Servlet API的Java类,这些Java类可以响应请求.尽管Servlet可以响应任意类型的请求,但是它们使用最广 ...
- Java Servlet工作原理问答
导读 本文来自stackoverflow的问答,讨论了Java Servlet的工作机制,如何进行实例化.共享变量和多线程处理. 问题:Servlet是如何工作的?Servlet 如何实例化.共享变量 ...
- Java Servlet关键点详解
Java Servlet关键点详解 1.理解Servlet的生命周期 Servlet引擎控制着Servlet的生命周期 Servlet的生命周期由以下三个方法进行描述(五个生命周期阶段) 1)初始化 ...
- java flex 上传文件_使用Flex和java servlet上传文件
资源都是来自网上.本实例将展示使用Flex和java servlet上传文件. 事前准备就是到http://commons.apache.org 下载common-fileupload-1.1.1.j ...
最新文章
- scau实验题 8596 Longest Ordered Subsequence
- 1001.Reverse Root
- typescript-koa-postgresql 实现一个简单的rest风格服务器 —— 连接 postgresql 数据库...
- H3C实验H3CTE讲师京东翰林分享实验4 WLAN基本配置
- Flashdevelop解决ANE报Not supported native extensions profile
- sql server 2008 r2安装图解教程
- php 还原mysql_PHP备份/还原MySQL数据库的代码
- Android网易歌词json接口,网易云音乐api分析
- 新浪xweibo代码架构分析
- 配置快速生成vue模板
- PWM驱动sg90电机
- Jquery.Print实现表格打印
- CUDA安装出现图形驱动程序安装失败
- Hive中使用sort_array函数解决collet_list列表排序混乱问题
- linux对指定ip限速,使用tc对linux中某ip段限速
- b是python文件二进制打开,Python核心编程16 ----- 文件的打开(读取),修改,关闭,二进制...
- 51单片机学习——中断
- 极限交付:软件项目外包成功的保障
- Rancher 干什么用的
- 计算机的usn插口无法读取,USB3.0还缺谁 解决主板插槽不健全方案