使用 IntelliJ 的 RESTEasy 服务示例

RESTEasy Service example with IntelliJ

我无法让我的 REST 服务工作。谁能帮我找出错误? 我认为我定义的神器有问题,但我不确定。

服务class:

package services;

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

@Path("/message")
public class MessageRestService {
    @GET
    @Path("/{param}")
    public Response printMessage(@PathParam("param") String msg) {

        String result = "Restful example : " + msg;

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

    }
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <display-name>LES.Core.WebServices</display-name>
    <servlet-mapping>
        <servlet-name>resteasy-servlet</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
    <listener>
        <listener-class>
            org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
        </listener-class>
    </listener>
    <!-- Auto scan REST service -->
    <context-param>
        <param-name>resteasy.scan</param-name>
        <param-value>true</param-value>
    </context-param>
    <!-- this should be the same URL pattern as the servlet-mapping property -->
    <context-param>
        <param-name>resteasy.servlet.mapping.prefix</param-name>
        <param-value>/rest</param-value>
    </context-param>
    <servlet>
        <servlet-name>resteasy-servlet</servlet-name>
        <servlet-class>
            org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
        </servlet-class>
    </servlet>
</web-app>

Maven 依赖项:

<?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>groupId</groupId>
    <artifactId>LES.Core.WebServices</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
            <version>3.0.9.Final</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jackson-provider</artifactId>
            <version>3.0.4.Final</version>
        </dependency>
    </dependencies>
</project>

文物

模块

项目结构

Tomcat 运行 定义:

当我导航到 http://localhost:6655/LES.Core.WebServices/rest/message/name 时出现 404 错误。

编辑:对于那些想尝试的人,这里是我的项目,只需解压缩即可。 http://www.filedropper.com/lescorewebservices

您的项目设置似乎有很多问题,下面列出了要点列表,显示了为成功部署您的应用程序至少应该做些什么:

  • $PROJECT/src/main/ 下创建一个名为 webapp 的新文件夹文件夹并将 $PROJECT/web/WEB-INF 文件夹移动到其中(这是 Maven 识别的默认 webapp 项目结构)。
  • 将新的 javax.ws.rs.core.Application 子类添加到 bootstrap 您的服务配置。应用程序路径应与您想要的路径相匹配:
@ApplicationPath( "/rest" )
public class SampleApplication extends Application
{

    private static final Set< Object > singletons = new HashSet< Object >();

    public SampleApplication()
    {
        singletons.add( new MessageRestService() );
    }

    @Override
    public Set< Class< ? > > getClasses()
    {
        HashSet< Class< ? > > set = new HashSet< Class< ? > >();
        return set;
    }

    @Override
    public Set< Object > getSingletons()
    {
        return singletons;
    }

}
  • 在 webapp 部署描述符 web.xml 下为 HttpDispatcherServlet 添加 SampleApplication 作为 javax.ws.rs.Application 初始化参数:
<servlet>
    <servlet-name>resteasy-servlet</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
    <init-param>
      <param-name>javax.ws.rs.Application</param-name>
      <param-value>app.SampleApplication</param-value>
    </init-param>
  </servlet>
  • <packaging>war</packaging> 元素添加到项目 pom.xml 文件中,以便将项目识别为 web 应用程序 并且可以在 Tomcat AS 下部署。
  • Tomcat应用程序运行配置中,转到部署选项卡,单击+ 按钮并选择 Artifact 作为类型,然后将您的模块添加为 webapp。
  • 运行 tomcat 配置,您应该会看到如下内容,突出显示您的 REST 应用程序已成功发现:

    XXX INFO [RMI TCP Connection(2)-127.0.0.1] org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher. Deploying javax.ws.rs.core.Application: class SampleApplication