1

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

我收到此错误消息:“请求的资源 (/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 设置有关。

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

4

1 回答 1

1

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

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

于 2013-02-08T15:07:21.660 回答