【问题标题】:servlet is not available [duplicate]servlet 不可用 [重复]
【发布时间】:2012-06-21 10:17:32
【问题描述】:

我有一个远程 tomcat 6.0.24 服务器,上面有一个网络应用程序。 现在,当我输入映射到服务器上的特定 url ( website/wordbank/xmldictionaryservice ) 时,我得到以下信息:

HTTP 状态 404 - Servlet xmldictionaryserviceservlet 不可用

类型:状态报告

消息:Servlet xmldictionaryserviceservlet 不可用

描述:请求的资源(Servlet xmldictionaryserviceservlet 不可用)不可用。

...我期待一个带有文件选择器和提交按钮的小表单。

web.xml的相关部分在这里:

<web-app>
...
    <servlet>
        <servlet-name>xmldictionaryserviceservlet</servlet-name>
        <servlet-class>wordbank.servlets.XMLDictionaryServiceServlet</servlet-class>
    </servlet>
...
    <servlet-mapping>
        <servlet-name>xmldictionaryserviceservlet</servlet-name>
        <url-pattern>/xmldictionaryservice</url-pattern>
    </servlet-mapping>
...
</web-app>

xmldictionaryservice.jsp 的内容:

<html>
<body>

<form action="xmldictionaryservice" method="post" enctype="multipart/form-data">
<input name="xmlfile" type="file">
<input name="send" type="submit">
</form>

</body>
</html>

目录树是:

webapps
 |
 ...
 +-wordbank
    |
    ...
    +-xmldictionaryservice.jsp
    +-WEB-INF
       |
       +-web.xml
       +-classes
          |
          +-wordbank
             |
             ...
             +-servlets
                |
                ...
                +-XMLDictionaryServiceServlet.class

我检查了各种类似的线程,但它们没有帮助我。 有谁知道这里出了什么问题?

【问题讨论】:

  • 你是如何访问jsp的?网址是什么?
  • 可以是任何东西。你检查过你的日志吗?您实际上是在表单的操作中包含上下文而不在此处显示吗?
  • RameshPVK 网址是 websitename.TLD/wordbank/xmldictionaryservice @DaveNewton 我没有在表单中隐藏任何内容。日志显示:2012 年 6 月 19 日下午 1:42:48 org.apache.catalina.core.StandardWrapperValve 调用信息:Servlet xmldictionaryserviceservlet 当前不可用

标签: java jsp servlets tomcat6 web.xml


【解决方案1】:

Servlet xmldictionaryserviceservlet 不可用

这个特定于 Tomcat 的消息意味着在 webapp 的启动过程中,以下内容在 Tomcat 的掩护下失败:

String servletClass = "wordbank.servlets.XMLDictionaryServiceServlet";
String servletUrlPattern = "/xmldictionaryservice";

Servlet servlet = (Servlet) Class.forName(servletClass).newInstance();
servlet.init(servletConfig);
servlets.put(servletUrlPattern, servlet);

所以,可能的原因至少是找不到servlet类,或者servlet的默认构造函数不存在或者抛出了异常,或者init()方法抛出了异常,或者类没有完全实现Servlet(阅读:扩展HttpServlet)。

在启动期间,有关此问题的信息应在服务器日志的早期可用。再次阅读您的服务器日志以找到真正的异常和堆栈跟踪,并相应地修复 servlet 类。

【讨论】:

    【解决方案2】:

    Tomcat 正在识别 URL,因此尝试加载 XMLDictionaryServiceServlet 以创建实例。加载类XMLDictionaryServiceServlet似乎有问题,请仔细检查类(XMLDictionaryServiceServlet)是否遵循servlet约定。

    能否请您粘贴XMLDictionaryServiceServlet.java的源代码

    【讨论】:

      【解决方案3】:

      重启环境就可以了。 eclipse太频繁了

      【讨论】:

        猜你喜欢
        • 2013-01-06
        • 2016-09-21
        • 2015-05-13
        • 1970-01-01
        • 1970-01-01
        • 2017-12-12
        • 2021-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多