无法使用 Maven 创建 REST Web 服务,Tomcat 7 on Netbeans

Failing to create REST Web Service with Maven, Tomcat 7 on Netbeans

我已经尝试解决我上面提到的问题,但似乎找不到我遇到的问题。我正在尝试创建一个 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>

A Java Class 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。前者适用于泽西 1.x。任何使用 com.sun.jersey 的东西,你都会知道是 1.x,它与 2.x 不兼容 – Paul Samsotha 2017 年 8 月 15 日在 10:14