rest - 无法在 Netbeans 上使用 Maven、Tomcat 7 创建 REST Web 服务

标签 rest maven tomcat netbeans http-status-code-404

我已经尝试解决上面提到的问题,但似乎找不到我遇到的问题。我正在尝试创建一个 RESTful Web 服务来获得一个简单的文本作为结果。我使用了一些来自互联网的代码并试图适应以获得最简单的 Web 服务,但我失败了 >_

我知道我一定是忘记了一些重要的东西,但我找不到了。因此,非常感谢您对这个问题的建议。

我的代码如下所示: pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com</groupId>
    <artifactId>rest-xml</artifactId>
    <packaging>war</packaging>
    <version>1.0</version>

    <name>rest-xml-example</name>

    <dependencies>

        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>2.22.1</version>
        </dependency>


        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-client</artifactId>
            <version>2.22.2</version>
        </dependency>


        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-server</artifactId>
            <version>2.22.2</version>
        </dependency>


        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-common</artifactId>
            <version>2.22.2</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.4.3</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
        </plugins>
        <sourceDirectory>src/main/java</sourceDirectory>
        <finalName>${project.artifactId}</finalName>
    </build>
</project>

web.xml

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

    <servlet>
        <servlet-name>REST XML Example</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>test</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>REST XML Example</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping> 
</web-app>

Java 类RESTfulHelloWorld.java

package ub;

import java.util.Date;

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

@Path("/hello")
public class RESTfulHelloWorld {

    @GET
    @Produces("text/html")
    public Response getStartingPage() {
        String output = "<h1>Hello World!<h1>"
            + "<p>RESTful Service is running ... <br>Ping @ " + new Date().toString() + "</p<br>";
        return Response.status(200).entity(output).build();
    }
}

我的项目结构是这样的: Project structure

我的结果(无论我使用哪个 URI)都是 HTTP 404 -/rest-xml。 webapps 的目录结构是这样的: webapps dir structure

有什么想法吗?非常感谢您的帮助。

最好的问候

最佳答案

com.sun.jersey.config.property.packages 应该是 jersey.config.server.provider.packages。前者适用于 Jersey 1.x。任何使用 com.sun.jersey 的东西,你都会知道是 1.x,它与 2.x 不兼容 – Paul Samsotha 2017 年 8 月 15 日 10:14

关于rest - 无法在 Netbeans 上使用 Maven、Tomcat 7 创建 REST Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45690719/

相关文章:

rest - 如何为 SOAP Web 服务提供 REST 接口(interface)?

maven - "Maven Install"和 "Maven Build"与 M2Eclipse 有什么区别?

java - 此环境中不提供编译器。也许您在 JRE 而不是 JDK 上运行?

java - 将属性 'source' 设置为“org.eclipse.jst.jee.server”(404 错误)

java - 为什么 java.util.Currency.getDisplayName() 返回 null

所有用户帐户未经授权的 tomcat 管理器身份验证

java - 在 REST Web 服务器中导入 mongo-2.10.1 jar 的位置

java - Jersey ......如何记录所有异常,但仍然调用 ExceptionMappers

java - spring 4.1 在创建新项目时出错

rest - Grails Spring Security REST被禁止使用403