【问题标题】:Tomcat 5.0 - The requested resource is not availableTomcat 5.0 - 请求的资源不可用
【发布时间】:2013-02-08 12:28:16
【问题描述】:

我知道这个问题已经被问过很多次了,但我似乎找不到解决办法。

我收到此错误消息:“请求的资源 (/package/servlet/access) 不可用。”

我有这个 web.xml 文件:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- Define CRM session timeout -->
<session-config>
<session-timeout>60</session-timeout>
</session-config>

<!-- Define servlet-mapped and path-mapped example filters -->
<filter>
    <filter-name>Servlet Mapped Filter</filter-name>
    <filter-class>Filters.ExampleFilter</filter-class>
<init-param>
    <param-name>attribute</param-name>
    <param-value>Filters.ExampleFilter.SERVLET_MAPPED</param-value>
</init-param>
</filter>
<filter>
    <filter-name>Path Mapped Filter</filter-name>
    <filter-class>Filters.ExampleFilter</filter-class>
<init-param>
    <param-name>attribute</param-name>
    <param-value>Filters.ExampleFilter.PATH_MAPPED</param-value>
</init-param>
</filter>
<filter>
    <filter-name>Request Dumper Filter</filter-name>
    <filter-class>Filters.RequestDumperFilter</filter-class>
</filter>

<!-- Example filter to set character encoding on each request -->
<filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class>Filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>EUC_JP</param-value>
    </init-param>
</filter>

<filter>
    <filter-name>Compression Filter</filter-name>
    <filter-class>CompressionFilters.CompressionFilter</filter-class>

    <init-param>
      <param-name>compressionThreshold</param-name>
      <param-value>10</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>0</param-value>
    </init-param>
</filter>

<!-- Define filter mappings for the defined filters -->
<filter-mapping>
    <filter-name>Servlet Mapped Filter</filter-name>
<servlet-name>invoker</servlet-name>
</filter-mapping>
<filter-mapping>
    <filter-name>Path Mapped Filter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>


<!-- Example filter mapping to apply the "Set Character Encoding" filter
     to *all* requests processed by this web application -->
<!--
    <filter-mapping>
        <filter-name>Set Character Encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
-->

<!--
    <filter-mapping>
      <filter-name>Compression Filter</filter-name>
      <url-pattern>/CompressionTest</url-pattern>
    </filter-mapping>
-->

<!--
    <filter-mapping>
        <filter-name>Request Dumper Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
-->

<!-- Define example application events listeners -->
<listener>
    <listener-class>Listeners.ContextListener</listener-class>
</listener>
<listener>
    <listener-class>Listeners.SessionListener</listener-class>
</listener>

<!-- Define servlets that are included in the example application -->
<servlet>
    <servlet-name>SendMailServlet</servlet-name>
    <servlet-class>SendMailServlet</servlet-class>
</servlet>

<servlet>
    <servlet-name>
        snoop
    </servlet-name>
    <servlet-class>
        SnoopServlet
    </servlet-class>
    <!--
        <init-param>
            <param-name>foo</param-name>
            <param-value>bar</param-value>
        </init-param>
    -->
    <run-as>
        <description>Security role for anonymous access</description>
        <role-name>tomcat</role-name>
    </run-as>
</servlet>

<servlet>
  <servlet-name>
      servletToJsp
  </servlet-name>
  <servlet-class>
      servletToJsp
  </servlet-class>
</servlet>
<servlet>
    <servlet-name>
        CompressionFilterTestServlet
    </servlet-name>
    <servlet-class>
        CompressionFilters.CompressionFilterTestServlet
    </servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>
        CompressionFilterTestServlet
    </servlet-name>
    <url-pattern>
        /CompressionTest
    </url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>SendMailServlet</servlet-name>
    <url-pattern>/SendMailServlet</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>
        snoop
    </servlet-name>
    <url-pattern>
        /snoop
    </url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>
        servletToJsp
    </servlet-name>
    <url-pattern>
        /servletToJsp
    </url-pattern>
</servlet-mapping>

<taglib>
    <taglib-uri>
   http://jakarta.apache.org/tomcat/debug-taglib
    </taglib-uri>
    <taglib-location>
       /WEB-INF/jsp/debug-taglib.tld
    </taglib-location>
</taglib>

<taglib>
    <taglib-uri>
   http://jakarta.apache.org/tomcat/examples-taglib
    </taglib-uri>
    <taglib-location>
       /WEB-INF/jsp/example-taglib.tld
    </taglib-location>
</taglib>

<resource-ref>
  <res-ref-name>mail/Session</res-ref-name>
  <res-type>javax.mail.Session</res-type>
  <res-auth>Container</res-auth>
