Eclipse 将servlet添加到web.xml会导致tomcat无法启动

Eclipse 将servlet添加到web.xml会导致tomcat无法启动,eclipse,tomcat,servlets,web.xml,Eclipse,Tomcat,Servlets,Web.xml,在EclipseLuna中使用Tomcat8 在任何人开始惊慌失措并说这已经得到了回答之前,它还没有得到回答,因为所有的答案都说使用@WebServlet注释在这种情况下不起作用,我想指出,我有一个特定的需要/愿望,即使用web.xml来定义servlet 为了避免仅仅因为我更改了一个可能会更改(例如数据库的IP地址)的值而不得不重新编译和重新部署应用程序,我想为应用程序的web.xml文件中的servlet标记添加一个init param标记 但是正如已经多次指出的那样,将servlet标记添

在EclipseLuna中使用Tomcat8

在任何人开始惊慌失措并说这已经得到了回答之前,它还没有得到回答,因为所有的答案都说使用@WebServlet注释在这种情况下不起作用,我想指出,我有一个特定的需要/愿望,即使用web.xml来定义servlet

为了避免仅仅因为我更改了一个可能会更改(例如数据库的IP地址)的值而不得不重新编译和重新部署应用程序,我想为应用程序的web.xml文件中的servlet标记添加一个init param标记

但是正如已经多次指出的那样,将servlet标记添加到web.xml使tomcat不会在eclipse中启动—删除标记并使用@WebServlet注释修复了问题

不幸的是,提供的错误消息与发生这种情况时的错误消息一样无用:localhost上的Tomcat v8.0服务器无法启动。此外,eclipse中的控制台输出给出了严重错误消息:未能销毁与ProtocolHandler[ajp-nio-8009]关联的端点 但是我不知道这与web.xml文件有什么关系

我不知道在这个特定的servlet中使用@WebServlet的原因是,这意味着每次更改数据库的IP地址时,我都必须重新编译和重新部署,而更好的方法是在web.xml中进行更改,然后简单地重新启动tomcat


有没有办法克服这个问题,或者每次更改时我都无法手动将应用程序部署到tomcat上,这在开发过程中是非常痛苦的,因为经常发生更改。

您可以尝试以下方法,而不是使用web.xml:

使用CATALINA_OPTS=-Dmyip=10.0.0.1设置Java系统属性。硒 使用System.getProperties访问该值
在Eclipse中,您可以在tomcat的运行配置中编辑这篇文章,我刚刚经历了同样的挑战,答案出人意料地简单,只是偶然发现的。添加新的servlet时,先在web.xml中对定义servlet的配置进行排序,然后在以后的servlet路径定义中排序。更改此顺序将启动tomcat,您可以继续测试单个servlet和开发。

创建数据源并使用JNDI。谢谢Stefan。但我真正想要的不是一种解决方法,而是一种阻止tomcat在向web.xml添加servlet定义时崩溃的方法。但是,只需在web.xml文件中定义一个config参数,就可以完成同样的事情,这不会导致tomcat崩溃。然而,这两种选择的问题在于范围。使用config param可以使应用程序中的所有对象都可以看到该值,而使用CATALINA_OPTS可以使所有对象都可以看到该值。而init param使其仅对为其定义的servlet可见。理想情况下,我可以找出在web.xml中添加servlet定义时tomcat崩溃的原因……这正是我想要弄明白的。