Есть ли способ создать несколько реализаций JAX-RS-аннотированного интерфейса? - PullRequest
0 голосов
/ 04 октября 2018

Я объявил следующий интерфейс:

public interface IArea {

@GET
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
@Path("/")
Response get(
        @QueryParam("param1") String param1,
        @QueryParam("param2") String param2
);

}

Я реализую два bean-компонента без сохранения состояния, используя этот интерфейс:

@Stateless
@Path("/first")
public class FirstController implements IArea {

    public Response get(String param1, String param2) {
        return Response.status(200).build();
    }

}


@Stateless
@Path("/second")
public class SecondController implements IArea {

    public Response get(String param1, String param2) {
        return Response.status(200).build();
    }

}

В результате мы имеем неизвестную ошибку при вызове обеих конечных точек:

org.jboss.weld.exceptions.IllegalArgumentException: WELD-001456: Бин аргумента не должен быть нулевым
в org.jboss.weld.util.Preconditions.checkArgumentNotNull (Preconditions.java:40) в org.jboss.weld.manager.BeanManagerImpl.getReference (BeanManagerImpl.java:703) в org.jboss.weld.util.ForwardingBeanManager.) в org.jboss.weld.bean.builtin.BeanManagerProxy.getReference (BeanManagerProxy.java:86) в org.jboss.resteasy.cdi.CdiConstructorInjector.construct (CdiConstructorInjector.java:68) в org.jboss.resteasy.diCdiConstructorInjector.construct (CdiConstructorInjector.java:73) в org.jboss.resteasy.plugins.server.resourcefactory.POJOResourceFactory.createResource (POJOResourceFactory.java:53) в org.jboss.resteasy.core.ResourceMethodInvoker.invoke (ResourceMethodInvoker.java:312) в org.jboss.resteasy.core.SynchronousDispatcher.invoke (SynchronousDispatcher.java:441) ... еще 51

Если я реализую одиночный beanНапример, FirstController, сервер работает нормально.

В обоих случаях «методы-ресурса» на вкладке «Развертывание» верны.

Наша платформа - Wildfly 12.0.0.Final.Java EE 8.

1 Ответ

0 голосов
/ 04 октября 2018

Попробуйте исправить конечную точку, у вас есть следующее:

  • localhost: 8080 // первый
  • localhost: 8080 // второй

У вас есть один "/" из интерфейса и один "/" из реализации ...


И у вас нет конечной точки: localhost: 8080 / Поэтому он хочет 2 параметра (всегда).

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...