【问题标题】:tomcat returns 404 for my webapp [duplicate]tomcat为我的webapp返回404 [重复]
【发布时间】:2016-09-05 17:45:12
【问题描述】:

我有一个部署到 Tomcat 8.5 的 Jersey 2 应用程序。当我导航到应用程序 URL 时,我得到 HTTP 404。请帮助。我已经看到了多个相同的问题,但我无法弄清楚我的设置有什么问题。日志中也没有错误。

我的应用:


package com.mydomain;

import javax.json.Json;
import javax.json.JsonObject;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

@Path("/")
public class MyClass {
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response defaultEntry() {
        JsonObject result = (Json.createObjectBuilder()
                             .add("test", "OK")
                             .build());

        return Response.status(200).entity(result).build();
    }
}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <servlet>
    <servlet-name>myapp</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>jersey.config.server.provider.packages</param-name>
      <param-value>com.mydomain.MyClass</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>myapp</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>

</web-app>

应用部署到${CATALINA_HOME}/webapps。该应用程序有一个名为myapp 的目录。我使用的网址是localhost:8080/myapp

请帮忙。

编辑:

我附上日志的内容:

catalina.out:


05-Sep-2016 14:09:44.698 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.5.4
05-Sep-2016 14:09:44.699 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Jul 6 2016 08:43:30 UTC
05-Sep-2016 14:09:44.699 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.5.4.0
05-Sep-2016 14:09:44.699 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Mac OS X
05-Sep-2016 14:09:44.699 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            10.10.5
05-Sep-2016 14:09:44.699 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          x86_64
05-Sep-2016 14:09:44.699 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /Library/Java/JavaVirtualMachines/jdk1.8.0_71.jdk/Contents/Home/jre
05-Sep-2016 14:09:44.700 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_71-b15
05-Sep-2016 14:09:44.700 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
05-Sep-2016 14:09:44.700 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /Users/ksushenko/projects/apache-tomcat-8.5.4
05-Sep-2016 14:09:44.700 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /Users/ksushenko/projects/apache-tomcat-8.5.4
05-Sep-2016 14:09:44.700 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/Users/ksushenko/projects/apache-tomcat-8.5.4/conf/logging.properties
05-Sep-2016 14:09:44.700 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
05-Sep-2016 14:09:44.700 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
05-Sep-2016 14:09:44.700 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/Users/ksushenko/projects/apache-tomcat-8.5.4
05-Sep-2016 14:09:44.701 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/Users/ksushenko/projects/apache-tomcat-8.5.4
05-Sep-2016 14:09:44.701 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/Users/ksushenko/projects/apache-tomcat-8.5.4/temp
05-Sep-2016 14:09:44.701 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /Users/ksushenko/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
05-Sep-2016 14:09:44.784 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
05-Sep-2016 14:09:44.803 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
05-Sep-2016 14:09:44.805 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
05-Sep-2016 14:09:44.806 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
05-Sep-2016 14:09:44.806 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 346 ms
05-Sep-2016 14:09:44.822 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service Catalina
05-Sep-2016 14:09:44.822 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.4
05-Sep-2016 14:09:44.837 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive /Users/ksushenko/projects/apache-tomcat-8.5.4/webapps/myapp.war
05-Sep-2016 14:09:45.310 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
05-Sep-2016 14:09:45.790 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive /Users/ksushenko/projects/apache-tomcat-8.5.4/webapps/myapp.war has finished in 952 ms
05-Sep-2016 14:09:45.790 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /Users/ksushenko/projects/apache-tomcat-8.5.4/webapps/docs
05-Sep-2016 14:09:45.799 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /Users/ksushenko/projects/apache-tomcat-8.5.4/webapps/docs has finished in 9 ms
05-Sep-2016 14:09:45.799 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /Users/ksushenko/projects/apache-tomcat-8.5.4/webapps/examples
05-Sep-2016 14:09:45.924 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /Users/ksushenko/projects/apache-tomcat-8.5.4/webapps/examples has finished in 125 ms
05-Sep-2016 14:09:45.924 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /Users/ksushenko/projects/apache-tomcat-8.5.4/webapps/host-manager
05-Sep-2016 14:09:45.937 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /Users/ksushenko/projects/apache-tomcat-8.5.4/webapps/host-manager has finished in 13 ms
05-Sep-2016 14:09:45.937 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /Users/ksushenko/projects/apache-tomcat-8.5.4/webapps/manager
05-Sep-2016 14:09:45.996 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /Users/ksushenko/projects/apache-tomcat-8.5.4/webapps/manager has finished in 59 ms
05-Sep-2016 14:09:45.996 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /Users/ksushenko/projects/apache-tomcat-8.5.4/webapps/ROOT
05-Sep-2016 14:09:46.004 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /Users/ksushenko/projects/apache-tomcat-8.5.4/webapps/ROOT has finished in 8 ms
05-Sep-2016 14:09:46.005 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-nio-8080]
05-Sep-2016 14:09:46.009 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-8009]
05-Sep-2016 14:09:46.009 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 1203 ms

【问题讨论】:

  • 你的 webapp 启动没有错误?查看 Tomcat 日志文件,查看 webapp 是否正在启动。
  • 日志没有错误。有关于成功部署应用的消息。
  • 向我们展示日志文件。
  • &lt;init-param&gt; 名为 jersey.config.server.provider.packages。你认为 packages 这个名字有什么意义吗?例如。该值应该是 package,而不是 class 的名称?
  • @JarrodRoberson,这不是您链接到的问题的欺骗。

标签: java tomcat jersey-2.0


【解决方案1】:

使用 Jersey 2 和 Servlet 3,您实际上并不需要 web.xml,注释就足够了。尝试从您的项目中删除 web.xml。

【讨论】:

    【解决方案2】:

    看例子Jax-RS Servlet 3.0 maven Tomcat 一般来说,对于新的 Servlet 3.0,您不需要 web.xml 来加载应用程序。但是,您需要一个扩展应用程序的类:

    package com.vvirlan.java.ws;
    
    import java.util.HashSet;
    import java.util.Set;
    import javax.ws.rs.ApplicationPath;
    import javax.ws.rs.core.Application;
    
    import com.vvirlan.java.ws.resources.Hello;
    
    @ApplicationPath("/rest")
    public class MyApplication extends Application {
    
    @Override
    public Set<Class<?>> getClasses() {
    final Set<Class<?>> returnValue = new HashSet<Class<?>>();
    returnValue.add(Hello.class);
    return returnValue;
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-10-18
      • 2021-09-05
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-25
      • 2013-06-22
      相关资源
      最近更新 更多