【发布时间】:2015-11-23 00:36:00
【问题描述】:
我尝试编写一个简单的 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!只是黑屏。 (我正在使用汤姆猫)。谁能帮帮我?
【问题讨论】:
-
好吧,就像在那些示例中,我希望在浏览器中打印信息。如果我尝试 [localhost:8080/rest/person] 我希望打印“输入的 PersonResource”,我在服务器日志中没有任何异常。
-
您的调试日志消息是否出现?您是否使用调试器单步执行您的程序?
-
我的调试信息没有出现在日志文件中
-
您的应用程序是否设置为 Tomcat 的根上下文?看起来您正在跳过应用程序上下文并直接进入 /rest。
-
默认链接是 [localhost:8080/] 所以我猜 url 没问题。当我访问 url(调试器)时,永远不会调用该方法。这个带有球衣的例子工作得很好 [avilyne.com/?p=105]