2015-08-28 6 views
2

Я попытался написать простой пример RESTEasy, чтобы увидеть, как он работает. Я нашел информацию здесь: http://www.mkyong.com/webservices/jax-rs/integrate-jackson-with-resteasy/ http://www.mkyong.com/webservices/jax-rs/resteasy-hello-world-example/Простой пример RESTtEasy не работает

Это действительно просто, и я понял, как это работает из другого успокоительных примера, который похож и работает просто отлично.

@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", "[email protected]"); 

    @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 или любой другой путь к Acces методы есть пустой экран. У меня нет 404 НЕ НАЙДЕНО! Просто пустой экран. (Я использую TomCat). Может кто-нибудь мне помочь?

+0

ну, как в этих примерах, я хочу, чтобы информация была напечатана в браузере. Если я попробую [http: // localhost: 8080/rest/person], я ожидаю, что будет напечатан «Введенный PersonResource». У меня нет никаких исключений в журналах сервера. – green

+0

Появляются ли сообщения журнала отладки? Вы перешли через вашу программу с помощью отладчика? –

+0

Мои сообщения отладки не отображаются в файле журнала – green

ответ

1

Я узнал, что была проблема. В моем pom.xml у меня было это:

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

Этот слушатель создает контекст приложения. Ничего плохого до сих пор. ResteasyBootstrap, который определен в web.xml предоставляет, а также контекст:

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

Поскольку оба слушатели предоставляют различный контекст, то URL не возвращает 404 не нашли, ни хороший результат.

Решение:

Удалить слушателя ContextLoaderListener в XML и все будет работать.

0

Попробуйте это:

@GET 
@Path("sample") 
@Produces(MediaType.APPLICATION_JSON) 
public Response getSamplePerson() { 
    LOG.debug("getSamplePerson()"); 
    return Response.status(Status.OK).entity(person).build(); 
} 
+0

Это не работает :(И еще одна странность в том, что мой файл журнала пуст. Даже если я использую регистратор LOG. debug не производит никакого вывода в файле журнала. – green

+0

Попробуйте и отлаживайте Tomcat и установите точку останова в 'getSamplePerson()', чтобы увидеть, если он даже вызывается при открытии URL-адреса. –

Смежные вопросы