【问题标题】:Java Jersey cannot find resoruceJava Jersey 找不到资源
【发布时间】:2016-06-27 10:50:07
【问题描述】:

我已经创建了一个 jersey web 服务并将它部署在一个 tomcat 应用服务器上。我在 tomcat 中部署了 war 文件,但是当我尝试访问应用程序时仍然出现错误,即找不到请求的数据(标准 tomcat 404 错误)。这是我的 web.xml 文件。

<?xml version="1.0" encoding="UTF-8"?>

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" 版本="2.5"> 球衣 索引.html

<servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>sample.jsonStrip.resources</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>RestServlet</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

这是我的 pom.xml

http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 org.rares.urs 球衣 0.0.1-快照 成分

<repositories>
    <repository>
        <id>maven2-repository.java.net</id>
        <name>Java.net Repository for Maven</name>
        <url>http://download.java.net/maven/2/</url>
        <layout>default</layout>
    </repository>
</repositories>
<packaging>war</packaging>

<build>
    <finalName>JsonStrip</finalName>

    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>

        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <warSourceDirectory>WebContent</warSourceDirectory>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>tomcat-maven-plugin</artifactId>
            <configuration>
                <url>http://127.0.0.1:8888/manager</url>
                <server>mytomcat</server>
                <path>/Jersey</path>
            </configuration>
        </plugin>


        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat8-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <url>http://127.0.0.1:8888/manager</url>
                <server>TomcatServer</server>
                <path>/Switch</path>
            </configuration>
        </plugin>

    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.9</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>2.7.0</version>
    </dependency>
    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.0.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.6</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.2</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>1.9.2</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-client</artifactId>
        <version>1.8</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-common</artifactId>
        <version>2.22.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>asm</groupId>
        <artifactId>asm</artifactId>
        <version>3.3.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-bundle</artifactId>
        <version>1.19</version>
    </dependency>
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20140107</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.19</version>
    </dependency>
</dependencies>

这两个 xml 文件都位于 Jersey 根文件夹中。我见过 wab.xml 位于 WebContent/WEB-INF/web.xml 中的一些情况?我应该把它放在哪里?

谢谢!

【问题讨论】:

  • 这可能有很多原因。启动时日志说什么?你打的是哪个网址? pom.xml 中的几个问题。 Web.xml 必须放在 WEB-INF/web.xml 中。
  • 我有一个 web.xml 但它是自动生成的,我应该用我创建的内容替换内容吗?我去127.0.0.1:8889/JsonStrip/rest/jersey,但我已经尝试了所有可能的组合。我在 pom 中有什么错误?
  • web.xml 中的&lt;servlet-name&gt; 需要在两个位置匹配。

标签: java maven tomcat jersey


【解决方案1】:

web.xml 中的&lt;servlet-name&gt; 需要在两个位置匹配

&lt;servlet-mapping&gt; 中,&lt;servlet-name&gt; 通过查找具有相同&lt;servlet-name&gt;&lt;servlet&gt; 来告诉容器此映射应应用于哪个servlet。现在你的 Jersey servlet 没有 URL 映射,所以它不会处理任何请求。

我见过 wab.xml 位于 WebContent/WEB-INF/web.xml 中的一些情况?我应该把它放在哪里?

那里。我有一段时间没有使用 eclipse,但我很确定 WebContent 文件夹不是“真正的”文件夹。它只是一个 IDE 显示文件夹。它应该在真正的目录结构中映射到 Maven 应用程序中的src/main/webapp。那就是 web.xml 应该是src/main/webapp/WEB-INF

【讨论】:

  • 我已将两个标签中的名称替换为 RestServlet,现在应用程序应该以 127.0.0.1:8889/Jersey/RestServlet/(and_the_path_to_a_class) 启动?
  • 要么用 JsonStrip 替换 Jersey。取决于您的 Eclipse 上下文配置
  • 非常感谢!可能是我的文件夹结构有误,一直报同样的错误
  • 尝试删除&lt;warSourceDirectory&gt;WebContent&lt;/warSourceDirectory&gt;。就像我说的,我什至不认为这是一个真正的文件夹。查看您的 real 目录。应该是src/main/webapp。应该没有WebContent。就像我说的,那只是一个IDE显示目录
  • 您可能只想检查this out
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-13
  • 1970-01-01
  • 2016-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多