JAX-RS и Джерси - только один ресурс из нескольких открытых - PullRequest
0 голосов
/ 21 июня 2011

У меня есть начало веб-службы RESTful с использованием JAX-RS и Jersey, которая предоставляет два ресурса: SessionResource и ItemResource. К сожалению, только один из них предоставляется веб-службой.

подробности:

  • Конфигурация выполняется с помощью класса, который расширяет javax.ws.rs.core.Application (создается автоматически Netbeans 7). класс не содержит никакой информации о конфигурации, кроме аннотации @ApplicationPath ().
  • нет файла web.xml

Вопросы:

  • Чего мне не хватает?
  • имеет ли значение наличие класса приложения? Могу ли я уйти только с файлом web.xml для конфигурации?
  • иногда я замечал, что изменения, сделанные в IDE, не публикуются в Apache. Какой самый надежный способ сделать это?

Ответы [ 2 ]

1 голос
/ 03 октября 2013

Одним из нескольких решений является переопределение getClasses() вашего приложения JAX-RS.

@ApplicationPath("/")
public class MyApplication extends Application
{
    @Override
    public Set<Class<?>> getClasses()
    {
        return new HashSet<Class<?>>()
        {
            {
                add(ResourceA.class);
                add(ResourceB.class);
            }
        };
    }
}

Как я понял, лучше не полагаться на автоматическое обнаружение ресурсов и поставщиков.Иногда это может иметь побочные эффекты, если у вас более одного приложения JAX-RS.

0 голосов
/ 21 июня 2011

Вы можете сделать это в своем файле web.xml, и тогда вам не понадобится класс Application.

<servlet>
  <servlet-name>JerseyStartup</servlet-name>
  <servlet-class>[fully qualified name of a class that extends ServletContainer]</servlet-class>
  <init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>com.yourCompany</param-value>
  </init-param>
</servlet>

Затем он автоматически обнаружит все классы в com.yourCompany и его подпакетах, помеченные @Path, и обработает их как ресурсы.

...