gpt4 book ai didi

java - 使用 IntelliJ 的 RESTEasy 服务示例

转载 作者:行者123 更新时间:2023-11-30 06:54:51 29 4
gpt4 key购买 nike

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

服务类:

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();

}
}

网络.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>

人工制品 Artifacts

模块 Modules

项目结构 Project structure

Tomcat运行定义: Tomcat run definition

当我导航到 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子类来引导您的服务配置。应用程序路径应与您所需的路径相匹配:
@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;
}

}
  • 添加 SampleApplication作为 webapp 部署描述符 web.xml 下的 HttpDispatcherServlet 的 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

关于java - 使用 IntelliJ 的 RESTEasy 服务示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35963837/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com