我维护一个 GWT Web 应用程序,该应用程序使用 3 个 Java servlet 进行文件下载/上传和数据传输。我的 servlet 映射有问题,几个月来都没有动过它们,就在几天前,当我尝试访问我的 servlet 时,我开始收到 404 错误。我甚至无法通过从 WEB-INF/classes 目录(即 /servlet/com/company/project/servletname)输入它们的完整路径来访问 servlet。
不幸的是,这些程序运行在共享托管计划中,我无法启动或停止 tomcat 或执行任何其他操作。在向托管服务提供商发出故障单之前,我只想检查我对 servlet 的假设是否正确,以及是否有任何步骤可以针对这种情况进行操作。
是否需要重新启动 tomcat 才能使用上传到“WEB-INF/classes”目录的新 servlet?是否需要重新启动 tomcat 才能读取“WEB-INF”目录中 web.xml 的更改?
如果我将 .class 文件放在 /WEB-INF/classes/foo/bar.class ,我应该能够立即通过“http://www.mydomain.com/servlet/foo/bar“或者我需要等待 tomcat 识别这个新的类文件?或者我必须将它包含在现有的 web.xml servlet 映射文件中?
谢谢你的帮助
答案1
为了使用上传到“WEB-INF/classes”目录的新 servlet,是否需要重新启动 tomcat?
这取决于你的
是否需要重新启动 tomcat 才能读取“WEB-INF”目录中 web.xml 的更改?
这取决于你的
如果我将 .class 文件放在 /WEB-INF/classes/foo/bar.class ,我应该能够立即通过“http://www.mydomain.com/servlet/foo/bar“或者我需要等待 tomcat 识别这个新的类文件?
否,如果您的上下文是可重新加载的,则该类将立即可供 webapp 类加载器使用,请参见上文。
或者我必须将其包含在现有的 web.xml servlet 映射文件中?
要通过 HTTP 访问您的类(假设它扩展了 HttpServlet),它将需要一个映射web.xml
(假设您正在使用直接的 http servlet)