</resource-ref>

<security-constraint>
  <display-name>Example Security Constraint</display-name>
  <web-resource-collection>
     <web-resource-name>Protected Area</web-resource-name>
 <!-- Define the context-relative URL(s) to be protected -->
     <url-pattern>/jsp/security/protected/*</url-pattern>
 <!-- If you list http methods, only those methods are protected -->
 <http-method>DELETE</http-method>
     <http-method>GET</http-method>
     <http-method>POST</http-method>
 <http-method>PUT</http-method>
  </web-resource-collection>
  <auth-constraint>
     <!-- Anyone with one of the listed roles may access this area -->
     <role-name>tomcat</role-name>
 <role-name>role1</role-name>
  </auth-constraint>
</security-constraint>

<!-- Default login configuration uses form-based authentication -->
<login-config>
  <auth-method>FORM</auth-method>
  <realm-name>Example Form-Based Authentication Area</realm-name>
  <form-login-config>
    <form-login-page>/jsp/security/protected/login.jsp</form-login-page>
    <form-error-page>/jsp/security/protected/error.jsp</form-error-page>
  </form-login-config>
</login-config>

<!-- Environment entry examples -->
<!--env-entry>
  <env-entry-description>
     The maximum number of tax exemptions allowed to be set.
  </env-entry-description>
  <env-entry-name>maxExemptions</env-entry-name>
  <env-entry-value>15</env-entry-value>
  <env-entry-type>java.lang.Integer</env-entry-type>
</env-entry-->
<env-entry>
  <env-entry-name>minExemptions</env-entry-name>
  <env-entry-value>1</env-entry-value>
  <env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>
<env-entry>
  <env-entry-name>foo/name1</env-entry-name>
  <env-entry-value>value1</env-entry-value>
  <env-entry-type>java.lang.String</env-entry-type>
</env-entry>
<env-entry>
  <env-entry-name>foo/bar/name2</env-entry-name>
  <env-entry-value>true</env-entry-value>
  <env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
  <env-entry-name>name3</env-entry-name>
  <env-entry-value>1</env-entry-value>
  <env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>
<env-entry>
  <env-entry-name>foo/name4</env-entry-name>
  <env-entry-value>10</env-entry-value>
  <env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>

<!-- EJB Reference -->
<ejb-ref>
  <description>Example EJB Reference</description>
  <ejb-ref-name>ejb/Account</ejb-ref-name>
  <ejb-ref-type>Entity</ejb-ref-type>
  <home>com.mycompany.mypackage.AccountHome</home>
  <remote>com.mycompany.mypackage.Account</remote>
</ejb-ref>

<!-- Local EJB Reference -->
<ejb-local-ref>
  <description>Example Local EJB Reference</description>
  <ejb-ref-name>ejb/ProcessOrder</ejb-ref-name>
  <ejb-ref-type>Session</ejb-ref-type>
  <local-home>com.mycompany.mypackage.ProcessOrderHome</local-home>
  <local>com.mycompany.mypackage.ProcessOrder</local>
</ejb-local-ref>

找不到的java文件位于netbeans源文件夹的Package.Servlets包中。

我是 Tomcat 环境的新手,想知道需要做些什么。我试图检查该类的用法,但找不到。因此我假设这与 web.xml 设置有关。

编辑:我还检查了日志,似乎没有引发任何异常。

【问题讨论】:

  • 你想做什么并得到那个错误?另请注意,Java 区分大小写,按照惯例,包名应小写
  • @mavroprovato - 这是一个非常大的系统,我被指派通过反编译现有的类文件从源代码控制中恢复一些丢失的源代码。我这样做了,现在我只是在发生这种情况时访问应用程序,我认为 servlet 会检查用户是否具有访问权限。
  • 你有原始的 web.xml 文件吗?
  • @mavroprovato - 这是原始 XML 文件。我可能所做的唯一更改是将一些 servlet 从默认包移动到 Servlets 包。话虽如此,我尝试将 Servlet 移至根目录,但这也不起作用。我应该做一些映射吗?

标签: java tomcat web.xml tomcat5


【解决方案1】:

您提供的 web.xml 文件的问题是没有定义 &lt;servlet&gt;s 和 &lt;servlet-mapping&gt;s。 Tomcat 需要在 web.xml 文件中定义的应用程序中的所有 servlet 以及映射,以便知道在打开 URL 时要调用哪个 servlet。

你可以在你的tomcat安装的webapps/examples/WEB-INF/web.xml文件中看到一个例子

【讨论】:

    猜你喜欢
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多