gpt4 book ai didi

java - 简单的 RESTtEasy 示例不起作用

转载 作者:行者123 更新时间:2023-11-30 10:58:25 25 4
gpt4 key购买 nike

我尝试编写一个简单的 RESTEasy 示例以查看其工作原理。我在这里找到了信息: http://www.mkyong.com/webservices/jax-rs/integrate-jackson-with-resteasy/ http://www.mkyong.com/webservices/jax-rs/resteasy-hello-world-example/

它真的很简单,我从另一个类似且工作正常的 Restful 示例中了解了它是如何工作的。

@Path("/person")
public class PersonResource {
private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(PersonResource.class);

private final static String FIRST_NAME = "firstName";
private final static String LAST_NAME = "lastName";
private final static String EMAIL = "email";

private Person person = new Person(1, "Sample", "Person", "sample_person@jerseyrest.com");

@GET
@Produces(MediaType.TEXT_PLAIN)
public String respondAsReady() {
return "Entered PersonResource";
}

@GET
@Path("/get")
@Produces("application/json")
public Person getProductInJSON() {
return person;
}

@GET
@Path("sample")
@Produces(MediaType.APPLICATION_JSON)
public Response getSamplePerson() {
LOG.debug("getSamplePerson()");
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("Person First Name:", person.getFirstName());
jsonObject.put("Person Last Name:", person.getLastName());
} catch (JSONException e) {
LOG.debug("jsonObect.put failed");
}

String result = "jsonObject:" + jsonObject;
return Response.status(200).entity(result).build();
}
}

我的 web.xml :

<context-param>
<param-name>resteasy.resources</param-name>
<param-value>com.restexample.PersonResource</param-value>
</context-param>

<listener>
<listener-class>
org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
</listener-class>
</listener>

<servlet>
<servlet-name>resteasy-servlet</servlet-name>
<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
</servlet-class>
</servlet>

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

我的 pom.xml:

<!-- RESTEasy-->
<repositories>
<repository>
<id>JBoss repository</id>
<url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
</repository>
</repositories>


<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.0.11.Final</version>
</dependency>

<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
<version>3.0.11.Final</version>
</dependency>
</dependencies>

当我尝试 http://localhost:8080/rest/person/sample或任何其他访问方法的路径都会出现空白屏幕。我没有 404 NOT FOUND!只是空白屏幕。 (我正在使用 TomCat)。谁能帮帮我?

最佳答案

我发现了问题所在。在我的 pom.xml 中我有这个:

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

此监听器正在创建应用程序上下文。直到现在都没有错。在 web.xml 中定义的 ResteasyBootstrap 也提供了一个上下文:

<listener>
<listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>

因为两个监听器都提供了不同的上下文,所以 URL 不会返回 404 NOT FOUND,这也不是好的结果。

解决方案:

去掉xml中的监听器ContextLoaderListener,一切正常。

关于java - 简单的 RESTtEasy 示例不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32269520/

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